본문 바로가기

Java, Spring/스프링부트와 JPA 활용 1

1-3. View 환경 설정 ~ 1-5.

HelloController.java

Model이 알아서 resources/templates/파일이름 찾아감.

 

 

순수 html 리턴하고 싶으면 thymeleaf 지우기.

정적파일은 resources/static 에 넣는다.

 

 

 

바꾼 파일 recompile 만 해주자.

 

 

 

 

-------------------------------------------------------h2 데이터 베이스 설치

 

 

 

 

 

 

 

------------------------------------------------------ JPA와 DB 설정, 동작확인

 

 

 

 

저런 설정 법은 어디서 배우나요?

공식메뉴얼 보고 파야됨 spring boot documentation

ddl-auto: create ( create는 자동으로 테이블 만들어주는 옵션 )

 

 

hibernate가 남기는 모든 로그( sql ) 가 다 보인다. ( 실제  

 

 

 

 

 

엔티티매니저를 통한 모든 데이터변경은 트랜젝션 안에서 이루어져야한다.

 

 

Member Entity 정보를 보고 테이블을 만들어둠 . ( 아까 application.yml 에서 CREATE로 해뒀기 때문에 )

 

 

 

근데 왜 데이터가 없지? -> @Transactional 이 @Test케이스에 있으면 테스트 끝나자마자 롤백을 해버림. 독립적인 테스트를 위한 스프링설정 

@Rollback(false) 넣어주면 롤백안하고 커밋해줌 ( 너무 쉽다. ) 

 

 

 

3번째 assert 추가. ( 저장한 거랑 조회한거랑 같은가? )

같은 Transactional 안에서 저장하고 조회하면 영속성 컨텍스트가 똑같다. ( 같은 영속성 컨텍스트 안에서는 id 값이 값으면 같은 엔티티로 식별된다. ) 지금은 이해된다. ( 같은 트랜젝션 = 같은 영속성 컨텍스트 )

 

영속성 컨텍스트에서 관리 되는 똑같은 엔티티가 있기 때문에 걍 거기서 꺼내옴.

 

select 쿼리조차 날라가지 않음. 영속성컨텍스트에 id같은 엔티티객체가 있으니까 ( 어 ? 나 조회하는게 영속성컨텍스트에 있네? 하면서 1차캐시에서  꺼내옴 )

( JPA 엔티티 동일성 보장 )

 

jar빌드해서 동작 확인 ( 몰라도됨 )

 

 

 

 

 

 

#######쿼리 파라미터 로그 남기기

 

쿼리 파라미터가 안나옴  (?, ? ) 로 찍힌다.

 

 

?,? 라 떠도 밑에 뭐가 들어갔는지 파라미터가 나온다.

-> 시원치 않다. -> 외부 라이브러리 쓰자.

 

 

 

p6spy 라이브러리 쓰자

첫줄은 p6spy 썻다.

두번째 : 원본 출력

세번째 : 파라미터 바인딩 된 것 출력

 

운영단계에서는 고민해보자.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

---번외

테스트 꿀팁

tdd하고 탭 치면 저 양식 나옴.

Recent Posts
Popular Posts
Recent Comments