【Hibernate】——一对一映射
来源:互联网 发布:蕉下伞是一场骗局知乎 编辑:程序博客网 时间:2024/06/04 20:14
好吧,一对一映射是我认为最好理解的,正如我说的一个萝卜一个坑,或者实际一点的例子:一个人只有一个
身份证号:
新建一个Person实体对象:
package com.bjpowernode.hibernate;/** * 建立Person实体类 * @author why_768 * */public class Person {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;}}
配置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.bjpowernode.hibernate.Person" table="t_person"><id name="id"><!-- 采用foreign生成策略,会取得关联对象的标识 --><generator class="foreign"><param name="property">idCard</param></generator></id><property name="name"/><!-- constrained=“true”表示,当前主键还是一个外键 --><one-to-one name="idCard" constrained="true"/></class></hibernate-mapping>
新建IdCard实体类:
package com.bjpowernode.hibernate;public class IdCard {private int id;private String CardNo;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getCardNo() {return CardNo;}public void setCardNo(String cardNo) {CardNo = cardNo;}}
配置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.bjpowernode.hibernate.IdCard" table="t_idCard"> <id name="id"> <generator class="native"/> </id> <property name="cardNo"/> </class></hibernate-mapping>
这样就完成了一对一的简单配置,建立Junit测试类,插入数据:
public void testSave1(){Session session = null;try {session = HibernateUtils.getSession();session.beginTransaction();IdCard idCard = new IdCard();idCard.setCardNo("111111111111");Person person = new Person();person.setName("张三");//建立关联person.setIdCard(idCard);//没有抛出TransientObjectException异常,是由一对一关联映射的特性决定的。//这样他采用foreign映射策略才能取得关联对象的标识session.save(person);session.getTransaction().commit();} catch (Exception e) {e.printStackTrace();session.getTransaction().rollback();} finally{HibernateUtils.closeSession(session);}}
查看数据库:
至此,一对一的单向关联映射就完成了。一对一的双向关联映射,根据上篇博客说道的一对多双向关联映射可
知,在IdCard实体里添加Person为属性,并在IdCard.hbm.xml文件里再配上<one-to-one name="person">标签就可
以了。
0 0
- 【Hibernate】——一对一映射
- hibernate——一对一映射(1)
- Hibernate 关系映射 ——单向一对一
- Hibernate 关系映射 ——双向一对一
- hibernate映射(三)——一对一
- 【Hibernate】——一对一关联映射
- 006——hibernate一对一关联映射
- Hibernate——一对一关联映射
- 【Hibernate】——一对一关联映射
- Hibernate映射——一对一双向关联映射(六)
- Hibernate映射——一对一单向关联映射(五)
- Hibernate映射—— 一对一单向关联映射
- hibernate 映射关系—关系映射(一对一)
- Hibernate详解(3)——一对一映射分析
- Hibernate详解(3)——一对一映射分析
- Hibernate(五)——经典解析一对一关联映射
- Hibernate实体关系映射——单边的一对一关系
- Hibernate实体关系映射——双边的一对一关系
- IOS缓存管理之PINCache使用
- 关于如何美化WordPress默认的首页主题
- CIDR地址分类
- SSH整合,事务管理
- LuoguP1010幂次方
- 【Hibernate】——一对一映射
- Spring上传文件
- poj 1979(DFS)
- 如何阅读一本书
- 如何优化网站的访问速度
- codeforces 776c Molly's Chemicals 【思维】
- bzoj2212(线段树合并第一道)
- 算法提高 队列操作
- JDBC--调用存储过程