分析方法の機能を容易にするために、3つの状態の遷移図をここに置きます。
1.Session Save()メソッド
セッションは、すべてのHibernateインターフェイスの中で最も重要なインターフェイスであり、データの保存、更新、クエリ、削除の方法を提供します。
SessionのSave()メソッドは、一時的または自由状態を永続的な状態に変換できます。たとえば、顧客オブジェクトを保存します。
sessionfactory sessionfactory; configuration configuration = new configuration()。configure(); sessionfactory = configuration.buildsessionfactory(); session session = sessionfactory.opensession(); transaction tr = session.begintransaction(); // 1。顧客オブジェクトを作成する顧客c1 = new Customer(); c1.setid(new long(1)); c1.setname( "test"); c1.setemail( "[email protected]"); c1.setpassword( "123456"); c1.setaddress( "paradise"); // 2。 Save()セッションのメソッドを呼び出して、顧客オブジェクトセッションを保持します。
Save()メソッドは、主に次の3つのことを行います。
(1)新しいによって作成された一時的な顧客オブジェクトをキャッシュに入れて、それを持続させる。
(2)同時に、オブジェクト関係マッピングファイルに設定されたOIDジェネレーターによると、つまり、主要なキー生成方法は、オブジェクトの一意のOIDを生成します。
<! - プライマリキーを設定 - > <idName = "id" column = "id" type = "long"> <! - プライマリキー生成方法 - > <generatorclass = "increment"/> </id>
この場所には質問があります。オブジェクトを作成するとき、SetID()メソッドがオブジェクトの永続性の主要なキーを生成するかどうか。実際、そうではありません。 SetIDは、設定したときに主キーを生成しませんが、オブジェクト関係マッピングファイルで構成されたプライマリキー生成メソッドに基づいて主キーを生成します。それは数倍以上実行でき、主キーはそれ自体で成長します。データベースから複数のデータを見ることができます。主キーは1から始まるので、setid()を知ることができます
主キーは設定されていません。そうしないと、データベースの主要なキーの一意性検証は不可能です。
また、主要なキー値を手動で設定することもできます。 Save()メソッドをオーバーロードし、オーバーロードメソッドSave(C1、NewLong(1))を使用し、毎回手動で設定する必要があります。
(3)挿入ステートメントを実行する計画。挿入ステートメントはすぐに実行されず、挿入ステートメントはセッションがキャッシュを浄化するときにのみ実行されることに注意してください。 tr.commit()トランザクションコミット。
2.Sessionの更新()メソッド
フリーステートオブジェクトを永続的なオブジェクトに変えます。例えば:
SessionFactory SessionFactory; configuration configuration = new configuration()。configure(); sessionfactory = configuration.buildSessionFactory();セッションsession1 = sessionfactory.opensession();トランザクションtr1 = session1.begintransaction(); // 1。顧客オブジェクトを作成する顧客c1 = new Customer(); c1.setid(new long(1)); c1.setname( "test"); c1.setemail( "[email protected]"); c1.setpassword( "123456"); c1.setAddress( "パラダイス"); // 2。 customer object session1.save(c1)を維持するには、Session Save()メソッドを呼び出します。 tr1.commit(); session1.close(); // 3。フリーステートオブジェクトを更新し、変更を見つけ、更新ステートメントセッション2 = sessionFactory.opensession()を実行します。トランザクションtr2 = session2.begintransaction(); c1.setAddress( "テスト更新"); session2.update(c1); tr2.commit(); session2.close();
セッションの更新()は次のことを行う必要があります。
(1)無料の顧客オブジェクトをセッションキャッシュに追加して、永続的なオブジェクトになります。
(2)更新ステートメントを実行します。 Saving()が挿入ステートメントを実行するように、すぐに更新ステートメントを実行しません。キャッシュがクリアされると、顧客オブジェクトは更新ステートメントに組み立てられます。
その後、もう一度実行します。
顧客がデフォルトで変更されていなくても、キャッシュがクリアされたときに更新ステートメントが組み立てられることに注意してください。変更する必要がある場合は、オブジェクト関係マッピングファイルを設定する必要があります。
3.Session SaveorupDate()メソッド
SaveOrupDate()メソッドには、Save()およびUpdate()メソッドの関数が含まれており、渡されたパラメーターの状態に従って異なるメソッドが呼び出されます。 save()メソッドを呼び出すために一時的なオブジェクトを渡すと、それを呼び出すために無料のオブジェクトを渡す場合
更新()メソッド。着信永続オブジェクトを返します。したがって、オブジェクトを渡すだけで、saveorupdate()メソッドを渡す必要があるたびに、渡されたオブジェクト状態の状態を自動的に判断し、処理方法を動的に呼び出します。
この方法は、着信オブジェクトの状態をどのように決定しますか?次の条件のいずれかが満たされると、それは一時的な状態です。
(1)Javaオブジェクトのoidはnullです。つまり、オブジェクトがインスタンス化されていないことを意味します。たとえそれがインスタンス化されたとしても、それは削除され、自由状態が削除された後に一時的な状態になるオブジェクトです。この場合、オブジェクトは一時的な状態です。
(2)Javaオブジェクトにバージョン制御があり、バージョン番号がnullの場合、オブジェクトのバージョン番号がないことを意味します。
(3)インターセプターをカスタマイズし、iSunsaved()を呼び出し、値を返すことはtrueです。
4。SessionのLoad()およびget()メソッド
どちらの方法もOIDに基づいており、データベースから永続的なオブジェクトをロードします。永続的なオブジェクトはセッションキャッシュに配置され、永続的なオブジェクトはさまざまなニーズに応じて動作させることができます。
2つの違い:
データベース内のOIDに対応するレコードがない場合、Load()は例外をスローし、get()nullを返します。
5。Session'sDelete()メソッド
delete()名前が示すように、データベースのJavaオブジェクトに対応するレコードを削除するために使用されます。
delete()永続的なオブジェクトが渡された場合、deleteステートメントを組み立ててdeleteを実行します。自由状態のオブジェクトが渡されると、冬眠は最初に自由状態をセッションに関連付け、永続的な状態になり、削除ステートメントを生成します。
削除を実行します。
すべては、セッションキャッシュがクリアされた場合にのみ実行されます。
上記の実行はすべて、レコードに対応するオブジェクトです。
session.delete( "from -customerwhere ...");条件を追加した後に複数のデータを削除するには。
SessionFactory SessionFactory; configuration configuration = new configuration()。configure(); sessionfactory = configuration.buildSessionFactory();セッションsession1 = sessionfactory.opensession();トランザクションtr1 = session1.begintransaction(); // 1。顧客オブジェクトを作成する顧客c1 = new Customer(); c1.setid(new long(1)); c1.setname( "test"); c1.setemail( "[email protected]"); c1.setpassword( "123456"); c1.setAddress( "パラダイス"); // 2。 customer object session1.save(c1)を保持するには、Save()セッションの方法を呼び出します。 tr1.commit(); session1.close(); // 3。自由状態オブジェクトをセッションに関連付け、永続性の後にキャッシュをクリアし、削除ステートメントを実行します。永続的な状態に置いて、直接削除します。セッションsession2 = sessionfactory.opensession();トランザクションtr2 = session2.begintransaction(); session2.delete(c1); tr2.commit(); session2.close();
実行結果、コンソール出力:
Hibernate:顧客から最大(ID)を選択します
Hibernate:顧客への挿入(名前、電子メール、パスワード、電話、住所、セックス、is_married、説明、画像、誕生日、登録_time、id)値(?、?、?、?、?、?、?、?、?、?、?、?
hibernate:id =?
要約します
上記は、冬眠のセッションの追加、削除、変更、および検索操作コードのすべての詳細な説明です。すべての人に役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!