hibernate映射之外键一对一双向
2013-02-04 12:50
309 查看
数据模型
对象模型
对象模型
xml配置:
附录解释:
附录解释:
测试:
总结:
单项一对一外键关联和双向一对一外键关联比较:
数据模型完全相同
被唯一限制的多的一方的配置两个是完全一样的,但是在另一端是需要改变的需要加one-to-one
对象模型中少的一段需要改变加入对方的引用
对象模型
对象模型
UserInfo private int uid; private String uname; private boolean usex; private Login login;
Login private int lid; private String lname; private String lpassword; private UserInfo userinfo;
xml配置:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.skyedu.bean"> <class name="UserInfo" table="userinfo"> <id name="uid" column="uid" length="32"> <generator class="native"></generator> </id> <property name="uname" column="uname" length="32"></property> <property name="usex" column="usex" ></property> <one-to-one name="login" class="Login" property-ref="userinfo" ></one-to-one> </class> </hibernate-mapping>
附录解释:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.skyedu.bean"> <class name="Login" table="login"> <id name="lid" column="lid"> <!-- 主键id自动增长配置 --> <generator class="native"></generator> </id> <property name="lname" column="lname" length="30"></property> <property name="lpassword" column="lpassword" length="30" ></property> <many-to-one name="userinfo" column="uid" class="UserInfo" not-null="true" unique="true" cascade="save-update" > </many-to-one> </class> </hibernate-mapping>
附录解释:
测试:
/** * @author weidan 2013-2-5 上午11:04:10 * remark: 外键单项一对一关联增加 */ @Test public void TestSave(){ Session session = HibernateUtil.getSession(); Transaction transaction = session.beginTransaction(); transaction.begin(); try{ UserInfo user = new UserInfo(); user.setUname("魏丹"); user.setUsex(true); Login login = new Login(); login.setLname("weidan"); login.setLpassword("weidan"); login.setUserinfo(user); session.save(user); session.save(login); transaction.commit(); }catch(Exception e){ transaction.rollback(); }finally{ HibernateUtil.closeSession(session); } } /** * @author weidan 2013-2-5 上午11:04:37 * remark: 单项一对一级联添加 */ @Test public void TestCascadeSave(){ Session session = HibernateUtil.getSession(); Transaction transaction = session.beginTransaction(); transaction.begin(); try{ UserInfo user = new UserInfo(); user.setUname("魏丹"); user.setUsex(false); Login login = new Login(); login.setLname("weidan"); login.setLpassword("weidan"); login.setUserinfo(user); // session.save(user); session.save(login);//只保存一个对象 transaction.commit(); }catch(Exception e){ transaction.rollback(); }finally{ HibernateUtil.closeSession(session); } } @Test public void testFind(){ Session session = HibernateUtil.getSession(); Login login = (Login) session.get(Login.class, 8); System.out.println("loginName:"+login.getLname()); System.out.println("loginPassword:"+login.getLpassword()); System.out.println("userName:"+login.getUserinfo().getUid()); } @Test public void testFind2(){ Session session = HibernateUtil.getSession(); UserInfo user = (UserInfo) session.get(UserInfo.class, 6); System.out.println("loginName:"+user.getLogin().getLname()); System.out.println("loginPassword:"+user.getLogin().getLpassword()); System.out.println("userName:"+user.getUid()); } // // public static void main(String[] args) { // HibernateUtil.createTable(); // }
总结:
单项一对一外键关联和双向一对一外键关联比较:
数据模型完全相同
被唯一限制的多的一方的配置两个是完全一样的,但是在另一端是需要改变的需要加one-to-one
对象模型中少的一段需要改变加入对方的引用
相关文章推荐
- hibernate 一对一外键关联映射_双向
- Hibernate一对一外键关联映射(双向)
- hibernate基于外键的一对一映射--单向和双向
- Hibernate关系映射级别注解(一对一双向外键关联、一对一双向外键联合主键)
- Hibernate学习——(六)基于Annotation的一对一双向外键映射
- Hibernate关系映射(2)_一对一双向外键关联
- Hibernate关系映射(二)一对一双向外键关联@OneToOne Annotation方式
- Hibernate之对象关系映射06一对一双向外键关联
- hibernate一对一唯一外键关联映射(双向关联PersonIdCard)
- Hibernate关系映射(二) 基于外键的双向一对一
- hibernate 关系映射之 双向外键关联一对一
- Hibernate关系映射 一对一双向外键关联@OneToOne Annotation方式
- Hibernate关系映射 一对一双向外键关联@OneToOne Annotation方式 双向关联和单向关联的区别
- Hibernate 基于外键一对一映射(单双向)
- hibernate的一对一映射-外键映射-双向-mysql数据库
- 【SSH快速进阶】——Hibernate一对一映射(one-to-one)——唯一外键关联
- Hibernate关系映射(一)一对一单向外键关联@OneToOne Annotation方式
- 【Hibernate步步为营】--双向关联一对一映射详解(二)
- 【SSH进阶之路】Hibernate映射——一对一双向关联映射(六)
- hibernate 双向一对一映射