📝 Spring Data JPA를 설정해보자
Spring Framework + Maven + Mybatis를 사용하면서 Java와 SQL의 동시 사용은
개발기간에서 능률이 떨어지므로 빠르고 간결하게 Data를 다루고자 JPA를 도입해보려고 한다.
개발환경은 Spring Framework + Spring Boot + Maven 환경이다.
📝 JPA ( Java Persistance API )
■ 정의
자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스
■ ORM ( Object - Relational Mapping )
우리가 일반적으로 Class와 RDB(Relational DataBase)의 테이블을 매핑한다는 정의이며,
기술적으로는 Object를 RDB 테이블에 자동으로 영속화 해주는 것
🔧 설정
■ pom.xml
1. Spring Data JPA Dependency 추가
2. JDBC Dependency 추가
- 현재 MariaDB 사용중이므로 MariaDB Dependecy를 추가하였다.
■ entity 생성
1. domain Package 생성
2. Template Entity 생성
- 임시로 Template Table과 매핑되도록 Template Class를 생성하였다.
- @Entity 어노테이션을 이용하여 Entity Class임을 명시한다.
- @NoArgsConstructor 어노테이션은 access 옵션을 Protected로 설정하여 Entity Manager 외에는 생성이 불가능하도록 설정하여 불변성을 높인다.
- Entity 는 불변성을 유지하기 위해서 Lombok의 @Setter 어노테이션 사용은 지양해야하며, @Builder 어노테이션을 사용해야한다.
■ repository 생성
1. repository Package 생성
2. TemplateRepository Interface 생성
- Template Entity를 사용하는 TemplateRepository Interface를 생성하였다.
- Spring-data-jpa에서 제공하는 JpaRepository Interface를 상속받도록 설정하고
Template Entity와 PK의 자료형을 명시하여 Spring-Data-Jpa가 제공하는 기능들을 사용할 수 있도록 한다.
■ Entity, Repository Scan 설정
1. BootApplication Class에서 Scan Annotation 설정
✏️ 사용법
- Service Class에서 TemplateRepository 선언
- Service Class의 @RequiredArgsConstructor 어노테이션을 이용하여 Repository Interface를 주입받는다.
- Spring-Data-Jpa에서 제공하는 findById() Method 사용
- Optional Class는 Present() Method를 이용하여 데이터를 검증할 수 있는 Class이다.
📌 마무리
여기까지 Spring Framework + Spring Boot + Maven 환경에서 JPA를 설정하는 방법을 정리했다. 순수 JPA는 아니고 Spring-Data-Jpa를 설정하는 방법이지만 Spring의 환경에서 사용하는 JPA는 통상적으로 Spring-Data-Jpa를 의미하므로 큰 의미가 달라지진 않는거 같다. JPA를 사용함으로써 이제 SQL에 대해 벗어난것만 해도 큰 의미가 있으며, ( 물론 완전히 벗어날 순 없지만 ) 이제 Database의 Table을 Object로서 바라보게 관점이 변한 것이 가장 큰 장점인거 같다. 하지만 벗어난 만큼 기본적인 작업 및 설정들이 추가되고 개발을 진행함에 있어서 더 빡빡해진거 같다.
JPA 잘배우고 갑니다~ ^^