-
JPA 활용 (1) - 프로젝트 환경설정Web/JPA 2024. 1. 4. 14:24
1. spring boot (build.gradle)
> java 17버전
> dependencies: spring-data-jpa, thymeleaf, validation,spring-web, h2
> gradle은 의존관계 추가하면, 그 의존관계에 필요한 모든 의존관계 자동으로 끌어온다.
> ./gradlew dependencies -configuration complieClasspath를 보면 의존관계 라이브러리 살펴볼 수 있음
* dependencies 추가하면서, version이 없는 것은 , plugins에 작성된 것은
2. H2 데이터 베이스 설치
> jdbc:h2:~/jspshop (최소한번) -> 한번 들어가줘야함 파일 모드로 들어가기
> ~/jpashop.mv.db -> 파일 생성 한번 확인
> 이후로는 jdbc:h2:tcp://localhost/~/jpashop으로 접속
spring: datasource: url: jdbc:h2:tcp://localhost/~/jpashop 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 # org.hibernate.type: trace #스프링 부트 2.x, hibernate5 # org.hibernate.orm.jdbc.bind: trace #스프링 부트 3.x, hibernate6
> 데이터소스 url에 MVCC=true 모드 설정해주면 쫌 빠르다함
> ddl-auto: 어플리케이션 실행 시점에 테이블 생성 -> 엔티티 정보 보고 다 지운 다음에 다시 생성하는 옵션?
>properties: 하이버네이트 설정 -> 관련 설정 더 살펴보려면, 스프링부트 프로젝트 들어가서 레퍼런스 도큐먼트 보고 배우자
> logging.level : org.hiberate.SQL : debug : 하이버네이트 실행 SQL을 남김 -> 로그로 남김
2.1
예제 확인
@Entity @Getter @Setter public class Member{ @Id @Generatedalue private Long id; private String username; } @Repository public class MemberReopsitory{ //DAO와 같은 역할 JPA사용하려면 엔티티 매니저 필요 @PersistenceContext // 엔티티 매니저 주입해줌 @Autowired역할 EntityManager em; public Long save(Member member){ em.persist(member); return member.getId(); } public Member find(Long id){ return em.find(Member.class,id); } }
>
3.테스트
@RunWith(SpringRunner.class) //스프링 관련된 거 테스트할 때 필요한 어노테이션 @SpringBootTest public class MemberRepositoryTest{ @Autowired MemberRepository memberRepository; @Test @Transactional //엔티티 매니저를 통한 모든 데이터 변경현상은 반드시 트랜잭션 안에서 일어나야함 @Rollback(false)//test에 Teanscational이 달려있으면 테스트 후 DB 날림 public void testMember)_{ //.. assertThat(findMember).isEqualsTo(member) //JPA 엔티티 동일성 보장 //저장된 것과 테이블에 저장된 것과 생성된 것 동일 //같은 영속성 컨텍스트 안에서 id 값이 같은면 같은 엔티티로 인식 (한 트렌잭션 안에서?) //1차 캐시에서 영속성 컨텍스트에 엔티티가 관리됨, 똑같은게 있기 때문에 인서트 안하고 그냥 나온대..? } }
4. 쿼리 파라미터 로그 남기기
> 외부라이브러리 추가하면 쿼리 로그 볼 수 있다.
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6' implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' // 스프링 부트 3.0
'Web > JPA' 카테고리의 다른 글
JPA (2) - API 개발 시 기본으로 지켜야 할 사항 (0) 2024.01.22 JPA (11) - 다형성 쿼리,엔티티 직접 사용,정적쿼리,벌크연산 (0) 2024.01.12 JPA - 프로젝트 생성 (0) 2024.01.11 JPA 활용 (1-3) - 엔티티 설계시 주의점 (0) 2024.01.04 JPA 활용 (1-2) - 도메인 분석 설계 (0) 2024.01.04