반응형

JPA

JPA는 Java Persistence API의 약자로 자바 영속성 API라는 의미를 가지고 있다.

JPA 특징

1) 데이터를 객체 지향적으로 관리할 수 있어 개발자가 비즈니스 로직에 집중할 수 있다.

2) 자바 객체와 DB 테이블 사이의 매핑 설정을 통해 SQL을 생성한다.

3) 객체를 통해 쿼리를 작성할 수 있는 JPQL(Java Persistence Query Language)를 지원한다.

4) JPA는 성능 향상을 위해 지연 로딩이나 즉시 로딩과 같은 몇 가지 기법을 제공하는데 이것을 잘 활용할 경우 SQL을 직접 사용하는 것과 유사한 성능을 얻을 수 있다.

엔티티(Entity)

JPA 사용을 위한 Entity 객체

 

JPA가 자동으로 생성한 user 테이블

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()  레코드 삭제

Query Method를 통해 필요로 하는 조회 및 삭제, 수정 등이 가능하다.

JPA에서 기본적으로 CRUD 기능을 제공하고 있지만 필요에 따라서 쿼리 메소드를 생성하여 필요에 맞게 데이터를 조회하거나 삭제, 수정을 할 수 있다는 강점이 있다. 물론 myBatis와 다르게 일일이 SQL을 정의하지 않아도 JPA 규칙에 따라 메소드 생성을 하면 메소드 이름에 맞게 쿼리문을 수행한다.

JPA VS myBatis

대한민국을 기준으로 한 JPA와 myBatis 검색량 비교

구글 트렌드에서 검색한 myBatis와 JPA의 조회량을 비교하면 국내에서는 지난 10년간 myBatis가 압도적이었으나 최근에는 비슷한 양상을 보이고 있다.

전세계를 기준으로 한 JPA와 myBatis 비교

하지만 전세계적으로 봤을 때 myBatis가 JPA를 앞선 적은 한 번도 없다. 한국에서는 긴 시간 myBatis를 사용하였기 때문에 유지 보수를 위해서라도 myBatis에 대한 학습이 어느 정도 필요할 지도 모르지만 앞으로는 개발자가 SQL보다 비즈니스 로직에 더 집중할 수 있는 환경을 제공하는 JPA가 국내에서도 myBatis를 앞지를 것으로 예상된다.

반응형

+ Recent posts