この記事では主にデータベースの削除、検索、更新操作に関する Hibernate のサンプル コードを紹介します。興味のある方は参考にしてください。このセクションでは、削除、クエリ、改訂などの Hibernate の他の操作について説明します。
は、User テーブル内のデータの一部を削除します。これには、User テーブルの主キー ID 値が必要です。まず、ID 値に従ってデータベースにクエリを実行し、対応する
を見つけます。使用できるメソッドは2つあり、1つはsessionのgetメソッド、もう1つはsessionのloadメソッドです。
Session の Get メソッド: このメソッドを呼び出すと、
が返されます。それからそれを キャスト します。 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 に対応するオブジェクトをロードし、セッションの
を呼び出してオブジェクトを削除し、テーブル内のレコードを削除します。コードは次のとおりです。
最初の削除方法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); } }
//测试方法以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); } }
一般的なクエリ、コードは次のとおりです。
//查询方法. 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); } }
//分页查询,从什么地方查,查几个; 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); } }
デタッチされたオブジェクトを手動で構築し、セッションの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); } }
にあるときに更新操作を実行します。 コードは次のとおりです。
【関連する推奨事項】
1. 特別な推奨事項:
「php Programmer Toolbox」V0.1 バージョンのダウンロードJava の無料ビデオチュートリアル以上がCRUD 操作を完了するための Hibernate のコードの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。