Spring準零速エンティティの変更

1164 ワード

準零速図元とは何ですか.
永続コンテキストが管理されなくなったエンティティ.
これらのエンティティは、永続性コンテキストで提供される機能を使用しません.
任意に作成されたエンティティにも既存の識別子(id)がある場合は、4段階の永続エンティティと見なすことができる.
準ゼロスピードエンティティを変更します.
  • を使用して検出機能
  • を変更する.
  • を使用して
  • をマージ
    検出機能の変更
    @Transactional
    void update(Item itemParam) { 
      //itemParam: 파리미터로 넘어온 준영속 상태의 엔티티
      
      Item findItem = em.find(Item.class, itemParam.getId()); //같은 엔티티를 조회.
      findItem.setPrice(itemParam.getPrice()); //데이터를 수정한다. 
    }
    永続性コンテキストでエンティティを再問合せし、データを変更します.
    トランザクションのコミットポイントで変更が検出され、この操作でデータベースに対してUPDATE Queryが実行されます.
    連結の有効化
    @Transactional
    void update(Item item) { 
      //itemParam: 파리미터로 넘어온 준영속 상태의 엔티티
      
      Item mergeItem = em.merge(item); //병합사용
    }
    連結は、準永続状態にあるエンティティを永続状態に変更するために使用されます.
    ->いっそmerge()の値で代用します.
    整理する
    変更検出機能を使用すると、希望する属性のみ変更できます.
    ただし、マージの場合、すべてのプロパティが変更されます.
    エンティティを変更する場合は、変更検出機能を使用します.
    トランザクションを持つサービス層の識別子(id)と変更するデータを明確に伝えましょう.
    使うべきでない理由は?
    マージ時に属性に値がない場合はnullに更新されます.
    ソース:https://www.inflearn.com/users/@yh