SpringBoot+Jpa

@PersistenceContext

lby132 2022. 10. 22. 15:23

이번에는 그냥 jpa가 아닌 spring boot를 써서 jpa를 사용한다.

gradle에 

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

이것만 넣어주면 jpa를 스프링부트에서 사용하기 위한 라이브러들을 다 가져와 주기 때문에 엄청 편리하게 사용할 수 있다.

오늘 사용한건 @PersistenceContext 이 어노테이션이다. 사용법은

@Repository
public class MemberRepository {

    @PersistenceContext
    private EntityManager em;

}

repository에서 사용하고 EntityManager 위에 @PersistenceContext 이 어노테이션만 넣어주면 그냥 jpa에서 사용했던

META-INF 폴더밑에 persistence.xml을 만들어서 설정하는 수고를 덜어준다. 얘가 다 해준다.

물론 yml파일을 만들어서 data connection, jpa 같은 설정은 해주어야한다.

spring:
  datasource:
    url: jdbc:h2:tcp://localhost/~/springjpa;MVCC=TRUE
    username: sa
    password:
    driver-class-name: org.h2.Driver

  jpa:
    hibernate:
      ddl-auto: create  # 실행때마다 기존 테이블 지우고 새로 생성
    properties:
      hibernate:
#        show_sql: true 시스템아웃 로그만 찍히기 때문에 주석.
        format_sql: true

logging:
  level:
    org.hibernate.SQL: debug  # 시스템아웃이 아닌 로그로 찍힌걸 보여주므로 이거 사용.

이 코드들을 읽어서 EntityManagerFactory같은 것들이 다 만들어진다. 그래서 그냥 @PersistenceContext이것만 써주면 

EntityManager를 사용하기 위한 준비는 끝난다.

'SpringBoot+Jpa' 카테고리의 다른 글

casecade(영속성 전이)  (0) 2022.11.25
OSIV  (0) 2022.10.29
1대 N fetch join 위험성  (0) 2022.10.27
EntityManager의 @Autowired  (0) 2022.10.23
JPA사용시 @Transactional  (0) 2022.10.23