OJB Hibernate經(jīng)驗總結(jié)
OJB Hibernate還是比較常用的,于是我研究了一下OJB Hibernate,在這里拿出來和大家分享一下,希望對大家有用。
OJB Hibernate是我用過兩個O/R Mapping框架,附帶說一句,我用OJB比Hibernate的時間長多了,因此對Hibernate的了解不深,因此有一些看法可能會有誤。
OJB Hibernate的機(jī)制基本上是樣,沒有多的區(qū)別,包括代理,約束,引用等, 都可以使用類SQL語句,OJB用OQL,Hibernate用HQL,也可以設(shè)置查詢類,不過 我兩者在一個很大的設(shè)計的區(qū)別。
- class User
- {
- private String name;
- public void setName(String r_Name)
- {
- name=r_Name;
- }
- public String getName()
- {
- return name;
- }
- }
OJB用下列描述符
OJB的引擎將數(shù)據(jù)庫填充到對象時是使用Reflection來設(shè)置name這個字段,有些象user.name=...。將對象中的數(shù)據(jù)保存到數(shù)據(jù)庫時,也是這樣
Hiberate用下列描述符
Hibernate的引擎將數(shù)據(jù)庫填充到對象時是使用Reflection來設(shè)置name這個屬性,即調(diào)用user.setName(...);將對象中的數(shù)據(jù)保存到數(shù)據(jù)庫時,調(diào)用user.getName();(我一向把Property看作帶操作的field.)想來 設(shè)計者分別采用這種方式,應(yīng)該有各自的理由,但我個人還是比較喜歡OJB的方式。
實體類應(yīng)該只代表數(shù)據(jù)庫,通過field就可以,使用Property進(jìn)行訪問,只是避免以后可能的改動,或者實體類不是單純的實體類,可以帶些簡單的業(yè)務(wù)模型意義里面。因此用field可能會更好一些。
比如說 用OJB的話類可能象這樣,getState返回String,給用戶查看,如"凍結(jié)帳戶","新注冊用戶"
- class User
- {
- private String name;
- private int state;
- public void setName(String r_Name)
- {
- name=r_Name;
- }
- public String getName()
- {
- return name;
- }
- public void setState(int r_State)
- {
- state=r_State;
- }
- public String getState()
- {
- if(...)
- return ...;
- else
- return ...
- }
- }
【編輯推薦】


















