JPA?
JPA란 Java application에서 관계형 데이터 베이스를 사용하는 방식을 정의한 Interface 이며, 프레임워크를 통해 디비에 쉽게 접근이 가능하도록 해준다.
Hibernate / Eclipse Link / OpenJPA 등의 라이브러리가 있다.
Hibernate / Eclipse Link / OpenJPA 등의 라이브러리가 있다.
JPA Library
Hibernate
- JPA의 구현체
- hql이라는 강력한 쿼리언어를 포함함.
- 객체 지향적이며 객체를 통한 데이터 바인딩으로 쉽게 데이터를 다룬다.
- hql이라는 강력한 쿼리언어를 포함함.
- 객체 지향적이며 객체를 통한 데이터 바인딩으로 쉽게 데이터를 다룬다.
Hibernate 장점 | Hibernate 단점 |
---|---|
객체지향적임(객체집중개발가능) | 초기 진입장벽 존재 |
유지 보수 및 생산성이 좋음 | |
DB교체 용이함 |
OpenJPA
- Apache에서 만든 도구
- JAVA EE 5 사양에서 가능한 100% 오픈소스
- BEA 시스템이 소라메트릭을 인수한 결과로 아파치에 기부
- JAVA EE 5 사양에서 가능한 100% 오픈소스
- BEA 시스템이 소라메트릭을 인수한 결과로 아파치에 기부
OpenJPA 장점 | OpenJPA 단점 |
---|---|
좋은 문서 풀 제공 | 버그 존재 |
사용성 좋음 |
Eclipse Link
- TopLink 에센셜은 오라클의 JPA구현 무료버전에서 나옴
- EclipseLink는 Glassfish v3.0의 JPA2.0 제공업체
- 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) |