Hibernate插入、查询、删除操作 HQL or SQL
?http://adoze.bokee.com/viewdiary.25672393.html
| ? | Hibernate的所有的操作都是通過Session完成的. 基本步驟如下: 1:通過配置文件得到SessionFactory: ???? SessionFactory sessionFactory=new Configuration().configure().buildSessionFactory(); 2:通過SessionFactory 得到一個Session ???? Session session=sessionFactory.openSession(); 3:通過session進行插入,刪除,修改以及查詢. ??? 插入例子:(1)聲明一個事務;(2)Session執行save()操作;(3)事務提交;(4)關閉Session,可選.??????????????????? ???????????? public void update(Person p){ ?? Transaction tran=session.beginTransaction(); ?? session.update(p); ?? tran.commit(); //?? session.close(); ?? } ??? 刪除例子(主鍵刪除,推薦使用):(1) 聲明刪除的SQl語句;(2)創建session的Query對象;(3)設置Query對象的參數;(4)執行Query的executeUpdate()操作;(5)Session事務提交 ???? public void delete(int id){ ?? String hql="delete Person as p where p.id=?"; ?? Query query=session.createQuery(hql); ?? query.setInteger(0,id); ?? query.executeUpdate(); ?? session.beginTransaction().commit(); ??????????? } ?? 刪除例子(對象刪除):(1)聲明一個事務;(2)Session執行delete()操作;(3)事務提交;(4)關閉Session,可選. ?? Transaction tran = session.beginTransaction(); ?? session.delete(p);?? ?? session.close();?? ?? 查詢例子:(跟刪除差不多) 查詢語句不需要事務提交 (1) 聲明刪除的SQl語句;(2)創建session的Query對象;(3)設置Query對象的參數; ?? public Persion queryById(int id){ ?? String hql="from Person as p where p.id=?"; ?? Query query=session.createQuery(); ?? List rsList=query.list(); ?? iterator it=rsList.iterator(); ?? Person person=null; ?? while(it.haseNext()){ ???? person=(Person)it.next(); ??? } ?? return person; ?? } 這兩種情況都是允許的,hibernate都會發送一條delete語句給數據庫。 delete執行之后,如果調用了session.load(), 又可以分為兩種情況: 2)在session.flush()之后,如: ?????????? tx.beginTransaction(); delete執行之后,如果調用了session.save(obj): delete執行之后,如果對obj對象屬性的修改,tx.commit()時不會進行dirtyChecking。 |
?
=====
public ? Collection ? findBySQL(String ? sql){
? ? ? Session ? session ? = ? null;
? ? ? Transaction ? tran ? = ? null;
? ? ? Collection ? list ? = ? null;
? ? ? try ? {
? ? ? ? ? session ? = ? sessionFactory.openSession();
? ? ? ? ? tran ? = ? session.beginTransaction();
? ? ? ? ? SQLQuery ? sq ? = ? session.createSQLQuery(sql);
? ? ? ? ? sq.addEntity(Student.class);
? ? ? ? ? list ? = ? sq.list();
? ? ? ? ? tran.commit();
? ? ? } ? catch ? (HibernateException ? e) ? {
? ? ? ? ? e.printStackTrace();
? ? ? ? ? tran.rollback();
? ? ? }finally{
? ? ? ? ? if(session!=null)
? ? ? ? ? session.close();
? ? ? }
? ? ? return ? list;
}
直接用SqlQuery好像不能直接執行 增 刪 改 操作,不過,我找了一下,下面的方法可以的。
trans = session.beginTransaction();
Connection conn = session.connection();
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.executeUpdate();
stmt.execute();
trans.commit();
總結
以上是生活随笔為你收集整理的Hibernate插入、查询、删除操作 HQL or SQL的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在 XML 中添加实体
- 下一篇: Powerdesigner数据库建模工具