JPA

2023. 1. 22. 22:41Java/일반

JPA의 개념

JPA는 자바에서 ORM 기술 표준으로 사용되는 인터페이스의 모음입니다. 즉, 실제적으로 구현된 것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크입니다.

ORM(Object Relational Mapping)

ORM이란 우리가 일반적으로 알고 있는 어플리케이션 Class와 RDB의 테이블을 매핑한단느 뜻이며 기술적으로는 어플리케이션의 객체를 RDB 테이블에 자동으로 영속화해주는 것입니다.

ORM의 장점

  • SQL 문이 아닌 Method를 통해 DB를 조작할 수 있어 개발자는 객체 모델을 이용하여 비즈니스 로직을 구성하는데만 집중
  • Query와 같이 필요한 선언문, 할당 등의 부수적인 코드가 줄어들어 각종 객체에 대한 코드를 별도로 작성하여 코드의 가독성을 높임
  • 객체지항적인 코드 작성이 가능
  • 기존 사용하던 DB의 종류가 바뀌더라도 새로 쿼리를 짜거나 수정할 필요가 없음

ORM의 단점

  • 프로젝트의 규모가 크고 복잡하여 설계가 잘못도니 경우, 속도 저하 및 일관성을 무너뜨리는 문제점이 발생
  • 복잡하고 무거운 Query는 별도의 튜닝이 필요하기 때문에 SQL 사용을 할 수도 있음

JPA의 동작 과정

JPA는 어플리케이션과 JDBC 사이에서 동작합니다. 개발자가 JPA를 사용하면 JPA 내부에서 JDBC API를 사용하여 SQL문을 호출하여 DB에서 실행합니다. 즉, 개발자가 직접 JDBC API를 사용하는 것이 아닙니다.

JPA의 성능 최적화 기능

  • 캐싱: 같은 트랜잭션 안에서는 동일한 데이터로 조회하면 같은 엔티티를 반환
  • 버퍼링: commit이 실행될 때까지 INSERT SQL을 메모리에 쌓아둠.
  • 지연 로딩: find로 객체를 가져올 때, 필드에 존재하는 참조 객체를 동시에 가져오는 것이 아니라 값이 실제로 필욯나 시점에 가져옴
728x90

'Java > 일반' 카테고리의 다른 글

Stream 사용시 주의사항  (0) 2023.07.05
Java Serialize  (0) 2022.11.27
String Pool  (0) 2022.07.22
Netty  (1) 2022.05.26
JIT Compiler  (0) 2021.10.08