Today
- thymeleaf 계속해서 실습증
- Spring Data JPA (Java Persistence API)
특징으로는, 아래와 같이 있다.
- Java 영속 영역(데이터 베이스)를 처리하는 API
- Spring Data JPA 라이브러리 이용
- JPA 단독 개발시 보다 코딩양이 줄어듬
- ORM(Object Relational Mapping)
- JPA
- 객체 지향을 이용하여 영속계층(데이터베이스 영역)을 처리하는 것 담당
- 엔티티 객체 -> 데이터(VO/DTO) -> JPA -> 데이터베이스 연동
- Spring DATA JPA
-> 엔티티 객체를 이용하여 JPA 처리하기 위한 라이브러리 제공
-> 자동으로 객체를 생성, 처리 -> JPARepository
- 엔티티 객체(클래스) = VO클리스와 동일
- 엔티티 클래스명으로 테이블 생성 -> @Table(name="테이블명")
- PK(기본키)를 가지는 자바 객체 (ex: idx, user_id)
@Id를 이용하여 객체 구분, 관리 함
- 변경을 최소화 하게끔 설계하는 것이 중요
- 엔티티 클래스 생성/동작 방식
- 해당 클래스명의 (@Table) 테이블이 없으면 자동 새로 생성 (또는 있는데 좀 다르면 ALTER TABLE 시킴)
@Entity 필수
@Id 필수 -> 엔티티 객체 구분에 사용
- 키 생성 전략(Key generate Strategy)
-> GenerationType.IDENTITY -> 데이터베이스에서 자동 생성 -> AUtO_INCREMENT와 동일
IDENTITY : 데이터베이스에 위임
- MySQL/MariaDB/MSSQL - auto_INCREMENT
- 오라클 : SEQUENCE 사용 ->
@SequenceGenerator 필요
- AUTO : DBMS 따라 지정, 기본값(DBMS별 구문 차이)
- TABLE : 키 생성용 테이블 사용, 모든 DB동일하게 사용 ->
@TableGenerator 필요
- Querydsl JPA Support » 5.1.0
Querydsl APT Support » 5.1.0
Jakarta Annotations API » 3.0.0
Jakarta Persistence API » 3.1.0
// Querydsl 사용 설정 부분
implementation 'jakarta.annotation:jakarta.annotation-api'
implementation 'com.querydsl:querydsl-jpa:5.1.0:jakarta'
annotationProcessor 'com.querydsl:querydsl-apt:5.1.0:jakarta'
... dependencies 바깥에 아래 내용 추가
sourceSets {
main {
java {
srcDirs = [
"$projectDir/src/main/java", "$buildDir/generated/querydsl"
]
}
}
}
- 위처럼
jakarta버전으로 바꿔줘야함 (내 버전에 맞추기 위해서)
- jakarta.annotation은 버전 지워버림 (알아서 최신 버전으로 가져오게)
- apt는
annotationProcessor 으로 변경 / jakarta.annotation annotationProcessor 추가
- jakarta.persistence 갖고와서 버전 지우고
annotationProcessor으로 변경
Review
- Spring boot로 간단하게 게시판 test 코드를 작성해서 테스트해봤다.
- Mapper를 따로 다 작성하지 않아도 되서 간편하나, 아직 사용법에 대해 이해가 다소 부족하여 공부가 필요할듯 하다.
- 당장 다음주 월요일부터 개인시간에 개인 플젝 진행필요... 퍼블 부터 해야하니 빠른 준비가 필요할듯