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 中添加实体
- 下一篇: 通过hibernate去调用存储过程
