hibernate关联映射
来源:互联网 发布:天猫淘宝店费用预算 编辑:程序博客网 时间:2024/05/29 14:26
many2one
实例函数
public class Group {private int id;private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}
public class User {private int id;private String name;private String password;private Group group;public Group getGroup() {return group;}public void setGroup(Group group) {this.group = group;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}
配置文件
Group.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping><class name="com.zucc.model.Group" table="t_group"><id name="id" column="id"><generator class="native"/></id><property name="name" column="name" length="20"/></class></hibernate-mapping>
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping><class name="com.zucc.model.User" table="user"><id name="id" column="id"><generator class="native"/></id><property name="name" column="name" length="20"/><property name="password" column="password"/><many-to-one name="group" foreign-key="user_groupID_group_id"><column name="group_id"/></many-to-one></class></hibernate-mapping>
各属性含义:
<many-to-one
name="属性名"
column="外键字段名" //可选,默认与name同值。也可以用嵌套的 <column>元素。
class="关联的完整类名"//可选,默认是通过反射得到属性类型。
entity-name="被关联类的实体名" > //被关联类的实体名
lazy="true|false(默认)" //是否支持Lazy加载,默认为true
cascade="none(默认)|all|save-update|delete|delete-orphan" //级联风格可组合
//all : 所有操作都传递到相关联的对象
//save-update 保存和更新传递到相关联的对象。假定该配置文件的对象是主体,只有对主体save或者update时,该设置生效。
//delete 删除操作传递到相关联的对象
//delete-orphan : 所有操作都传递到相关联的对象 并删除不再与父对象关联的对象
fetch="join|select(默认)" // (可选 - 默认为 select ): 在外连接抓取(outer-join fetching)和序列选择抓取(sequential select fetching)两者中选择其一。
update="true(默认)|false"
insert="true(默认)|false" //同property的udpate、delete,是否更新和删除。
property-ref="关联类的属性值" // (可选) 指定关联类的一个属性,作为外键的值。 默认是关联类的主键。
not-found="ignore|exception(默认)" // property-ref引用的数据不存在时如何处理: ignore设为null。
access="field|property(默认)|ClassName" //Hibernate用来访问属性的策略。
unique="true|false" //使用DDL为外键字段生成一个唯一约束。此外, 这也可以用作 property-ref的目标属性。这 使关联同时具有 一对一的效果。
not-null="true|false" //使用DDL为外键字段生成一个非空约束。
optimistic-lock="true(默认)|false" //是否需要获得乐观锁定(optimistic lock),它决定这个属性发生脏数据时版本(version)的值是否增长。
</many-to-one>
insert="true(默认)|false" //同property的udpate、delete,是否更新和删除。
property-ref="关联类的属性值" // (可选) 指定关联类的一个属性,作为外键的值。 默认是关联类的主键。
not-found="ignore|exception(默认)" // property-ref引用的数据不存在时如何处理: ignore设为null。
access="field|property(默认)|ClassName" //Hibernate用来访问属性的策略。
unique="true|false" //使用DDL为外键字段生成一个唯一约束。此外, 这也可以用作 property-ref的目标属性。这 使关联同时具有 一对一的效果。
not-null="true|false" //使用DDL为外键字段生成一个非空约束。
optimistic-lock="true(默认)|false" //是否需要获得乐观锁定(optimistic lock),它决定这个属性发生脏数据时版本(version)的值是否增长。
</many-to-one>
数据库
one2many单向
实例函数
import java.util.Set;public class Class {private int cid;private String name;private Set<Student> students;public int getCid() {return cid;}public void setCid(int cid) {this.cid = cid;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Set<Student> getStudents() {return students;}public void setStudents(Set<Student> students) {this.students = students;}}
public class Student {private int sid;private String name;private Class class1;public int getSid() {return sid;}public void setSid(int sid) {this.sid = sid;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Class getClass1() {return class1;}public void setClass1(Class class1) {this.class1 = class1;}}
Student.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.zucc.model"><class name="Student" table="t_student"><id name="sid" column="sid"><generator class="native"/></id><property name="name" column="name" length="20"/></class></hibernate-mapping>
Class.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.zucc.model"><class name="Class" table="t_class"><id name="cid" column="cid"><generator class="native"/></id><property name="name"/><!-- name:Class中的Set类型的属性名。 order-by:对什么排序,默认为asc升序,desc降序。column:在student表生成一个字段和class表的id相关联。 foreign-key:外键名 。class:与Class表一对多相关联的类名。--><set name="students" order-by="sid asc"><key column="cid" foreign-key="fk_student_cid_class_cid"/><one-to-many class="Student"/></set></class></hibernate-mapping>
数据库
one2many双向
实例函数和one2many单向一样
配置文件
Class.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.zucc.model"><class name="Class" table="t_class"><id name="cid" column="cid"><generator class="native"/></id><property name="name"/><!-- name:Class中的Set类型的属性名。 order-by:对什么排序,默认为asc升序,desc降序。column:在student表生成一个字段和class表的id相关联。 foreign-key:外键名 。class:与Class表一对多相关联的类名。--><set name="students" order-by="sid asc"><key column="cid" foreign-key="fk_student_cid_class_cid"/><one-to-many class="Student"/></set></class></hibernate-mapping>
Student.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.zucc.model"><class name="Student" table="t_student"><id name="sid" column="sid"><generator class="native"/></id><property name="name" column="name" length="20"/><many-to-one name="class1" foreign-key="fk_student_cid_class_cid"><column name="cid"/></many-to-one></class></hibernate-mapping>
数据库
many2many单向
实例函数
public class User {private int id;private String name;Set<Role> roles;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Set<Role> getRoles() {return roles;}public void setRoles(Set<Role> roles) {this.roles = roles;}}
import java.util.Set;public class Role {private int id;private String name;Set<User> users;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Set<User> getUsers() {return users;}public void setUsers(Set<User> users) {this.users = users;}}
配置文件
Role.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.zucc.model"><class name="Role" table="t_role"><id name="id" column="rid"><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://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.zucc.model"><class name="Role" table="t_role"><id name="id" column="rid"><generator class="native"/></id><property name="name"/></class></hibernate-mapping>
many2many双向
实例函数和User.hbm.xml和User.hbm.xml与many2many单向一样Role.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.zucc.model"><class name="Role" table="t_role"><id name="id" column="rid"><generator class="native"/></id><property name="name"/><set name="users" table="r_user_role"><key column="rid" foreign-key="fk_userrole_rid_role_rid"/><many-to-many class="User" foreign-key="fk_userrole_rid_role_rid" column="uid"/></set></class></hibernate-mapping>
数据库
one2one单向
实例函数
public class IDCard {private int id;private String cardNum;private User user;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getCardNum() {return cardNum;}public void setCardNum(String cardNum) {this.cardNum = cardNum;}public User getUser() {return user;}public void setUser(User user) {this.user = user;}}
public class User {private int id;private String name;private IDCard idCard;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public IDCard getIdCard() {return idCard;}public void setIdCard(IDCard idCard) {this.idCard = idCard;}}
one2one唯一外键
配置文件IDCard.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping><class name="com.zucc.model.IDCard" table="t_idcard"><id name="id" column="id"><generator class="native"/></id><property name="cardNum" column="cardNum"/></class></hibernate-mapping>
User.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping><class name="com.zucc.model.User" table="user"><id name="id" column="id"><generator class="native"/></id><property name="name" column="name" length="20"/><many-to-one name="idCard" foreign-key="fk_user_idcardid_idcard_id"><column name="idcard_id" unique="true"/></many-to-one></class></hibernate-mapping>
one2one主键参照
配置文件IDCard.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping><class name="com.zucc.model.IDCard" table="t_idcard"><id name="id" column="id"><generator class="native"/></id><property name="cardNum" column="cardNum"/></class></hibernate-mapping>
User.hbm.xml(constrained="true"必须为true)
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping><class name="com.zucc.model.User" table="user"><id name="id" column="id"><!-- 主键生成策略:外键的方式 --><generator class="foreign"><!-- 指定这个外键参照谁:参照自己的一个叫idcard属性的ID --><param name="property">idCard</param></generator></id><property name="name" column="name" length="20"/><!-- 为引用属性idcard配置映射关系 --><one-to-one name="idCard" foreign-key="fk_user_id_idcard_id" constrained="true"/></class></hibernate-mapping>
数据库
one2one双向
实例函数和one2one相同one2one唯一外键
配置文件
IDCard.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping><class name="com.zucc.model.IDCard" table="t_idcard"><id name="id" column="id"><generator class="native"/></id><property name="cardNum" column="cardNum"/><!-- 添加一个one-to-one标签即可,提示Hibernate怎么去加载user,默认根据主键加载 property-ref:自己本身在另外一端的属性名 <one-to-one name="user"/>不能维护关联关系,所以通过IDCard保存User的关联关系是不成功的 <one-to-one>标签在保存的时候不能通过该标签配置的属性维护关联关系 --><one-to-one name="user" property-ref="idCard"/></class></hibernate-mapping>
User.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping><class name="com.zucc.model.User" table="user"><id name="id" column="id"><generator class="native"/></id><property name="name" column="name" length="20"/><many-to-one name="idCard" foreign-key="fk_user_idcardid_idcard_id"><column name="idcard_id" unique="true"/></many-to-one></class></hibernate-mapping>
one2one唯一外键
配置文件
IDCard.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping><span style="white-space:pre"></span><class name="com.zucc.model.IDCard" table="t_idcard"><span style="white-space:pre"></span><id name="id" column="id"><span style="white-space:pre"></span><generator class="native"/><span style="white-space:pre"></span></id><span style="white-space:pre"></span><property name="cardNum" column="cardNum"/><span style="white-space:pre"></span><!-- 不能加property-ref属性,因为是主键参照 --><span style="white-space:pre"></span><one-to-one name="user"/><span style="white-space:pre"></span></class></hibernate-mapping>
User.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping><span style="white-space:pre"></span><class name="com.zucc.model.User" table="user"><span style="white-space:pre"></span><id name="id" column="id"><span style="white-space:pre"></span><!-- 主键生成策略:外键的方式 --><span style="white-space:pre"></span><generator class="foreign"><span style="white-space:pre"></span><!-- 指定这个外键参照谁:参照自己的一个叫idcard属性的ID --><span style="white-space:pre"></span><param name="property">idCard</param><span style="white-space:pre"></span></generator><span style="white-space:pre"></span></id><span style="white-space:pre"></span><property name="name" column="name" length="20"/><span style="white-space:pre"></span><!-- 为引用属性idcard配置映射关系 --><span style="white-space:pre"></span><one-to-one name="idCard" foreign-key="fk_user_id_idcard_id" constrained="true"/><span style="white-space:pre"></span></class></hibernate-mapping>
1 0
- 关联映射(hibernate映射)
- Hibernate关联映射-----一对一关联
- Hibernate集合映射、关联映射
- Hibernate映射关联详解
- hibernate一对一关联映射--
- Hibernate的关联映射
- hibernate 的关联映射
- hibernate一对一关联映射
- hibernate关联映射
- Hibernate关联映射
- hibernate关联映射
- hibernate一对一关联映射
- Hibernate关联映射小结
- Hibernate 关联映射总结
- hibernate关联映射-单向
- hibernate关联映射
- hibernate关联映射-双向
- Hibernate 关联映射
- 用图片的base64字符串 合成tiff
- NFS Volume Provider(Part I) - 每天5分钟玩转 OpenStack(62)
- 2016谷歌学术指标出炉,影响因子面临冲击?
- 剑指offer|删除链表中重复的结点
- 如何写好一篇高质量的IEEE/ACM Transaction级别的计算机科学论文?
- hibernate关联映射
- 常用数据结构和算法操作效率的对比总结
- Java日期时间(Date/Time):DateFormat格式代码
- POJ 1222 EXTENDED LIGHTS OUT(高斯消元)
- hdoj1002A + B Problem II
- ArcSDE
- 关于sysctl.conf配置对网络连接数的优化
- ArcGIS GeoDataBase GeoDataset dataset
- python学习——SMTP发送邮件