본문 바로가기
정리 { Java 백엔드 }/(인강) JPA 프로그래밍 +스프링부트

JPA, ORM 간략 개념 _(SpringBoot+JPA)

by 해피퀄리아 2022. 12. 5.

< JPA, ORM >

JPA 개념 간략하게 먼저

JPA

대략적인 개념

  • 자바 퍼시스턴스 API (Java Persistence API)
  • 계층모델에서, 퍼시스턴스 부분
  • 데이터베이스 관리 기술
  • 데이터베이스 또는 데이터를 자바의 핵심인 객체지향적인 관점에서 바라보고 다룰 수 있게 해준다.
  • 즉 데이터베이스를 마치 객체 다루듯이 다르면서 사용하도록 하는 기술

 

조금더 자세하게

  • 자바에서, ORM기술 표준으로 사용하는 "인터페이스" 모음
  • RDB를 사용하는방식을 정의한 인터페이스
  • 실제적으로 구현된 것이라기보단, 구현된 내용을 사용하기 위한 일종의 프레임워크
  • JPA를 구현한 대표적인 오픈소스로 하이버네이트 Hibernate, OpenJPA

ORM

ORM 개념 간단히

Object-Relational Mapping

객체, 즉 클래스와 RDB의 테이블을 매핑시켜준다.

둘 간의 관계를 자동으로 영속화해준다.

-> 즉 객체를 건드리면, 테이블을 건드는 셈이 된다.

(용어) 영속성

  • 데이터를 생성한 프로그램이 종료하더라도, 사라지지 않는 데이터의 특성
  • 영속성을 갖지 않는다. -> 걍 죽는다. 메모리에서만 활동하고 사라진다.

그래서 Persistence 계층이 Persistence, 즉 영속 계층이라고 불리는 이유

 

ORM 장점

  • SQL과의 관계

  -- 객체지향적으로 다룬다는 것은, 클래스와 메서드로 다룬다는 뜻이다.

  -- 그래서 SQL대신 메서드를 통해서 DB를 다룰 수 있다.

  -- 물론 DB자체는 외부 언어를 이해할 수 없고, SQL문만을 이애할 수 있다. 그래서 JPA를 통해서 내부적으로 메서드를 통-한 명령이 SQL로 전환되어 작업된다.

  -> 특히나 반복적인 CRUD SQL문을 자동화하여 생산성이 높아짐.

 

  • 코드 효율

  -- SQL을 사용할 때 필요한 여러가지 부수적인 코드를 쓸 필요가 없다.

  -- 객체지향적으로 코드만 작성하면 되기에, 로직 자체에 집중하여 생산성이 증가한다.

 

  • 약간 DB와의 독립성
      -- ORM이 없는 일반적인 경우, DB를 다른 것으로 바꾸게 되면 DB에 맞는 쿼리를 다시 작성해야한다.
      -- ORM이면, DB에 맞는 연결만 해주면 되니까, 쿼리를 수정할 필요가 없다.

ORM 단점

  • 복잡하고 무거운 쿼리는, 속도를 위해 별도의 튜닝이 필요하다.

(로직이 복잡할 수록 자동적으로 생성되는 쿼리는 효율적으로 만들어지지 못한다. 결국 쿼리를 손대야한다.)

  • 설계가 잘못된 경우, 속도 저하 및 일관성이 떨어진다.
  • 배우기 어렵다.

 

댓글