JPA Converter 2/ 패스트캠퍼스 챌린지 29일차
28일차에 이어서 진행
BookRepositoryTest
@Test
void converterTest(){
bookRepository.findAll().forEach(System.out::println);
Book book = new Book();
book.setName("또 다른 IT전문 서적");
book.setStatus(new BookStatus(200)); //200-> code
bookRepository.save(book);
System.out.println(bookRepository.findRawRecord().values());
}
BookRepository.java
//id의 역순으로 한개만 가져오도록 한다, 네이티브 쿼리로
@Query(value = "select * from book order by id desc limit 1", nativeQuery = true)
Map<String, Object> findRawRecord();
Result
Tuple Map 형식으로 출력
>org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleCoverter$TupleBackedMap@53df7e67
값에 대한 정보 출력
>[4. 2021-11-29 09:01:01.358, null, null, false, 또 다른 IT 전문서적, 200, null]
JPA는 자동으로 영속성을 관리해 주기 때문에 편리한점이 있으나, 개발자가 생각지도 못하는 예외적인 동작을 하기도 한다.
예를들어 query 조회만 필요하여 Converter를 만들 때 불러오는 단만 구현을 하고 내보내는 단을 구현하지 않았는데
조회쿼리가 실행되며 JPA에서 자동으로 update를 진행되었다. 이런 경우에는 update가 되면서 null로 덮어씌워지며
기존 값들이 null로 바뀌게 되므로 주의가 필요하다. Converter를 구현할 때는 반드시 양방향으로 구현할 것!
#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한번에끝내는Java/Spring웹개발마스터초격차패키지Online
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
Author And Source
이 문제에 관하여(JPA Converter 2/ 패스트캠퍼스 챌린지 29일차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mangojuice/JPA-Converter-2-패스트캠퍼스-챌린지-29일차저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)