Spring Data JPA
- mybatis 대신 JPA를 사용
- JPA에서 VO는 Entity라고 표현
Spring Data JPA 기본 구성 요소
1. Project 생성 시 Spring Data JPA 선택하여 생성
2. JPA에서 필요한 디펜던시 설정 (pom.xml)
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
3. application.properties
- mybatis설정과 동일한데 jps관련 설정이 들어감
주의할 설정 (spring.jpa.hibernate.ddl-auto = '옵션 입력')
create
- 해당 속성에 의해 VO에 해당하는 Table이 자동으로 DB에 생성 됨
- 해당 테이블이 있으면 DROP하고 새로 생성
create-drop
- create와 동일하지만 종료 시점에 DROP이 됨
update
- 변경 된 것만 DB에 반영
validate
- 엔티티와 테이블이 정상적으로 맵핑되었는지 여부 확인
none
- 사용하지 않음
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:XE
spring.datasource.username=DB 아이디
spring.datasource.password=DB비밀번호
server.port=8088
server.servlet.session.timeout=36000
spring.jpa.hibernate.ddl-auto=create
spring.jpa.properties.show_sql:true
spring.jpa.properties.format_sql:true
logging.level.org.hibernaate.SQL:debug
4. VO
VO에서 사용되는 어노테이션
import javax.persistence.Entity
@Data
- setter/getter/tostring()
@Entity
- VO 랑 매치되는 테이블을 생성
@Table(name="goods")
- 해당 이름의 테이블만들어줌
@Id
- PK 속성 정하기
@Data
@Entity
@Table(name = "goods")
public class GoodsVO {
@Id
private int 'pk로 설정할 컬럼';
private String 일반 컬럼;
}
5. DAO
public interface DAO명 extends JpaRepository<VO명, PK의 자료형> { }
public interface GoodsDAO extends JpaRepository<GoodsVO, Integer> {
}
6. Controller
- 특이사항 없음, mybatis에서 처럼 Controller만들면 됨
7. Service
- 특정 비즈니스 로직을 위한 Service
- 여러 dao의 함수를 필요로 할 경우 따로 service 로 만듦
예를 들어 ) 입금/출금에 해당하는 각각의 메소드를 하나의 Service로 묶는 개념 - 기존 DAO 만들 듯이 만들고 @Service 어노테이션 붙이기
8. 결과화면
- 자동으로 'goods' 라는 테이블이 생성되었음
JpaRepository(공통 인터페이스)
- CRUD 처리를 위한 공통 인터페이스
save()
- Insert/update 함수이다
- 주 식별자가 이미 있으면 update, 없으면 insert 한다
반응형
'개발 > 스프링(Spring)' 카테고리의 다른 글
(JPA) 사용자 정의 sql (@Query) (0) | 2022.06.28 |
---|---|
JPA 관계 맵핑 (0) | 2022.06.27 |
(Spring) 한글 처리 - filter 이용 (0) | 2022.06.11 |
(Spring) redirect 함수 (0) | 2022.06.10 |
(Spring <-> Mybatis) Spring / Mybatis 설정 or 동작 원리 / 순서 (0) | 2022.06.09 |
댓글