Hibernate 基于外键一对一映射(单双向)
2016-04-01 19:21
316 查看
主要内容:
映射关联关系
一对一关联映射的策略
基于外键的单(双)一对一关联映射
基于主键的单(双)一对一关联映射
基于外键的单向一对一实际上是多对一关联映射的特例
采用<many-to-one>标签,指定多的一端的unique=true,这样就限制了多端的多重性为一
单向的表示只有一端知道有联系,知道的联系的为主控端。不知道联系的为被控端。
映射文件
基于外键的双向一对一映射,两边都持有对象的引用
javabean如下:
映射文件:
映射关联关系
一对一关联映射的策略
基于外键的单(双)一对一关联映射
基于主键的单(双)一对一关联映射
基于外键的单向一对一实际上是多对一关联映射的特例
采用<many-to-one>标签,指定多的一端的unique=true,这样就限制了多端的多重性为一
单向的表示只有一端知道有联系,知道的联系的为主控端。不知道联系的为被控端。
public class Account { private Integer id; private String name; //主控端引用被控端的对象 private Address address; public Account(){ } /** * @return the id */ public Integer getId() { return id; } /** * @param id the id to set */ public void setId(Integer id) { this.id = id; } /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } /** * @return the address */ public Address getAddress() { return address; } /** * @param address the address to set */ public void setAddress(Address address) { this.address = address; } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return "Account [id=" + id + ", name=" + name + "]"; } }
public class Address { private int id; private String address; public Address(){ } /** * @return the id */ public int getId() { return id; } /** * @param id the id to set */ public void setId(int id) { this.id = id; } /** * @return the address */ public String getAddress() { return address; } /** * @param address the address to set */ public void setAddress(String address) { this.address = address; } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return "Address [address=" + address + ", id=" + id + "]"; } }
映射文件
<?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="Account" table="acc_table01"> <!-- 生成对象唯一的OID标示符 --> <id name="id" column="id" type="integer"> <generator class="native"/> </id> <property name="name"/> <!-- 通过Many-to-One 添加唯一属性约束,建立一对一的关系 --> <many-to-one name="address" column="address_id" unique="true"></many-to-one> <span style="color:#ff0000;">//这个是外键</span> </class> </hibernate-mapping>
<?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="Address" table="address_table01"> <!-- 生成对象唯一的OID标示符 --> <id name="id" column="id" type="integer"> <generator class="native"/> </id> <property name="address"/> </class> </hibernate-mapping>
基于外键的双向一对一映射,两边都持有对象的引用
javabean如下:
public class Account { private Integer id; private String name; //主控端引用被控端的对象 private Address address_id; public Account(){ } /** * @return the id */ public Integer getId() { return id; } /** * @param id the id to set */ public void setId(Integer id) { this.id = id; } /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } // /** // * @return the address // */ // public Address getAddress() { // return address; // } // // /** // * @param address the address to set // */ // public void setAddress(Address address) { // this.address = address; // } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return "Account [id=" + id + ", name=" + name + "]"; } /** * @return the address_id */ public Address getAddress_id() { return address_id; } /** * @param addressId the address_id to set */ public void setAddress_id(Address addressId) { address_id = addressId; } }
public class Address { private int id; private String address; //声明一个对主控端对象的引用 private Account account; public Address(){ } /** * @return the id */ public int getId() { return id; } /** * @param id the id to set */ public void setId(int id) { this.id = id; } /** * @return the address */ public String getAddress() { return address; } /** * @param address the address to set */ public void setAddress(String address) { this.address = address; } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return "Address [address=" + address + ", id=" + id + "]"; } public void setAccount(Account account) { this.account = account; } public Account getAccount() { return account; } }
映射文件:
<?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="Account" table="acc_table02"> <!-- 生成对象唯一的OID标示符 --> <id name="id" column="id" type="integer"> <generator class="native"/> </id> <property name="name"/> <!-- 通过Many-to-One 添加唯一属性约束,建立一对一的关系 --> <many-to-one name="address_id" column="address_id" unique="true"></many-to-one> </class> </hibernate-mapping>
<?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="Address" table="address_table02"> <!-- 生成对象唯一的OID标示符 --> <id name="id" column="id" type="integer"> <generator class="native"/> </id> <property name="address"/> <!-- one-to-one映射一对一关联 property-ref属性:指定反向属性引用 --> <one-to-one name="account" property-ref="address_id"></one-to-one> </class> </hibernate-mapping>
相关文章推荐
- 那个胆小的骗子,你赶紧滚吧
- C++作业2
- //获取地址栏 参数
- Unity Flow distort of screen
- 第6章招聘产品经理——寻找出色的产品经理
- 事件类CEvent的使用
- Ruby语言基础学习一:Ruby语法和数据类型
- 滚动视图部分代码
- VE设计#3 表现层addPanel界面的实现
- 1462 数据结构:线性表的插入
- gdb调试
- Linux系统中主要系统目录的功能
- Android Studio 常用快捷键
- Android上实现仿IOS弹性ScrollView
- mysql创建登录报错ERROR1045(28000)
- 杭电ACM1002
- IT十八掌作业_java基础第25天_NIO
- Compile、Make和Build的区别
- rhel5下ORACLE 10g之ASM创建
- 链栈实现括号匹配