国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

關(guān)于OJB和Hibernate框架的評(píng)議

2019-11-18 12:57:44
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  OJB和Hibernate是我用過(guò)兩個(gè)O/R Mapping框架,附帶說(shuō)一句,我用OJB比Hibernate的時(shí)間長(zhǎng)多了,因此對(duì)Hibernate的了解不深,因此有一些看法可能會(huì)有誤。
  
  備注: OJB網(wǎng)址 http://jakarta.apache.org/ojb
  
  OJB和Hibernate的機(jī)制基本上是樣,沒(méi)有多的區(qū)別,包括代理,約束,引用等, 都可以使用類(lèi)SQL語(yǔ)句,OJB用OQL,Hibernate用HQL,也可以設(shè)置查詢(xún)類(lèi),如,
  
  不過(guò) 我兩者在一個(gè)很大的設(shè)計(jì)的區(qū)別。
  
  就是說(shuō)數(shù)據(jù)填充上的設(shè)計(jì)
  
  如
  
  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來(lái)設(shè)置name這個(gè)字段,有些象user.name=...
  
  將對(duì)象中的數(shù)據(jù)保存到數(shù)據(jù)庫(kù)時(shí),也是這樣
  
  Hiberate用下列描述符
  
  Hibernate的引擎將數(shù)據(jù)庫(kù)填充到對(duì)象時(shí)是使用Reflection來(lái)設(shè)置name這個(gè)屬性,即調(diào)用user.setName(...);
  
  將對(duì)象中的數(shù)據(jù)保存到數(shù)據(jù)庫(kù)時(shí),調(diào)用user.getName();
  
  (我一向把Property看作帶操作的field.)
  
  想來(lái) 設(shè)計(jì)者分別采用這種方式,應(yīng)該有各自的理由,但我個(gè)人還是比較喜歡OJB的方式。
  
  原因如下
  
  實(shí)體類(lèi)應(yīng)該只代表數(shù)據(jù)庫(kù),通過(guò)field就可以,使用Property進(jìn)行訪(fǎng)問(wèn),只是避免以后可能的改動(dòng),或者實(shí)體類(lèi)不是單純的實(shí)體類(lèi),可以帶些簡(jiǎn)單的業(yè)務(wù)模型意義里面。因此用field可能會(huì)更好一些。
  
  比如說(shuō) 用OJB的話(huà)類(lèi)可能象這樣,getState返回String,給用戶(hù)查看,如"凍結(jié)帳戶(hù)","新注冊(cè)用戶(hù)"
  
  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 ...
  }
  }
  
  用Hibernate的類(lèi)象這樣
  
  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 void getState()
  {
  return state;
  }
  
  public String getStateString()
  {
  if(...)
  return ...;
  else
  return ...
  }
  }
  
  我總是覺(jué)得OJB的看起來(lái)更順眼一些
  
  當(dāng)然我不是說(shuō)Hibernate不好
  
  不過(guò)在一般的中小型程序中,很少有純粹的實(shí)體類(lèi),多多少少都帶了一點(diǎn)業(yè)務(wù),或者因?yàn)槠渌颍缟厦娴脑颍琌JB可能會(huì)有點(diǎn)優(yōu)秀。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 饶平县| 远安县| 光泽县| 安宁市| 砀山县| 宁武县| 常山县| 平武县| 亚东县| 宁蒗| 稻城县| 永寿县| 山阴县| 五家渠市| 桃园县| 河间市| 南澳县| 济源市| 大同市| 衡阳市| 麻江县| 三亚市| 新宁县| 阜阳市| 阳泉市| 聂拉木县| 崇州市| 汝州市| 阿荣旗| 铜川市| 庆安县| 昌宁县| 保定市| 隆尧县| 桐庐县| 重庆市| 临漳县| 镇原县| 宜宾市| 桂东县| 凤阳县|