最初の質問の決まり文句
挿入されたデータレコードのフィールドは、デフォルト値のデータベーステーブル構造を挿入するために直接データベースによって設定されたデフォルト値をコピーする場合のエンティティ・クラス・フィールドではない設定した場合
、この開始XMLコンフィギュレーションに応じて設定することができ、それ自体を休止状態
1 < マッピングを休止 2 パッケージ= "*。実体" > 3 < クラス名= "ProEntity" テーブル= "PRODUCTINFO" ダイナミック挿入= "true"に動的更新= "真" > 4 < 識別名= "proID" カラム= "ID" > 5 < ジェネレータクラス= "割り当てられた" > </ ジェネレータ> 6 </ ID > 7 <プロパティ名= "proCode" 列= "CODE" /> 8 < プロパティ名= "proName" カラム= "名前" /> 9 < プロパティ名= "proDescription" カラム= "DESCRIPTION" ではないヌル= "TRUE" /> 10 < プロパティ名= "proAmount" カラム=」量」-nullでない= "真" /> 11 < プロパティ名= "proManagerID" 列= "マネージャーID" 、nullでない= "真" /> 12 < プロパティ名= "proManagerName"カラム= "MANAGERNAME" 非NULL = "TRUE" /> 13 </ クラス> 14 </ 休止マッピング>
私プーさんは今、9102年と、まだプロファイルを持つが、それでも私はコピーされたものの、いくつかの一般的に対応するノートを添付してい
基本更新文は、変更時にHibernateは私たちがマッピングファイルの挿入とコンテンツの更新ステートメントを制御することができます。たとえば、プロパティ要素のマッピングファイルの<update属性がfalseに設定され、その後、このフィールドは含まれません、フィールドは、動的SQL文が非常に一般的な以下は、特定の構成は、SQL文の属性について説明している同様にする。dynamic .insertの設定が含まれていません:
1)<要素プロパティプロパティ挿入:falseに設定し、これは、insert文には含まれていませんフィールドが挿入されることはありません示し、trueにデフォルト
2)<プロパティ要素の更新が属性:falseに設定し、このフィールドは更新ステートメントに含まれていないがtrueに、デフォルトを変更したことがない示す
。3)<可変クラス要素の属性:設定を偽プロパティがfalseに<property要素の全てを更新することで、オブジェクトは、説明、真のデフォルトを更新することはできません
4)<プロパティダイナミック挿入要素プロパティ:インサートは動的生成するときにtrueに設定され、オブジェクトは、インサートを表現しましたこのフィールドの値がnullの場合文は、INSERT文をfalseにデフォルトに追加されることはありません
。5)<プロパティ要素の動的更新属性セット 真、UPDATEステートメント、falseにデフォルトに追加されません。このフィールドの値がnullである場合、オブジェクトの更新が、ときに動的更新ステートメントが生成されることを示す
6)<クラスダイナミック挿入要素プロパティ:trueに設定し、すべての指示<ダイナミック挿入要素は、デフォルトはfalseをtrueに設定するプロパティの属性
7)<クラスの動的更新要素の属性:trueに設定され、動的更新属性がtrue、falseのデフォルトにすべての<property要素を設定示します
--------------------------------------------- ---分割ライン-------------------------------------------------- --------------
テーブルのフィールドのN番号が含まれている場合は非常に小さく、それは、システムのパフォーマンスに影響を与えません(たとえば、CPU、メモリなど)システムリソースの動的SQL文の消費量を生成休止状態、それを挿入して、動的更新にプロパティを属性することをお勧めしますSQL文の実行時間を節約できます。挿入するように、データを変更し、文はフィールドだけを挿入または変更することが含まれ、真の、プログラムの効率を向上させる。
1、注釈はdynamicInsert
「メールで送信」の列(名前= @、2を、columnDefinition =「VARCHAR(128)NOT NULL」)
以下であるLZ方法の両方が唯一の他の大物の結果を参照することができるあまり説明をしないことができない発効の第2のクリアを確認するために少し時間を使用HTTPS ://blog.csdn.net/wzh577/article/details/97933549は学ぶことができるか関心が研究することができます
LZを次のように最初の結果が得られました
@Test 公共ボイドAddaの(){ ActivityTools新しい新しいActivityTools AC =(); activityToolsDao.save(AC); / ** *次のようにアノテーションデータベースステートメントを増加させることであることなく、 (activity_toolsに挿入* ACTIVITY_ID、カスタマイズ 、enterprise_id、finishNumber、製品、solutions_id、sumNumber、tools_id、toolsWeight 、toolsNorm_id)の値(?、?、?、?、?、?、?、?、?、?) 以下のようにデータベースを*追加したコメント文の後に挿入されている * INSERT INTOは、値()activity_tools *を/ } / ** * @Entity * @Table(名= "activity_tools") * @DynamicInsert * /
注釈Entityクラスは、同様の効果の@DynamicInsertと@DynamicUpdate 2つの音符を次の
LZが大まかにしかいくつかの情報を読んで動的に行う実験ではなく、動的な変更を挿入するために使用する必要があるが、あなたが問題を見ることができるので、データはスコープの変更に関連しているため実際には、最初のステップは、第二工程のためのクエリを更新する第三のステップは、挿入することで更新することである
、これは、同じセッション三のステップは一緒にダーティデータしたがって@DynamicUpdate通常@selectBeforeUpdate(真)につながることを保証していない場合使用するため、このプロパティは、我々は、更新操作を行うとき、このデータは、我々は、更新操作中に保存されたときに、更新が常に同じセッションでそれらを見つけるように、固体のオブジェクトは、データベースに行くに見えることを意味します。
別のアプローチは、Hibernateの方法megerを提供することを目的とする
アクションのマージ方法:
新しいオブジェクトをしてIDを設定し、オブジェクトを使用して、データベースのレコードを見つけることができない場合は、使用中のマージ、自由な状態として扱われます挿入データが挿入され、このレコードが更新を使用して、データベース内のデータの更新が見つかった場合。
新しいオブジェクトIDが設定されていない場合、オブジェクトは、このポリシーエンティティクラスのマスターキーに基づいてデータを保持するときに生成されるマージを使用して、過渡プロセスとして扱われます。
それ自体は永続状態のオブジェクトに対して変更されないマージを使用して、オブジェクトデータベースに格納されています。