JPA
JPA는 Java Persistence API의 약자로 자바 영속성 API라는 의미를 가지고 있다.
JPA 특징
1) 데이터를 객체 지향적으로 관리할 수 있어 개발자가 비즈니스 로직에 집중할 수 있다.
2) 자바 객체와 DB 테이블 사이의 매핑 설정을 통해 SQL을 생성한다.
3) 객체를 통해 쿼리를 작성할 수 있는 JPQL(Java Persistence Query Language)를 지원한다.
4) JPA는 성능 향상을 위해 지연 로딩이나 즉시 로딩과 같은 몇 가지 기법을 제공하는데 이것을 잘 활용할 경우 SQL을 직접 사용하는 것과 유사한 성능을 얻을 수 있다.
엔티티(Entity)
JPA에서 Entity는 데이터베이스와 통신하기 위한 객체로 필요에 따라서는 JPA 스스로 Entity에 맞는 테이블을 생성할 수도 있다.
레포지토리(Repository)
JPA의 강점은 myBatis처럼 일일이 Mapper와 Mapper 내의 SQL문을 정의하지 않고도 데이터베이스에 접근 가능하도록 메소드를 제공한다는 것이다. JpaRepository를 상속받은 인터페이스는 데이터베이스에 접근하여 기본적이 CRUD 기능을 수행할 수 있다. 다음은 JpaRepository에서 제공하는 몇 가지 메소드와 그에 따른 기능이다.
method | 기능 |
save() | 레코드 저장 (insert, update) |
findOne() | primary key로 레코드 한건 찾기 |
findAll() | 전체 레코드 불러오기. 정렬(sort), 페이징(pageable) 가능 |
count() | 레코드 갯수 |
delete() | 레코드 삭제 |
JPA에서 기본적으로 CRUD 기능을 제공하고 있지만 필요에 따라서 쿼리 메소드를 생성하여 필요에 맞게 데이터를 조회하거나 삭제, 수정을 할 수 있다는 강점이 있다. 물론 myBatis와 다르게 일일이 SQL을 정의하지 않아도 JPA 규칙에 따라 메소드 생성을 하면 메소드 이름에 맞게 쿼리문을 수행한다.
JPA VS myBatis
구글 트렌드에서 검색한 myBatis와 JPA의 조회량을 비교하면 국내에서는 지난 10년간 myBatis가 압도적이었으나 최근에는 비슷한 양상을 보이고 있다.
하지만 전세계적으로 봤을 때 myBatis가 JPA를 앞선 적은 한 번도 없다. 한국에서는 긴 시간 myBatis를 사용하였기 때문에 유지 보수를 위해서라도 myBatis에 대한 학습이 어느 정도 필요할 지도 모르지만 앞으로는 개발자가 SQL보다 비즈니스 로직에 더 집중할 수 있는 환경을 제공하는 JPA가 국내에서도 myBatis를 앞지를 것으로 예상된다.
'Java Web > JPA' 카테고리의 다른 글
[JPA] persistence.xml 작성 예시 (0) | 2022.03.02 |
---|---|
[JPA] 연관 관계 편의 메소드 (0) | 2022.02.28 |
[JPA] 양방향 관계 매핑 @OneToMany, @ManyToOne 그리고 mappedby (1) | 2022.02.16 |
[JPA] Auditing 정리 (0) | 2022.02.14 |
[JPA] findAll 정렬 (0) | 2021.07.23 |