Hibernate入门BLOG[七、Hibernate对象关系一对一映射]

本文详细阐述了在Hibernate框架下如何配置JavaBean类之间的一对一关系映射,包括Person类和IdCard类的实例化及XML配置文件的具体编写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一对一的关系:人----身份证 在关系型数据库中有一种一对一的关系。类似于上面的这种情况。一个人只对应一个身份证。 反之亦然。那么在hibernate的对象模型中是怎么样去配置关联一对一的这种映射关系呢? 1、 JavaBean:(省略set和get方法) 1、Person.java private int id; private String name; private IdCard idcard; 2、IdCard.Java private int id; private String usetime; private Person person; 2、 Xml配置文件:不难看出上面的两个类互相有对方的一个属性形式,那么hibernate的xml文件如下: Person.hbm.xml <hibernate-mapping package="cn.hibernate.model"> <class name="Person" table="person"> <id name="id"> <generator class="native" /> </id> <property name="name" column="name"/> <!-- 一对一的对象关系描述 --> <one-to-one name="idcard" /> </class> </hibernate-mapping> IdCard.hbm.xml <hibernate-mapping package="cn.hibernate.model"> <class name="IdCard" table="idcard"> <id name="id"> <!-- 这里的主键同时也是外键 由于它是和peroson并存的。所以这里的主键这么配置 --> <generator class="foreign" > <!-- 说明主键从哪里来 。这个person指的是它的对象属性--> <param name="property">person</param> </generator> </id> <property name="usetime" column="usetime" /> <!-- 一对一的关系只要用指定属性的名称即可 --> <one-to-one name="person" constrained="true"></one-to-one> </class> </hibernate-mapping> 3、 生成表的插入操作: static void AddPersonAndIdCard(){ Session s = null; Transaction tx = null; try{ s = HibernateUtil.getSession(); tx = s.beginTransaction(); Person p = new Person(); IdCard idcard = new IdCard(); p.setName("zhanglei"); idcard.setUsetime("usertime"); idcard.setPerson(p); p.setIdcard(idcard); s.save(p); s.save(idcard); tx.commit(); System.out.println("1111"); }catch(HibernateException e){ //判断事务有没有完全提交的判断方式 if(tx != null){ tx.rollback(); throw e; } }finally{ if(s != null){ s.close(); } } } //注意: /* 对于上文中的Java代码中有一些自定义的类。拿到session对象。如果想看封装类的话请看前面的BLOG 本文中要注意的地方主要是对于idcard的一个setPerson的操作。这个操作是不可以没有的。因为它的ID生成依赖person的ID值。 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值