Hibernate实体映射
来源:互联网 发布:php 编译扩展dll 编辑:程序博客网 时间:2024/06/05 18:49
Hibernate实体映射步骤
1.写注释
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>
示例:
实体类:
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>
0 0
- hibernate实体映射
- Hibernate实体映射浅谈
- Hibernate实体映射浅谈
- Hibernate实体映射浅谈
- Hibernate实体映射
- hibernate search 实体映射
- Hibernate实体映射
- hibernate实体映射
- hibernate实体类映射
- hibernate 实体映射
- Hibernate实体映射
- Hibernate实体映射模板
- hibernate 实体映射模板
- Hibernate实体关系映射
- Hibernate实体映射
- Hibernate实体关系映射
- Hibernate 实体映射
- Hibernate实体映射
- Uva -ALL in all
- usb-creator-gtk
- Android 文件打开方式
- PIE兼容IE的圆角实现
- 自定义类处理消息循环HWND_MESSAGE
- Hibernate实体映射
- strlen() sizeof() lenth()函数的返回值问题
- 最长上升子序列
- Linux之网络配置(不断更新中)
- Java在linux环境下创建文件夹的方法
- uva-10905-Childden’s game
- Delphi清理释放本程序内存的代码
- android文件打开及Intent及使用
- 推荐8个超棒的学习 jQuery 的网站