HyunsooZo's TIL logo HyunsooZo's TIL

JPA?

JPA란 Java application에서 관계형 데이터 베이스를 사용하는 방식을 정의한 Interface 이며, 프레임워크를 통해 디비에 쉽게 접근이 가능하도록 해준다.
Hibernate / Eclipse Link / OpenJPA 등의 라이브러리가 있다.
JPA Library

Hibernate

- JPA의 구현체
- hql이라는 강력한 쿼리언어를 포함함.
- 객체 지향적이며 객체를 통한 데이터 바인딩으로 쉽게 데이터를 다룬다.
Hibernate 장점 Hibernate 단점
객체지향적임(객체집중개발가능) 초기 진입장벽 존재
유지 보수 및 생산성이 좋음  
DB교체 용이함  

OpenJPA

- Apache에서 만든 도구
- JAVA EE 5 사양에서 가능한 100% 오픈소스
- BEA 시스템이 소라메트릭을 인수한 결과로 아파치에 기부
OpenJPA 장점 OpenJPA 단점
좋은 문서 풀 제공 버그 존재
사용성 좋음  

Eclipse Link

- TopLink 에센셜은 오라클의 JPA구현 무료버전에서 나옴
- EclipseLink는 Glassfish v3.0의 JPA2.0 제공업체
Spring JPA 모듈 추가

Gradle

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
}

Maven

<dependencies>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
</dependencies>
자주쓰이는 예약어
예약어/JPQL 설명 예제
distinct 중복된 결과를 제거하여 유일한 값만 반환. findAllDistinctByColumnName
findBy 지정된 속성을 기반으로 엔티티를 조회. findByPropertyName
readBy 지정된 속성을 기반으로 엔티티를 조회. readByPropertyName
queryBy 지정된 속성을 기반으로 엔티티를 조회. queryByPropertyName
getBy 지정된 속성을 기반으로 엔티티를 조회. getByPropertyName
countBy 지정된 속성을 기반으로 엔티티의 수를 계산. countByPropertyName
deleteBy 지정된 속성을 기반으로 엔티티를 삭제. deleteByPropertyName
removeBy 지정된 속성을 기반으로 엔티티를 삭제. removeByPropertyName
existsBy 지정된 속성을 기반으로 엔티티의 존재 여부를 확인. existsByPropertyName
findAllBy 지정된 속성을 기반으로 엔티티의 리스트를 조회. findAllByPropertyName
findBy…And… 여러 속성을 조합하여 엔티티를 조회. findByProperty1AndProperty2
findBy…Or… 여러 속성 중 하나라도 일치하는 엔티티를 조회. findByProperty1OrProperty2
findBy…Is… 속성의 값과 일치하는 엔티티를 조회. findByPropertyIsValue
findBy…Equals… 속성의 값과 일치하는 엔티티를 조회. findByPropertyEqualsValue
findBy…Between… 지정된 범위 내에 속성의 값이 있는 엔티티를 조회. findByPropertyBetween(startValue, endValue)
findBy…Like… 속성 값이 지정된 패턴과 일치하는 엔티티를 조회. findByPropertyLike(pattern)
findBy…IsNull 속성 값이 NULL인 엔티티를 조회. findByPropertyIsNull
findBy…IsNotNull 속성 값이 NULL이 아닌 엔티티를 조회. findByPropertyIsNotNull
findBy…In 속성 값이 지정된 값 중 하나와 일치하는 엔티티를 조회. findByPropertyIn(values)
TOP