JPA Converter 2/ 패스트캠퍼스 챌린지 29일차

1701 단어 SpringbootJPAJPA

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

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

https://bit.ly/3FVdhDa

좋은 웹페이지 즐겨찾기