读书人

稳扎稳打Hibernate全攻略(四)剪不断

发布时间: 2013-09-07 14:12:45 作者: rapoo

步步为营Hibernate全攻略(四)剪不断理还乱之:复合主键 && 组合映射

一:复合主键

复合主键即两个或多个字段联合起来作为主键,它的通常做法是将主键相关字段抽取出来放到一个单独的类中,但是这样的类是有要求的:

1. 必须实现序列化接口

2. 必须覆盖equals和hashCode方法

以会计核算期中核算年和核算月做主键为例,将这两个主键相关字段放到FiscalYearPeriodPK类中,代码如下:

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping>      <!-- User.hbm.xml文件 --><class name="com.bjpowernode.hibernate.User" table="t_user"><id name="id"><generator class="native"/></id><property name="name"/><component name="userContact"><property name="email"/><property name="address"/><property name="zipCode"/><property name="contactTel"/></component></class>    <!-- Employee.hbm.xml文件 -->    <class name="com.bjpowernode.hibernate.Employee" table="t_employee">        <id name="id">            <generator class="native"/>        </id>        <property name="name"/>        <component name="employeeContact">            <property name="email"/>            <property name="address"/>            <property name="zipCode"/>            <property name="contactTel"/>        </component>    </class> </hibernate-mapping>

通过上述配置同样可以达到每个类持有六个成员变量的效果,但是使用组合映射可以实现对象模型的细粒度划分,复用率高,含义明确,另外如果想要扩展属性的只要在抽取的类中进行扩展就可以,更加灵活。


读书人网 >其他相关

热点推荐