今日、Hibernateを介してデータベースを追加、削除、変更、チェックする方法を学びました。簡単に紹介させてください:
最初に学生クラスを作成します:
パッケージcom.hibernate.model;インポートjavax.persistence.column; import javax.persistence.entity; import javax.persistence.generatedValue; import javax.persistence.id; import javax.persistence.table; @entity @table(age intable; private intecr " Birthplace; @id @generatedValue @column(name = "_id")public int getid(){return id;} public void setid(int id){this.id = id;}@column(name = "_name")public string getname(){return name;} public setname(name name){"_" _ "_ colum getage(){return age;} public void setage(int age){this.age = age;}@column(name = "_birthplace")public string getBirthplace(){return briventplace;} public void setBirthplace(string birthplace){this.birthplace = hirdplace;}}}}次に、ジュニットテストケースのタイプのティーチラートを作成します。
session.save()メソッドについて最初に話しましょう。つまり、追加してください。
パッケージcom.hibernate.model; Import import org.hibernate.query; import org.hibernate.session; import org.hibernate.sessionfactory; Import org.hibernate.cfg.annotationConfiguration; Import org.junit.afterclass; Import org.junit.junit.beforeclecless.beforecless.junit.junit.junit.beforeclass.junit。 Static SessionFactory SF = null; @beforeclass public static void beforeclass(){try {sf = new annotationConfiguration()。configure()。buildsessionfactory(); //ここで例外を取得するのが最善です。 void testsave(){// Teacher t = new Teacher(); T.Setage(23); T.SetName( "Moluo"); T.SetBirthPlace( "Huangshan"); Session Session = sf.getCurrents(); Session.BeginTransaction(); Session.save.save.save(t); session.gettransaction(); arthlass(){sf.close();}}明るい結果:
session.delete()メソッドについて話しましょう。つまり、削除:
@test public void testdelete(){// delete teacher t = new Teacher(); t.setid(2); session session = sf.getCurrentssession(); session.begintransaction(); session.delete(t); session.getTransaction()。コミット();}明るい結果:
次に、session.get()に移動します。つまり、確認してください。
@test public void testget(){//セッションセッション= sf.getCurrentsession(); session.begintransaction();教師t =(教師)session.get(Teacher.class、1); system.out.println( "name:"+t.getname()); session.getTransaction()。commive(); }明るい結果:
hibernate:column1_1_0_としてteacher0 _._ idを選択し、column2_1_0_としてcolumn0 _._年齢を選択します。名前:Moluo
別のクエリ方法を取りましょう:session.load():
@test public void testload(){//セッションセッション= sf.getCurrentsession(); session.begintransaction();教師t =(教師)session.load(teacher.class、1); system.out.println( "name:"+t.getname()); session.getTransaction()。commive(); }明るい結果:
hibernate:column1_1_0_としてteacher0 _._ idを選択し、column2_1_0_としてcolumn0 _._年齢を選択します。名前:Moluo
ここでは、これら2つのクエリの違いを説明します。まず、クエリになるオブジェクトが存在しない場合、返された情報は異なります。取得メソッドが返されます:java.lang.nullpointerexception
負荷方法は、org.hibernate.objectnotfoundexception:norowwiththegivenidentifierexistsを返します
第二に、ロードはプロキシオブジェクトを返し、SQLステートメントが実際に使用されると発行されます。さらに、遅滞なくデータベースからデータを直接取得します。
最後に、最も一般的に使用される更新方法について話し、HQLステートメントを使用して更新しましょう。
@test public void testupdate(){//セッションセッション= sf.getCurrentsession(); session.begintransaction(); string url = "update teacher t set t.birthplace = 'anhui' where id = 1"; //ここの教師はテーブル名ではなくオブジェクト名でなければならないことに注意してください。tはオブジェクトクエリq = session.createquery(url)のエイリアスです。 //ここにインポートされているパッケージは次のとおりです。Importorg.hibernate.query; Q.ExeCuteUpDate(); session.getTransaction()。commive(); }明るい結果:
アップデートを通じて、モロの故郷はファンシャンからアンフイに更新されました...
実際、session.update()の更新方法がありますが、この更新方法はこの更新方法です。列の一部のみを一度に更新する場合、この更新メソッドはすべての列を更新しますが、これはあまり効率的ではないため、使用することはお勧めしません。もちろん、それらを補う方法もあります。たとえば、XMLを使用している場合、構成ファイルで更新したくない列のプロパティタグにupdate = "false"を設定できます。さらに、構成ファイルのクラスの後に動的更新を設定することもできます:dynamic-update = "true";もちろん、注釈を使用している場合は、@column(update = "false")を設定できます。実際、これらは柔軟ではなく、HQLを使用することが最適なため、HQLアップデートコードのみがここに投稿されています。
要約します
上記は、セッションを通じて操作を追加、削除、変更、検索するHibernateの例の分析に関するこの記事のすべての内容です。私はそれが誰にでも役立つことを願っています。興味のある友達はこのサイトを参照できます。
Hibernateでのセッションについてすぐに学びます
Hibernate属性レベルの注釈インスタンスコード
Hibernateはhbm.xmlを使用して、マッピング関係分析を構成します
欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!