Hibernate实体映射

Hibernate实体映射步骤

1.写注释

?格式为:?属性,表达的是本对象与?的?关系。

2,拷模板:


多对一


<many-to-one name=“” class=“” column=“”/>


一对多(Set)


<set name="">

<key column=""></key>

<one-to-many class=""/>

</set>


多对多(Set)


<set name="" table="">

<key column=""></key>

<many-to-many class="" column=""/>

</set>

3,填空:

?name属性:属性名(注释中的第1问号)

?class属性:关联的实体类型(注释中的第2个问号)

?column属性:

?<many-to-onecolumn="..">:一般可以写成属性名加Id后缀,如属性为department,则column值写成departmentId。

?一对多中的<keycolumn="..">:从关联的对方(对方是多对一)映射中把column值拷贝过来。

?多对多中的<keycolumn=“..”>:一般可以写成本对象的名加Id后缀,如本对象名为User,则写为userId。

?多对多中的<many-to-manycolumn=“..”>:一般可以写为关联对象的名称加Id后缀。

完成

示例:

实体类:

public class User {

private Long id;

private Department department;

private Set<Role> roles = new HashSet<Role>();

.......

}

public class Department {

private Long id;

private Set<User> users = new HashSet<User>();

private Department parent;

private Set<Department> children = new HashSet<Department>();

.......

}

public class Role {

private Long id;

private Set<User> users = new HashSet<User>();

private Set<Privilege> privileges = new HashSet<Privilege>();

.........

}

public class Privilege {

private Long id;

private Set<Role> roles = new HashSet<Role>();

private Privilege parent;

private Set<Privilege> children = new HashSet<Privilege>();

.........

}

映射文件:

<hibernate-mapping package="cn.usst.oa.domain">

<class name="User" table="usst_user">

<id name="id">

<generator class="native" />

</id>

<!-- department属性,表示我与Department的多对一关系 -->

<many-to-one name="department" class="Department" column="departmentId"></many-to-one>

<!-- roles属性,表示我与Role的多对多关系 -->

<set name="roles" table="usst_user_role">

<key column="userId"></key>

<many-to-many class="Role" column="roleId"></many-to-many>

</set>

</class>

</hibernate-mapping>

<hibernate-mapping package="cn.usst.oa.domain">

<class name="Department" table="usst_department">

<id name="id">

<generator class="native"/>

</id>

<!-- users属性,表示我与User的一对多关系 -->

<set name="users">

<key column="departmentId"></key>

<one-to-many class="User"/>

</set>

<!-- parent属性,表示我与Department(上级)的多对一关系 -->

<many-to-one name="parent" class="Department" column="parentId"></many-to-one>

<!-- children属性,表示我与Department(下级)的一对多关系 -->

<set name="children" cascade="delete">

<key column="parentId"></key>

<one-to-many class="Department"/>

</set>

</class>

</hibernate-mapping>

<hibernate-mapping package="cn.usst.oa.domain">

<class name="Role" table="usst_role">

<id name="id">

<generator class="native" />

</id>

<!-- users属性,表达了我与User的多对多关系 -->

<set name="users" table="usst_user_role">

<key column="roleId"></key>

<many-to-many class="User" column="userId"></many-to-many>

</set>

<!-- privileges属性,表达了我与Privilege的多对多关系 -->

<set name="privileges" table="itcast_role_privilege">

<key column="roleId"></key>

<many-to-many class="Privilege" column="privilegeId"></many-to-many>

</set>

</class>

</hibernate-mapping>

<hibernate-mapping package="cn.usst.oa.domain">

<class name="Privilege" table="usst_privilege">

<id name="id">

<generator class="native" />

</id>

<!-- roles属性,表达了我与Role的多对多关系 -->

<set name="roles" table="usst_role_privilege">

<key column="privilegeId"></key>

<many-to-many class="Role" column="roleId"></many-to-many>

</set>

<!-- parent属性,表达了我与Privilege(上级)的多对一关系 -->

<many-to-one name="parent" class="Privilege" column="parentId"></many-to-one>

<!-- children属性,表达了我与Privilege(下级)的一对多关系 -->

<set name="children" order-by="id ASC">

<key column="parentId"></key>

<one-to-many class="Privilege" />

</set>

</class>

</hibernate-mapping>

Hibernate实体映射

时间: 2024-12-28 19:29:57

Hibernate实体映射的相关文章

Hibernate实体映射技巧总结

初学者有没有感觉在写Hibernate实习映射的时候,被各种的many-to-one set one-to-many搞乱了头脑呢? 下面只需要三部,轻轻松松搞定. 1,写注释 格式为:(1?)属性,是本类与(2?)的(3?)关系. <span style="font-size:14px;">例如: <!-- users属性,本类与User的一对多 --> <!-- parent属性,本类与Department的多对一 --> <!-- role

Hibernate实体映射文件多对多等关系简单应用技巧

第一步,写注释: <!--xx属性,本类与Yy(类)的多对一 --> <!--xx属性,本类与Yy(类)的一对多 --> <!--xx属性,本类与Yy(类)的多对多 --> <!--xx属性,本类与Yy(类)的一对一 --> 第二部,拷模版 <!--xx属性,本类与Yy(类)的多对一 --> <many-to-one name="" class="" column="">&l

Hibernate实体映射模板

1,写注释 ?格式为:?属性,表达的是本对象与?的?关系. ?例:"department属性,本对象与Department的多对一" 2,拷模板: 多对一 <many-to-one name="" class="" column=""/> 一对多 (Set) <set name=""> <key column=""></key> <o

流程总结:Hibernate实体映射

本文内容来自:<传智播客-OA项目> 1,写注释格式为:?属性,表达的是本对象与?的?关系.例:“department属性,本对象与Department的多对一”2,拷模板: 3,填空:name属性:属性名(注释中的第1问号)class属性:关联的实体类型(注释中的第2个问号)column属性:<many-to-one column="..">:一般可以写成属性名加Id后缀,如属性为department,则column值写成departmentId.一对多中的&

Hibernate实体映射配置(XML)简单三步完美配置

我们在使用Hibernate框架的时候,非常纠结的地方就是实体和表之间的映射,今天借助汤老师的思路写了小教程,以后配置不用纠结了! 第一步:写注释 格式为:?属性,表达的是本对象与?的?关系. 例:“department属性,本对象与Department的多对一” 第二步:拷模板 第三步:填空: name属性:属性名(注释中的第1问号) class属性:关联的实体类型(注释中的第2个问号) column属性: <many-to-one column="..">:一般可以写成

hibernate的实体映射(一对一)

Hibernate的实体映射的主要任务就是实现数据库关系表与持久化类之间的映射,其关系如图: 双向映射一对一关联关系,通过唯一外键方式进行一对一关联映射,就是一个表的外键和另一个表的唯一主键对应形成一对一映射关系. 例如,以下例子,社团与社团负责人(社长),两者之间是一对一的关联关系: 持久化类association.java: public class Association implements java.io.Serializable{     private Integer id;   

Hibernate(三)结构-配置文件-实体映射及配置文件

一.体系结构 SessionFactory:属于单一数据库的编译过的映射文件的一个线程安全的,不可变的缓存快照.Session的工厂.有可能持有一个可选的数据缓存可以进程级别或者群级别保存可以在事务中重用数据. 会话,Session:单线程,生命期短促的对象,代表应用程序和持久化层之间的一次对话.封装了一个JDDBC连接,它也是Transaction的工厂,保存有必须持久化对象的缓存,用于遍历对象,或者通过标识符查找对象. 持久化对象(Persistent Object)及其集合(Collect

hibernate 实体关系映射笔记

@常用属性说明: @Entity:实体类 @Table:指定对应数据表 @Id:主键,使用可以为null值的类型,如果实体类没有保存到数据库是一个临时状态 @Column:配置普通属性,除了主键外,java基本类型的属性 @Base:普通属性的加载方式 @GeneratedValue:主键生成策略 @Temporal:日期类型(DATE,TIME还是TIMESTAMP),如果属性类型是java.util.Date(是以上3个类的父类)类型时才需要使用该@声明具体的日期类型 @Transient:

Hibernate映射之实体映射&lt;转载&gt;

实体类与数据库之间存在某种映射关系,Hibernate依据这种映射关系完成数据的存取,因此映射关系的配置在Hibernate中是最关键的.Hibernate支持xml配置文件与@注解配置两种方式.xml配置文件是最基础的配置,而@注解是Java的官方JPA(Java Persistence API)提供的.本章分别使用@注解与xml讲解Hibernate的映射配置. 10.1  实体类的映射 从Java的角度讲,实体类就是普通的Java封装类(有人称为POJO有人称为VO).仅从实体类中的代码信