hibernate3学习笔记(十八)|关系映射:一对多 - 编程入门网
session.close();39. sessionFactory.close();40. }41.}
hibernate3学习笔记(十八)|关系映射:一对多(6)时间:2011-02-03或者反过来由一对多的方式来维持关系: 1.package com.hb3.pack_20;2.3.import java.util.HashSet;4. 5.import org.hibernate.Session;6.import org.hibernate.SessionFactory;7.import org.hibernate.Transaction;8.import org.hibernate.cfg.Configuration;9. 10.import com.hb3.pack_20.model.Room;11.import com.hb3.pack_20.model.User;12. 13.public class BusinessService {14. 15. public static void main(String[] args) {16.17. Configuration config = new Configuration().configure();18. SessionFactory sessionFactory = config.buildSessionFactory();19. Session session = sessionFactory.openSession();20. 21.22. User user1 = new User();23. user1.setName("chenyan");24.25. User user2 = new User();26. user2.setName("shenbin");27. 28. Room room1 = new Room();29. room1.setUsers(new HashSet<User>());30. room1.setAddress("NTU-M8-419");31. room1.addUser(user1);32. room1.addUser(user2);33.34. Transaction tx = session.beginTransaction();35. session.save(room1);36. tx.commit();37. 38.39. session.close();40. sessionFactory.close();41. }42.} 但是一对多的方式来维持的话,先看一下生成的SQL文:
hibernate3学习笔记(十八)|关系映射:一对多(7)时间:2011-02-03可见,如果把一的一方Room作为主控方,多的一方User因为不知道Room的room_id是多少,所以必须等Room和User存储之后再更新room_id。所以在多对一,一对多形成双向关联的时候,应该把控制权交给多的一方,这样比较有效率。理由很简单,就像在公司里一样,老板记住所有员工的名字来得快,还是每个员工记住老板的名字来得快。 基于这个理由,我们对Room.hbm.xml再稍作修改: 1.<?xml version="1.0" encoding="utf-8"?>2.<!DOCTYPE hibernate-mapping3. PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"4. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 5. 6.<hibernate-mapping> 7. 8. <class name="com.hb3.pack_20.model.Room" table="room">9.10. <id name="id" column="id">11. <generator class="native"/>12. </id>13.14. <property name="address"15. column="address"16. type="java.lang.String"/>17.18. <set name="users" table="user" cascade="save-update" inverse="true"> 19. <key column="room_id"/> 20. <one-to-many class="com.hb3.pack_20.model.User"/> 21. |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |