현느
22
2020-09-26 09:28:32
1
187

spring data jpa 이해가 잘 안됩니다.


안녕하세요. 스프링 부트와 jpa를 이용해서 공부를 하고 있는 학생입니다.

제가 jpa로 엔티티를 만들고 저장을 하는 과정에서 엔티티에 기본값을 주는게 @ColumnDefault로 기본값을 지정하고

@DynamicInsert 로 null을 제외시켜 입력 시키면 디비상에 기본값이 세팅된채로 들어가는걸 확인했습니다.


근데 저장한 다음 find에 id값을 줘서 불러오면 불러온 객체애 대해서는 기본값이 셋팅이 안되있는채로 불러와지는걸 발견했습니다.


아마 영속성 컨택스트 관련 문제 같은데 혹시 이 경우에는 어떻게 값을 불러와야 기본값까지 같이 불러 올 수 있는지 궁금합니다!!


0
  • 답변 1

  • 난쟁
    74
    2020-09-26 11:37:17

    정확하진 않은데 흥미로워서 같이 한번 유추해 볼까해요.

    필자분이 한 트랜잭션 안에서 저장과 조회를 둘다 했다는 가정하에 같이 유추해봐요. 먼저, 엔티티에 직접 값을 넣은게 아니고 DB에 기본값을 위임했기 때문에, 1차 캐시에는 값이 없는 상태로 저장된게 아닐까 생각되요. 그럼 실제 DB상 기본값이 있는 엔티티와, 자바 어플리케이션의 JPA 1차 캐시상 기본값이 없는 엔티티를 동기화 해주는 작업을 해야겠죠? 직접 Flush를 통해 동기화 시켜주던가, insert 트랜잭션을 끝내서 flush 시키고 다른 트랜잭션에서  select 해서 가져오면 되지 않을까 해요.

  • 로그인을 하시면 답변 을 등록할 수 있습니다.