원래 웹 계층 개발이지만, 딱히 쓸 게 없다
준영속 엔티티 수정#
준영속 엔티티란 <- 영속성 컨텍스트가 더이상 관리하지 않는 엔티티
- JPA 엔티티는 변경을 자동으로 감지해서 UPDATE를 날라지만,
준영속 엔티티는 (예: DB에서 꺼내지 않고, 임의로 만듬)UPDATE를 날리지 않음 - 따라서, 업데이트를 하려면 아래의 두가지 방법을 쓸 수 있다. 근데 무조건 첫번째를 쓰자
변경감지 기능 (무조건 이거씀)#
DB에서 다시 엔티티를 조회하고, 그 엔티티를 수정하는 방법
트랜잭션 커밋 시점에 변경이 감지되어, UPDATE문이 날라감
☠️ 병합 ☠️#
알아만 두자
merge()를 실행해서 덮어씌움조회-> 교체 => 커밋시점에 UPDATE문 날림
왜 ?#
병합(merge)시에는, 모든 필드를 덮어씌우고, 없다면 NULL로 업데이트한다.
모든 화면에서 항상 모든 필드값을 유지하기 싫으면, 쓰지말자
이전에 Mybatis <if test="someCondition != null and someCondition != ''"> 없이 UPDATE를 날렸다가, 필드가 NULL로 초기화된 경험이 생각난다.