每日一得

          不求多得,只求一得 about java,hibernate,spring,design,database,Ror,ruby,快速開發
          最近關心的內容:SSH,seam,flex,敏捷,TDD
          本站的官方站點是:顛覆軟件

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            220 隨筆 :: 9 文章 :: 421 評論 :: 0 Trackbacks
          剛才看了下<精通hibernate>,感覺關于映射關系,尤其是一對多,多對一,多對多關系應該是核心的東西,記錄下.

          業務邏輯:一個客戶(Customer)對應多個訂單(Order)

          方式一: 雙向一對多

          PO:
          Customer:


          Order:

          配置文件

          Customer.hbm.xml:
          xml

          Order.hbm.xml:
          xml

          測試類 CustomerTest.java
          package net.foxlog.prj.business;

          import net.sf.hibernate.Session;
          import net.foxlog.prj.dao.DBUtil;
          import net.sf.hibernate.Transaction;
          import java.util.HashSet;

          public class CustomerTest {
            
          public CustomerTest() {
            }
            
          public static void test(){
              
          try{
                
          new CustomerTest().saveCustomerAndOrderWithCascade();
              }
          catch(Exception ex){
                ex.printStackTrace();
              }
            }
            
            
          //保存級聯信息 客戶-訂單
            public void saveCustomerAndOrderWithCascade() throws Exception{
              Session session 
          = DBUtil.currentSession();
              Transaction tx 
          = null;
              
          try{
                tx 
          = session.beginTransaction();
                Customer custmer 
          = new Customer("Jack",new HashSet());
                Order order 
          = new Order();
                order.setCustomer(custmer);
                order.setOrderNumber(
          "JackOrder001");
                custmer.getOrders().add(order);
                session.save(custmer);
                tx.commit();
                
              }
          catch(Exception ex){
                
              }
            }
          }



          方式二: 單項多對一

          即在Cutomer中沒有Order的信息(PO和xml文件),在Order中設置Customer信息(同上)
          保存客戶和訂單信息代碼如下:

          tx = session.beginTransaction();

                Customer customer
          =new Customer("Jack");
                Order order1
          =new Order("Jack_Order001",customer);
                Order order2
          =new Order("Jack_Order002",customer);

                session.save(order1);
                session.save(order2);

                tx.commit();

          方法二很少用,不過有時我倒是喜歡用它,因為存儲完全由自己的業務邏輯控制,也是比較方便的,以前的一個項目就是這么用,表之間的關系基本沒有,相關聯的信息完全自己當作一個個獨立的表進行插入
          posted on 2006-02-17 21:20 Alex 閱讀(3096) 評論(3)  編輯  收藏 所屬分類: java

          評論

          # re: hibernate配置一對多映射關系 2008-03-29 10:08 游客
          忽悠人  回復  更多評論
            

          # re: hibernate配置一對多映射關系 2008-11-28 17:03 jackie
          是在忽悠人啊  回復  更多評論
            

          # re: hibernate配置一對多映射關系 2013-03-14 17:17 鱷魚的眼淚
          忽悠人@jackie
            回復  更多評論
            

          主站蜘蛛池模板: 贵定县| 永仁县| 岳普湖县| 平潭县| 台州市| 高淳县| 石景山区| 汉阴县| 海伦市| 八宿县| 全州县| 蛟河市| 九寨沟县| 登封市| 偃师市| 广水市| 勐海县| 武强县| 当阳市| 文昌市| 桐梓县| 盘锦市| 宜宾市| 大渡口区| 嵩明县| 策勒县| 大洼县| 泸水县| 澄江县| 平远县| 余干县| 三河市| 红河县| 交口县| 永川市| 平山县| 广安市| 荔波县| 亚东县| 景谷| 蓬安县|