###################################### 単一Entityの操作 ###################################### SQLの発行タイミングについて ============================ - 基本的に、SQLの発行はトランザクションの終わりに発行される。 - 永続化前のEntityへの操作は、永続化を行ったタイミングの断面でInsert文がキューされる - 永続化後のEntityへの操作は、最終的な結果となるUpdate文がキューされる - Updateの場合、値をいじっていない項目もUpdate対象となる。(SQLが発行されるためFUNCTION等との競合に注意) - find等の取得処理は、取得した段階で永続化される。(以降の処理は上記同様) - 関連エンティティは設定されたフェッチ戦略によってSQL発行タイミングが異なる - EAGER: データベースからエンティティの情報を読み込むときに,関連するフィールドやエンティティの情報を読み込まれる - LAZY: フィールドまたは関連先に初めてアクセスしたときにデータベースからの読み込みが実行される SQL発行例 ============================ :: // Entity新規作成 Entity ent = Entity.builder()     .strA("AAA")     .strB("BBB")     .strC("CCC").build(); // 永続化前に値を変更 ent.setStrA("XXX"); // 永続化(※中身の操作:persist(ent)) repository.save(ent); // 永続化後に値を変更 ent.setStrA("AAA"); ent.setStrB("YYY"); :: // 永続化した断面でのInsertが発行されている Insert Into entity_table (strA, strB, strC) Values('XXX', 'BBB', 'CCC'); Update entity_table set   strA = 'AAA' // newした当時の値に戻っているが、永続化後に変化しているため更新   strB = 'YYY' // 永続化後の変化の為更新される   strC = 'CCC' // 変化していないが、UPDATE文には入る WHERE   ~~~;