关联映射,将关联关系映射到数据库中,所谓的关联关系在对象模型中就是一个或多个引用。
多对一关联映射原理:在多的一端加入一个外键,指向一的一端。
在多的一端采用如下标签映射:
<many-to-one name="group" column="groupID"/>
Group.java |
publicclass Group { privateintid; private String name; } |
User.java |
publicclass User { privateintid; private String name; private Group group; }
|
Group.hbm.xml |
<hibernate-mapping> <class name="com.xatrans.test.hibernate.vo.Group" table="tbl_group"> <id name="id" length="10"> <generator class="native"/> </id> <property name="name" length="30"/> </class> </hibernate-mapping> |
User.hbm.xml |
<hibernate-mapping> <class name="com.xatrans.test.hibernate.vo.User" table="tbl_user"> <id name="id" length="10"> <generator class="native"/> </id> <property name="name" length="30"/> <many-to-one name="group" column="groupID"/> </class> </hibernate-mapping> |
Test.java |
publicclass Test extends TestCase {
publicvoid testAdd() { Session session = null; try { session = HibernateUtils.getSession(); session.getTransaction().begin();
Group group = new Group(); group.setName("xatrans"); session.save(group);
User user = new User(); user.setName("leiwei"); user.setGroup(group);
User user2 = new User(); user2.setName("ghostboy"); user2.setGroup(group);
session.save(user); session.save(user2);
session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); session.getTransaction().rollback(); } finally { HibernateUtils.closeSession(session); } } } |
* 重要属性cascade(级联)
级联的意思是指两个对象之间的操作联系关系,对一个对象执行了操作之后,对其指定的级联对象也都要需要执行相同的作品。
取值:all,none,save-update,delete
all - 在所有情况下都执行级联操作
none - 代表在所有情况下都不执行级联操作
save-update –保存和更新时执行级联操作
delete-删除时执行级联操作
<many-to-one name="group" column="groupID" cascade="save-update"/>
级联是对象之间的连锁操作,只影响添加、修改、删除。