熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

開源技術:hibernate點滴

2013-11-23 20:16:11  來源: Java開源技術 
這幾天在學習hibernate把一些碰到的問題給寫下來以後避免犯重復的問題
在進行Query類操作的時候session需在最後關閉
例如
try {
   Query query = sessioncreateQuery(sql);
    list = querylist();
   mit();   
  } catch (HibernateException e) {
   eprintStackTrace();
  }
對list操作的一些代碼
sessionclose();
 
經常看到網上會這樣寫
try {
   Query query = sessioncreateQuery(sql);
    list = querylist();
   mit();   
   sessionclose()
  } catch (HibernateException e) {
   eprintStackTrace();
  }
結果他沒有對list進行過多的操作可能是我理解的角度有問題然後我也用了網上的例子然後對list進行操作結果在對list進行操作的時候會忽然中斷掉原來是session的問題只要把sessionclose()放到list操作代碼後面就不會出現中斷的問題
幾個高度概括的操作
public boolean update(Object o){
  try{
   sessionupdate(o);
   mit();
   sessionclose();
  }catch(HibernateException e){
   eprintStackTrace();
   return false;
  }
  return true;
 }
 
 public boolean delete(Object o){
  try{
   sessiondelete(o);
   mit();
   sessionclose();
  }catch(HibernateException e){
   eprintStackTrace();
   return false;
  }
  return true;
 }
直接對session進行操作可能會產生問題目前還沒有學習事務處理先擱著吧
一對一關聯操作
一對一關系有兩種形式一種是共享主鍵方式另一種是惟一外鍵方式最常用的我想應該是唯一外鍵方式了吧
簡單例子
表一 employee(idnamedeptId)(deptId是外鍵)
表二 dept(idname)
我們需要對employee對應的hbm文件進行修改
把原來的
<property name=deptId column=deptId />
改成
<manytoone name=dept class=hibboDept column=deptId unique=true/>
然後在po裡面也要進行修改
把deptId屬性改成dept對象這樣就可以了
然後如果要查詢員工號為的部門名稱那麼我們就可以通過employeegetDept()getName()進行查詢
如下是查詢所有的員工信息
sql = from Employee employee
  try {
   Query query = sessioncreateQuery(sql);
   list = querylist();
   mit();   
  } catch (HibernateException e) {
   eprintStackTrace();
  }
如果要查詢相對應的員工號的員工那麼我們可以通過employeegetDept()getName()進行查詢
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28210.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.