본문 바로가기

코딩/미완

(4)
@Transactional 주의점. 영속성 컨텍스트의 생명주기 아래처럼 @Transactional을 붙인 상태에서는 setFcmToken()에 따른 update문이 동작한다. @SpringBootTest @Commit @Transactional class CustomerRepositoryTest { @Autowired CustomerRepository customerRepository; /** * 없을 때 null을 반환하지는 않는다. 빈 리스트를 반환함. */ @Test public void findBySnsTypeAndSnsIdentifyKeyTest() { Customer customer = Customer.builder().build(); customerRepository.save(customer); customer.setFcmToken("1"); List ..
[JPA] @Transcational의 유무에 따른 동작 차이 https://velog.io/@roro/JPA-JPQL-update-%EC%BF%BC%EB%A6%AC%EB%B2%8C%ED%81%AC%EC%99%80-%EC%98%81%EC%86%8D%EC%84%B1-%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8 [JPA] JPQL update 쿼리(벌크)와 영속성 컨텍스트 JPQL의 update 쿼리 호출 후 발생하는 상황에 대해 알아보자. Post Entity 먼저 테스트를 위해 id와 title만 있는 간단한 Post 엔티티를 생성한다. PostRepository PostRepository를 인터페이스 만들고 JpaReposi velog.io 제목을 잘 지은것 같다. ㅎㅎ 먼저 위의 블로그에 정리된 2가지 이슈를 반드시 보고 오자. 저걸 모르면..
controller, service, repository 아키텍처의 고민(미완) 서로 독립적이어야 할까? 아니면 서로 유기적이어야 할까? 어떻게 하느냐에 따라서 controller - service 의 정보전달에 차이가 생긴다. 쉽게 말하면 service layer의 함수 리턴값이 void인지 DTO값인지 결정됨. 뭐가 좋은지와 그 근거를 모르겠다...
[JPA Exception] TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing 과 여러 가지 문제들 결론적으로 말하면 엔티티를 저장할 때 모든 연관관계의 엔티티는 영속상태여야한다는 원칙을 몰라서 생긴 일이었다. # org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : pnu.problemsolver.myorder.domain.Cake.store -> pnu.problemsolver.myorder.domain.Store; nested exception is java.lang.IllegalStateEx..