준영속 엔티티
영속성 컨텍스트가 관리하지 않는 엔티티로 update해도 데이터는 변경되지 않음.
임의로 만들어낸 엔티티
Book book = new Book();
book.setId(form.getId());
book.setName(form.getName());
준영속 엔티티 수정하는 방법(병합 사용은 추천하지 않음)
변경 감지 기능 사용(Dirty Checking), setter 대신 함수를 이용해서 변경하도록 하라
tem findItem = itemRepository.findOne(itemId);
findItem.setPrice(bookParam.getPrice());
findItem.setName(bookParam.getName());
findItem.setStockQuantity(bookParam.getStockQuantity());
병합 사용
파라미터로 넘어온 준영속 엔티티의 식별자 값으로 1차 캐시에서 엔티티 조회
조회된 영속 엔티티의 값을 준영속 엔티티의 값으로 모두 교체한다.(*** 수정하려는 필드가 아닌 경우에도 수정이 된다.)
병합시 값이 없으면 null로 수정함
작업 이후 엔티티를 반환함.
Book book = new Book();
book.setId(form.getId());
book.setName(form.getName());
Entity entity = em.merge(book);
트랜잭션이 있는 서비스에 엔티티를 전달하지 말라
컨트롤러에서는 엔티티를 사용하지 말고, 엔티티 내부의 값을 파라미터로 전달해라.
'JPA > JPA' 카테고리의 다른 글
컬렉션 조회(OneToMany) (0) | 2020.06.09 |
---|---|
OneToOne Entity (0) | 2020.06.09 |
JPA에서 사용하는 다양한 API (0) | 2020.06.09 |
JPA 의 데이터 타입 분류 (0) | 2020.06.09 |
고아 객체 (0) | 2020.06.09 |