2005-3-3 學習hibernate
在學習hibernate中,我發現對於sql server2000中的資料庫子增欄位,在配置檔案使用下列方法實現
:這裡主要是:identity:代表由sql server2000資料庫自己提供子增欄位.如果要hibernate自己提供,則用
increment關鍵字來實現
如果表中的主鍵用字串型別:可以用hibernate自己提供的方法實現主鍵唯一:
使用的是uuid.hex策略
重要的知識點:
1.如果有部門表,有員工表,員工表中有dep_id,則表部門類和員工類是one-to-many的關係:
可以使用: ( 在部門類department中使用下列)
department類:
/** 部門的所有員工 */
private set staffs = new treeset();
xml的檔案:
如果是list,需要用索引,具體其中的含義,不是很明白.待以後研究
2. 如果部門要有乙個負責人,即部門表(tb_department)中有乙個字段:staff_id.
那麼表示部門和負責人之間的關係是many-to-one的關係
department類:
/** 部門負責人id */
private staff staff;
xml 檔案
2005-3-4 學習hibernate
3.多對多關係,一般我們是做乙個中間關聯表.我用角色和許可權做了個例子,
right(id,name) role(id,name) 中間表:tb_role_right(role_id,right_id)
right類中有乙個role的集合:private set roles=new treeset();
role類中也有乙個right的集合:private set rights=new treeset();
則兩者是明顯的多對多關係.使用many-to-many來實現;
xml檔案中
right.hbm.xml:如下:
role.hbm.xml檔案中類似:
2005-3-5 學習hibernate
4.幾個值得注意的問題:
a)在xml?對映檔案中,寫類的名字時一定用類的全名:即:包+類名如:(hbp.sys.data.staff),這個錯誤使我費了半天勁.:(
b)我在寫實現基本dao操作時,寫了
session.delete("from right as right where right.id="+id);
程式死活報錯,我折騰了半天,跟蹤到底,才恍然大悟,hibernate在解析sql語句的時候把
其中的right,當成了資料庫中的右連線("保留字"),唉,這種關鍵字,不能隨便用啊,:)
2005-3-7
5.hibernate中hql語言的查詢根據你的sql的不同而返回不同的物件型別.
如果你使用session.find(string hql)
一般會返回乙個list,如:from staff staff;返回的是包含所有的員工物件的集合
如你的hql為:select count(*) from staff staff;則返回的是乙個integer物件
如果你使用的hql為:select count(distinct staff.name),count(*) from staff staff;則返回的是乙個object
即object,需要先把他轉換成object,然後在取[0],[1].
這種設計我不知道hibernate是如何處理的,感覺既好也不好.好的是可以使用乙個find獲得任意查詢
不好在於根據hql來處理返回結果,容易出錯.
Hibernate學習筆記一
應用程式結構 表現層,業務邏輯層,持久層,資料庫 業務邏輯層處理使用的實體物件由持久層提供。持久化就是把資料儲存到可永久儲存的儲存裝置中,如關係型資料庫。對於業務邏輯層,持久層返回服務業務層需要的實體模型。對於資料庫,把實體物件轉換為關聯式資料庫儲存的形式與資料庫互動。持久層遮蔽了資料庫平台的變化對...
Delphi學習手記
本人一直使用c buider,並開發了乙個 商關係管理 的三層應用系統.現公司要求使用delphi,沒辦法只有重新學習pascal語言.便記錄學習的過程,那就叫delphi學習手記吧.1 好象inherit form不行,如果想覆蓋上邊的方法,重寫事件或函式,竟然報錯,不懂先,是不是inherit不...
python學習手記
1.list由小到大排序用list.sort 由大到小排序用list.sort reverse true 2.list逆序用list.reverse 3.list 0 代表list中的第乙個元素,中括號一般用於表示元素位置,表示元素 4.dict中沒有排序的說法,keys用於表示位置,應用時用 6....