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