ホームページ > Java > &#&チュートリアル > CRUD 操作を完了するための Hibernate のコードの詳細な説明

CRUD 操作を完了するための Hibernate のコードの詳細な説明

Y2J
リリース: 2017-05-13 11:06:41
オリジナル
1250 人が閲覧しました

この記事では主にデータベースの削除、検索、更新操作に関する Hibernate のサンプル コードを紹介します。興味のある方は参考にしてください。このセクションでは、削除、クエリ、改訂などの Hibernate の他の操作について説明します。


Hibernate のデータ削除操作


は、User テーブル内のデータの一部を削除します。これには、User テーブルの主キー ID 値が必要です。まず、ID 値に従ってデータベースにクエリを実行し、対応する

オブジェクト

を見つけます。使用できるメソッドは2つあり、1つはsessionのgetメソッド、もう1つはsessionのloadメソッドです。
Session の Get メソッド: このメソッドを呼び出すと、

Object オブジェクト

が返されます。それからそれを キャスト します。 Useruser = (User)session.get(User.class,” 402881e5441c035e01441c0360510003”); id 値を渡してデータ内に対応する結果が見つからない場合、get メソッドは null 値を返します。
違い: get メソッドはロードされるとすぐにクエリする SQL ステートメントを発行しますが、load メソッドは実行時にクエリする SQL ステートメントをすぐに発行せず、プロキシ ユーザーは生成されますが、実際のユーザーは生成されません。ユーザーが生成されます。このユーザーを実際に使用するときに、実際のユーザーがロードされます。 Load() は遅延読み込みをサポートしますが、Get() はサポートしません。ロードされたオブジェクトが存在しない場合、Get は null オブジェクトを返し、ロードされたオブジェクトが存在しない場合、Load() は ObjectNotFoundException をスローします。


Session の Load メソッド: このメソッドも呼び出され、Object オブジェクトが返され、強制変換が実行されます。


次に、get またはload を通じてユーザーテーブル ID に対応するオブジェクトをロードし、セッションの

delete メソッド

を呼び出してオブジェクトを削除し、テーブル内のレコードを削除します。コードは次のとおりです。

最初の削除方法


 publicvoid testDel1()
      {
        Sessionsession =null;
        
        try
        {
         session= HibernateUtils.getSession();
         //开启事务.
         session.beginTransaction();
         //采用load查询不存在的数据,hibernate会抛出object not found exception
         Useruser = (User)session.load(User.class,"402881e5441c035e01441c0360510003");
         
         //删除表中的记录.
         //删除,建议用此种方式删除,先加载再删除.
         session.delete(user);
         
         //提交事务.把内存的改变提交到数据库上.
         session.getTransaction().commit();
         
        }catch(Exception e){
         e.printStackTrace();
         session.getTransaction().rollback();
        }finally{
         HibernateUtils.closeSession(session);
        }
        
      }
ログイン後にコピー

2番目の削除方法は、切り離されたオブジェクトを手動で構築してから削除することです。コードを以下に示します。

 //测试方法以test开头.测试del方法.返回存在的加载的.
      publicvoid testDel2()
      {
        Sessionsession =null;
        
        try
        {
         session= HibernateUtils.getSession();
         //开启事务.
         session.beginTransaction();
         
         //手动构造的Detached对象.
         Useruser =new User();
         user.setId("402881e4441b3d1c01441b3f5dfe0001");
         session.delete(user);
         
         
         //提交事务.把内存的改变提交到数据库上.
         session.getTransaction().commit();
         
        }catch(Exception e){
         e.printStackTrace();
         session.getTransaction().rollback();
        }finally{
         HibernateUtils.closeSession(session);
        }
        
      }
ログイン後にコピー

Hibernate はデータクエリ操作を実行します


一般的なクエリ、コードは次のとおりです。


//查询方法.
 publicvoid testQuery1()
 {
   Sessionsession =null;
   try
   {
    session= HibernateUtils.getSession();
    
    session.beginTransaction();
    //参数是一个字符串,是HQL的查询语句.注意此时的的UserU为大写,为对象的,而不是表的.
    Queryquery = session.createQuery("from User");
    
    //使用List方法.
    ListuserList = query.list();
    //迭代器去迭代.
    for(Iteratoriter=userList.iterator();iter.hasNext();)
    {
      Useruser =(User)iter.next();
      System.out.println("id="+user.getId() + "name="+user.getName());
    }
    
    session.getTransaction().commit();
   }catch(Exception e){
    e.printStackTrace();
    session.getTransaction().rollback();
   }finally{
    HibernateUtils.closeSession(session);
   }
   
 }
ログイン後にコピー

Paging

クエリのコードは次のとおりです。

//分页查询,从什么地方查,查几个;
 publicvoid testQuery2()
 {
   Sessionsession =null;
   try
   {
    session=HibernateUtils.getSession();
    
    session.beginTransaction();
    //参数是一个字符串,是HQL的查询语句.注意此时的的UserU为大写,为对象的,而不是表的.
    Queryquery = session.createQuery("from User");
    //从第一个开始查起.可以设置从第几个查起.
    query.setFirstResult(0);
    //最大条数为两个
    query.setMaxResults(2);
    
    //使用List方法.
    ListuserList = query.list();
    //迭代器去迭代.
    for(Iteratoriter=userList.iterator();iter.hasNext();)
    {
      Useruser =(User)iter.next();
      System.out.println("id="+user.getId() + "name="+user.getName());
    }
    
    session.getTransaction().commit();
   }catch(Exception e){
    e.printStackTrace();
    session.getTransaction().rollback();
   }finally{
    HibernateUtils.closeSession(session);
   }
   
 }
ログイン後にコピー

Hibernateはデータ更新操作を実行します


デタッチされたオブジェクトを手動で構築し、セッションのupdate()メソッドを呼び出します。 コードは次のとおりです。


      //测试方法以test开头.测试update方法.返回存在的加载的.
      publicvoid testUpdate1()
      {
        Sessionsession =null;
        
        try
        {
         session= HibernateUtils.getSession();
         //开启事务.
         session.beginTransaction();
         //采用load查询不存在的数据,hibernate会抛出object not found exception
         
         //手动构造的Detached对象.
         Useruser =newUser();
         user.setId("402881e5441bfb0601441bfb075b0002");
         user.setName("周六");
         
         session.update(user);
         
         
         //提交事务.把内存的改变提交到数据库上.
         session.getTransaction().commit();
         
        }catch(Exception e){
         e.printStackTrace();
         session.getTransaction().rollback();
        }finally{
         HibernateUtils.closeSession(session);
        }
        
      }
ログイン後にコピー

オブジェクトをロードし、セッションの update() メソッドを呼び出し、オブジェクトが永続的な

状態

にあるときに更新操作を実行します。 コードは次のとおりです。


【関連する推奨事項】

1. 特別な推奨事項:

「php Programmer Toolbox」V0.1 バージョンのダウンロード

2.

Java の無料ビデオチュートリアル

3.

以上がCRUD 操作を完了するための Hibernate のコードの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート