hibernate 各种映射的配置文件总结
2014-05-28 22:31
337 查看
1.多对一单向映射(User-Group)
Group.hbm.xml文件如下:
2.多对多双向映射(User<-Role)
User.hbm.xml文件如下:
3.多对多单向映射(User<-Role)
在User端使用set 引用role 维持关系,则User.hbm.xml文件同上面的双向一样,只有Role.hbm.xml文件稍微有所小小的不同,比双向更简单。
Role.hbm.xml文件如下:
4.一对一主键双向(Person?-> IdCard)
Person.hbm.xml文件如下:
constrained="true"表示当前主键存在一个约束,person的主键作为外键参照idcard。
5.一对一主键单向(Person--> IdCard)
Person.hbm.xml文件如下相同
Idcard.hbm.xml文件如下:
6.一对一外键单向(Person--> IdCard)
IdCard.hbm.xml文件如下:
7.一对一外键双向(Person<--> IdCard)
Person.hbm.xml文件与单向一样
IdCard.hbm.xml文件如下:
8.一对多单向(Group--> User)
Group.hbm.xml文件如下:
9.一对多双向(Group<--> User)
Group.hbm.xml文件如下:
10.继承映射(Pig和Bird 继承Animal)
--一棵继承树映射成一张表
extends.hbm.xml文件如下:
11.继承映射(Pig和Bird 继承Animal)
--每个具体类映射成一张表
extends.hbm.xml文件如下:
12.继承映射(Pig和Bird 继承Animal)
--每个子类类映射成一张表
extends.hbm.xml文件如下:
<generator class="uuid"/>
</id> 是不能将<generator class="uuid"/> 改写成<generator class="native"/> ,不然会出错。相应的Animal类中的id字段类型也要该为String.
如果在<class name="Animal" table="t_animal"> 中添加Abstract="true"可以使hibernate不生成表t_animal
13. component映射
component.hbm.xml文件如下:
private int id;
private String name;
private Contact contact;它不再是一种引用了
14. Set,Map,Arrary[],List映射
CollectionMapping.hbm.xml文件如下:
Group.hbm.xml文件如下:
<?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> <class name="com.dragon.hibernate.Group" table="t_group"> <id name="id"> <generator class="native"/> </id> <property name="name"/> </class> </hibernate-mapping>User.hbm.xml文件如下:
<?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> <class name="com.dragon.hibernate.User" table="t_user"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <property name="password"/> <property name="createTime"/> <many-to-one name="group" column="groupid"/> </class> </hibernate-mapping>
2.多对多双向映射(User<-Role)
User.hbm.xml文件如下:
<?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> <class name="com.dragon.hibernate.User" table="t_user"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <property name="password"/> <property name="createTime"/> <set name="roles" table="t_user_role"> <key column="userid"/> <many-to-many class="com.dragon.hibernate.Role" column="roleid"/> </set> </class> </hibernate-mapping>Role.hbm.xml文件如下:
<?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> <class name="com.dragon.hibernate.Role" table="t_role"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <set name="users" table="t_user_role"> <key column="roleid"/> <many-to-many class="com.dragon.hibernate.User" column="userid"/> </set> </class> </hibernate-mapping>
3.多对多单向映射(User<-Role)
在User端使用set 引用role 维持关系,则User.hbm.xml文件同上面的双向一样,只有Role.hbm.xml文件稍微有所小小的不同,比双向更简单。
Role.hbm.xml文件如下:
<?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> <class name="com.dragon.hibernate.Role" table="t_role"> <id name="id"> <generator class="native"/> </id> <property name="name"/> </class> </hibernate-mapping>
4.一对一主键双向(Person?-> IdCard)
Person.hbm.xml文件如下:
<?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> <class name="com.dragon.hibernate.Person" table="t_person"> <id name="id"> <generator class="foreign"> <param name="property"> idcard</param> </generator> </id> <property name="name"/> <one-to-one name="idcard" constrained="true"/> </class> </hibernate-mapping>Idcard.hbm.xml文件如下:
<?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> <class name="com.dragon.hibernate.IdCard" table="t_idcard"> <id name="id"> <generator class="native"/> </id> <property name="idno"/> <one-to-one name="person"> </one-to-one> </class> </hibernate-mapping>One-to-one标签指示hibernate如何加载关联对象,默认是根据主键加载;
constrained="true"表示当前主键存在一个约束,person的主键作为外键参照idcard。
5.一对一主键单向(Person--> IdCard)
Person.hbm.xml文件如下相同
Idcard.hbm.xml文件如下:
<?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> <class name="com.dragon.hibernate.IdCard" table="t_idcard"> <id name="id"> <generator class="native"/> </id> <property name="idno"/> </class> </hibernate-mapping>与双向的只是少了这句<one-to-one name="person"> </one-to-one>
6.一对一外键单向(Person--> IdCard)
IdCard.hbm.xml文件如下:
<?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> <class name="com.dragon.hibernate.IdCard" table="t_idcard"> <id name="id"> <generator class="native"/> </id> <property name="idno"/> </class> </hibernate-mapping>Person.hbm.xml文件如下:
<?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> <class name="com.dragon.hibernate.Person" table="t_person"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <many-to-one name="idcard" column="idcardid" unique="true"/> </class> </hibernate-mapping>
7.一对一外键双向(Person<--> IdCard)
Person.hbm.xml文件与单向一样
IdCard.hbm.xml文件如下:
<?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> <class name="com.dragon.hibernate.Person" table="t_person"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <one-to-one name="person" proper-ref=“idcard”/> </class> </hibernate-mapping>
8.一对多单向(Group--> User)
Group.hbm.xml文件如下:
<?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 package="com.dragon.hibernate"> <class name="Group" table="t_group"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <set name="users"> <key column="groupid"/> <one-to-many class="User"/> </set> </class> </hibernate-mapping>User.hbm.xml文件如下:
<?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> <class name="com.dragon.hibernate.User" table="t_user"> <id name="id"> <generator class="native"/> </id> <property name="name"/> </class> </hibernate-mapping>
9.一对多双向(Group<--> User)
Group.hbm.xml文件如下:
<?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 package="com.dragon.hibernate"> <class name="Group" table="t_group"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <set name="users" cascade="all"> <key column="groupid"/> <one-to-many class="User"/> </set> </class> </hibernate-mapping>User.hbm.xml文件如下:
<?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> <class name="com.dragon.hibernate.User" table="t_user"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <many-to-one name="groups" column="groupid"/> </class> </hibernate-mapping>
10.继承映射(Pig和Bird 继承Animal)
--一棵继承树映射成一张表
extends.hbm.xml文件如下:
<?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 package="com.dragon.hibernate"> <class name="Animal" table="t_extends"> <id name="id"> <generator class="native"/> </id> <discriminator column="type" type="string"/> <property name="name"/> <property name="sex"/> <subclass name="Pig" discriminator-value="P"> <property name="weight"/> </subclass> <subclass name="Bird" discriminator-value="B"> <property name="height"/> </subclass> </class> </hibernate-mapping>
11.继承映射(Pig和Bird 继承Animal)
--每个具体类映射成一张表
extends.hbm.xml文件如下:
<?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 package="com.dragon.hibernate"> <class name="Animal" table="t_animal"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <property name="sex"/> <joined-subclass name="Pig" table="t_pig"> <key column="pid"/> <property name="weight"> </property> </joined-subclass> <joined-subclass name="Bird" table="t_bird"> <key column="bid"/> <property name="height"> </property> </joined-subclass> </class> </hibernate-mapping>
12.继承映射(Pig和Bird 继承Animal)
--每个子类类映射成一张表
extends.hbm.xml文件如下:
<?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 package="com.dragon.hibernate"> <class name="Animal" table="t_animal"> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="sex"/> <union-subclass name="Pig" table="t_pig"> <property name="weight"/> </union-subclass> <union-subclass name="Bird" table="t_bird"> <property name="height"/> </union-subclass> </class> </hibernate-mapping>**注释在使用<id name="id">
<generator class="uuid"/>
</id> 是不能将<generator class="uuid"/> 改写成<generator class="native"/> ,不然会出错。相应的Animal类中的id字段类型也要该为String.
如果在<class name="Animal" table="t_animal"> 中添加Abstract="true"可以使hibernate不生成表t_animal
13. component映射
component.hbm.xml文件如下:
<?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> <class name="com.bjsxt.hibernate.User" table="t_user"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <component name="contact"> <property name="email"/> <property name="address"/> <property name="zipCode"/> <property name="contactTel"/> </component> </class> </hibernate-mapping>User类中有以下属性:
private int id;
private String name;
private Contact contact;它不再是一种引用了
14. Set,Map,Arrary[],List映射
CollectionMapping.hbm.xml文件如下:
<?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> <class name="com.bjsxt.hibernate.CollectionMapping" table="t_CollectionMapping"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <set name="setValue" table="t_set_value"> <key column="set_id"/> <element type="string" column="set_value"/> </set> <list name="listValue" table="t_list_value"> <key column="list_id"/> <list-index column="list_index"/> <element type="string" column="list_value"/> </list> <array name="arrayValue" table="t_array_value"> <key column="array_id"/> <list-index column="array_index"/> <element type="string" column="array_value"/> </array> <map name="mapValue" table="t_map_value"> <key column="map_id"/> <map-key type="string" column="map_key"/> <element type="string" column="map_value"/> </map> </class> </hibernate-mapping>
相关文章推荐
- Hibernate相关配置文件、映射文件案例、工具类、总结相关
- SpringMVC_v02中的总结(web项目、java项目中引入Config.properties,加载hibernate映射文件的配置的区别)
- javaEE 用户、部门、角色、权限实体的关系设计与hibernate映射配置文件关系总结
- Hibernate 配置文件与映射文件 总结
- windows2003各种用户配置文件设置总结
- 配置Middlegen-Hibernate和hibernate-extensions以产生hbm映射文件和POJO
- Spring 整合 Hibernate 的一处简化引入PO映射文件配置
- 配置Middlegen-Hibernate和hibernate-extensions以产生hbm映射文件和POJO
- 使用Spring的mappingDirectoryLocations来配置Hibernate映射文件
- Hibernate配置(一):用MiddleGen生成映射文件和用hbm2java生成pojo zz
- Hibernate配置文件和映射元素详解
- Hibernate配置(一):用MiddleGen生成映射文件和用hbm2java生成pojo
- 配置Middlegen-Hibernate和hibernate-extensions以产生hbm映射文件和POJO
- Hibernate配置文件中映射元素详解
- Hibernate配置文件和映射元素详解
- Hibernate配置文件和映射元素解释
- 使用Spring的mappingDirectoryLocations来配置Hibernate映射文件
- hibernate的映射文件配置问题
- Hibernate配置文件中映射元素详解
- Hibernate配置文件中映射元素详解