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