[JPA] 변경 감지와 병합(Merge)
2023. 4. 22. 22:27
데이터베이스/JPA
준영속 엔티티를 수정하는 2가지 방법 ⭐️준영속 엔티티란? JPA에서 영속성 컨텍스트에서 분리된 엔티티 즉, 영속성 컨텍스트가 더는 관리하지 않는 엔티티를 말한다. 영속성 컨텍스트는 JPA가 엔티티를 관리하는 곳으로, 영속 상태(Persistent)인 엔티티는 영속성 컨텍스트에 저장되어 관리된다. 영속 상태인 엔티티가 영속성 컨텍스트에서 분리되면 준영속 상태(Detached)가 된다. 준영속 상태의 엔티티는 더 이상 영속성 컨텍스트에서 관리되지 않으며, 영속성 컨텍스트에서 분리된 이후에는 엔티티를 수정하더라도 JPA는 이를 인식하지 못한다. 준영속 엔티티를 수정하는 방법은 변경 감지 및 병합 사용하는 방법이 있다. 변경 감지 영속성 컨텍스트에서 엔티티를 다시 조회한 후에 데이터를 수정하는 방법으로 트랜잭..
[JPA] JPQL @Query에 각 DB function() 사용해보기
2022. 12. 31. 11:19
데이터베이스/JPA
JPQL에서 기본적으로 지원하는 function만으로는 비지니스의 조회를 해결하기는 한계가 존재한다. nativeQuery를 사용하여 fetch까지 할 수 있는 방법을 찾다가 function() 을 찾게되었다. function을 쓰게 된 이유 AccountUser의 엔티티는 회원을 생일을 LocalDate로 저장되어 있다. @Getter @Setter @Entity public class AccountUser { @Id private Long id; @NotNull private LocalDate birth; } 회원 목록 조회시 생년월일 중 월만 맏아서 조회를 하게 되는 기획이 있다. MSSQL을 사용하고있어서 SUBSTRING(CONVERT(VARCHAR(8), birth, 112), 5, 2)) C..