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

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

《我的 O/R Mapping 之旅》勘誤及補(bǔ)充

2019-11-18 11:31:23
字體:
供稿:網(wǎng)友

《我的 O/R Mapping 之旅(二)》,有一段對(duì) People.hbm.xml 的分析,談到為什么使用 inverse=”true”:

在車輛治理系統(tǒng)中,代表著一個(gè)擁有者擁有多臺(tái)車輛。以 java.util.Set 類型表示。 inverse 用于標(biāo)識(shí)雙向關(guān)聯(lián)中的被動(dòng)方一端。inverse=false 的一方(主控方)負(fù)責(zé)維護(hù)關(guān)聯(lián)關(guān)系;在車輛治理系統(tǒng)中, AutoInfo 作為主控方,應(yīng)該把它設(shè)為“true”。這就好比你(被動(dòng)方 one)在某個(gè)聚會(huì)上散發(fā)了許多名片,但是有可能你不清楚接收者(主動(dòng)方 many)的具體背景;這個(gè)不要緊,接收者在必要的時(shí)候會(huì)和你聯(lián)系就是了(主動(dòng)維護(hù)關(guān)系)。
紅色標(biāo)識(shí)的句子輕易讓人產(chǎn)生歧異,似乎是在說把 AtuoInfo 設(shè)置成“true”了。應(yīng)改為:

在車輛治理系統(tǒng)中,AtuoInfo 作為主控方,應(yīng)該在 People 中設(shè)置 inverse =“true”。
沿著思路往下走,你也許會(huì)問:什么才叫“主動(dòng)維護(hù)關(guān)系”?不妨看看下面的代碼(摘自《我的 O/R Mapping 之旅(三)》):

AutoInfo ai=new AutoInfo();
People people=new People();
public void DoTest() {
   try {
      Configuration cfg = new Configuration().configure();
      sessionFactory sessions = cfg.buildSessionFactory();
      Session session = sessions.openSession();
      Transaction tx = session.beginTransaction();
   
      ai.setLicensePlate("A00001");
      ai.setOwnerNo(people);
      people.setAddress("中國(guó)");
      people.setName("張三");
      people.addToAutoInfoSet(ai);
      session.save(people);
      tx.commit();
      session.close();
   } catch (Exception e) {
      System.out.PRintln(e);
   }
}


把“ai.setOwnerNo(people)”注解了試試,由于 AutoInfo 沒有主動(dòng)維護(hù)關(guān)系,導(dǎo)致 AUTO_INFO 表中 OWNER_NO 字段為“Null”。自然 AutoInfo 與 Poople 就不存在任何聯(lián)系了。

人類的求知欲很強(qiáng)烈!
為什么非要用 AutoInfo 作為主控方?People 作主控方不行?好吧,為 People.hbm.xml 刪除inverse=”true”,再運(yùn)行以上程序,其實(shí)也能保存,只是多了一條SQL:“update auto_info set OWNER_NO=? where AUTO_ID=?”,這就是 AutoInfo 被動(dòng)地修改和 People 的聯(lián)系。多執(zhí)行一次 SQL 意味著多了一些開銷,這是對(duì)性能不利的!


《我的 O/R Mapping 之旅(三)》,有一段對(duì)張三第二次買車的程序和描述:

 AutoInfo ai = new AutoInfo();
 People people = new People();
 public void DoTest() {
  try {
      Configuration cfg = new Configuration().configure();
      SessionFactory sessions = cfg.buildSessionFactory();
      Session session = sessions.openSession();
      Transaction tx = session.beginTransaction();
      people =
       (People) session
        .find(
         "from People where OWNER_ID=1")


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 棋牌| 新乡县| 启东市| 佛冈县| 乐清市| 万山特区| 景东| 萨迦县| 兴城市| 漠河县| 霍城县| 广州市| 开化县| 沂南县| 潮安县| 巴楚县| 满洲里市| 博罗县| 松桃| 图们市| 海林市| 柳州市| 如皋市| 遂川县| 田林县| 萍乡市| 缙云县| 咸丰县| 凌源市| 石景山区| 安泽县| 宁国市| 永仁县| 霞浦县| 丘北县| 潞城市| 乐昌市| 嵊州市| 灵石县| 大荔县| 岫岩|