반응형
개념정리
JPA(Java Persistence API)
JPA 기본개념
JPA(Java Persistence API)
JPA는 자바 진영의 ORM 기술 표준으로 사용하는 인터페이스 모음
- JPA를 사용하면 객체를 DB에 저장하고 관리할 때, 개발자가 직접 SQL을 작성하지 않아도 됨
- 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스
- 인터페이스 이기 때문에 Hibernate, OpenJPA 등이 JPA를 구현함
- JPA가 개발자 대신 적절한 SQL을 생성해서 DB에 전달하고, 객체를 자동으로 Mapping 해줌
- 개발자가 직접 JDBC API를 활용하면 패러다임 불일치, SQL 의존성 등으로 인해 효율성이 떨어지는데 JPA를 이용하면 모든 SQL에 대해 개발자 대신 JPA가 자동으로 해결해 주기 때문에 생산성을 크게 높임
ORM(Object-Relational Mapping)
ORM은 객체와 관계형 DB를 mapping
- ORM 프레임워크를 사용하면 객체를 마치 자바 컬렉션에 저장하듯 저장할 수 있고, 이에 대해 ORM 프레임워크가 적절한 SQL을 생성해서 DB에 객체를 저장해줌
Hibernate
자바 진영의 다양한 ORM 프레임워크 중 가장 많이 사용되는 성숙한 프레임워크로
- Hibernate 기반으로 만들어진 ORM 기술 표준이 바로 JPA다.
- JPA라는 ORM 기술 표준을 구현한 것이 Hibernate이므로, JPA를 사용하려면 Hibernate를 사용하면 된다.
JPA의 동작 과정
- JPA는 애플리케이션과 JDBC 사이에서 동작
- 개발자가 JPA를 사용하면, JPA 내부에서 JDBC API를 사용하여 SQL을 호출하여 DB와 통신
JPA의 특징
생산성
- 개발자가 일일히 CRUD용 쿼리를 작성해줘야하던 Mybatis와 같은 Mapper방식은 컬럼이 추가되거나하면 수정해주어야하는 부분이 상당히 많아서 객체중심 개발이 아니라 데이터베이스 흐름으로 개발을 하게되는 문제가 있었음
- JPA를 사용하게 되면 쿼리를 직접 생성하는 것이 아니고 만들어진 객체로 데이터베이스를 다루기 때문에 객체 중심으로 개발을 진행해 생산성 향상
유지보수
- SQL을 직접적으로 작성하지 않고 엔티티 필드가 되는 객체를 다뤄서 데이터베이스를 동작시키기 때문에 유지보수가 간결
- 쿼리가 수정되면 그에 따라서 그를 담을 DTO 필드도 모두 변경이 되야 하지만 JPA를 사용하게 되면 단순히 엔티티 클래스 정보만 변경하면 쉽게 관리가 가능하기 때문
성능
- 일반적인 Spring의 encache 기능처럼 동일한 쿼리에 대한 캐시 기능을 사용하기 때문에 더욱 높은 성능적 효율성을 경험
RDBMS 종류와 무관한 코딩
- 객체 중심으로 동작하기 때문에 Oracle, Mysql, Mssql과 같이 서로 다른 벤더사 데이터베이스를 사용하려고 할 때 문법을 바꿔줘야하는 수고를 줄일 수 있음
JPA 한계
- JPA는 통계처리와 같이 복잡한 쿼리보다는 실시간 처리용 쿼리에 더 최적화되어 있어 통계처럼 복잡하고 미세하게 쿼리 작업이 필요하다면 Mybatis와 같은 Mapper 방식을 사용하는 것이 더 효율적
반응형
'개발 하나둘셋 > Java & Spring' 카테고리의 다른 글
DI, IoC, Bean (0) | 2021.11.21 |
---|---|
Spring Boot의 Model, Controller, Service, Repository (0) | 2021.11.16 |
자바(Java) 이해하기 (자바의 특징, JAM) (0) | 2021.11.14 |
Java 컬렉션 - list, set, map, stack, queue (0) | 2021.11.11 |
[JAVA] 날짜 표시하기 (0) | 2021.11.09 |