본문 바로가기
개발/스프링(Spring)

Spring Data JPA

by kakk789 2022. 6. 26.

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 한다
반응형

댓글