每日一得

不求多得,只求一得 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 阅读(3086) 评论(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
  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: