Hibernate一对一映射
一对一映射关系在我们的项目中用到的不是太多,但是也是值得学些的一种映射方式,框架的学习在于会用,再会用的情况下理解其思想。
比如人和一个身份证,这个关系就是一对一关系了,那么就拿这个例子举例好了。一对一关系在hibernate中有基于外键的方式和基于主键的方式。
public class User { private Integer userId; private String name; private IDCard card; public User() { // TODO Auto-generated constructor stub } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getUserId() { return userId; } public void setUserId(Integer userId) { this.userId = userId; } public IDCard getCard() { return card; } public void setCard(IDCard card) { this.card = card; } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return "User [userId=" + userId + ", name=" + name + ", card=" + card + "]"; } }
public class IDCard { private Integer cardId; private String number; private User user; public IDCard() { // TODO Auto-generated constructor stub } public Integer getCardId() { return cardId; } public void setCardId(Integer cardId) { this.cardId = cardId; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
基于外键的一对一的配置文件:
<hibernate-mapping> <class name="com.zdx.domain.IDCard" table="idcard"> <id name="cardId" type="integer"> <column name="cardId" /> <generator class="native" /> </id> <property name="number"></property> <!-- 基于外键的一对一 --> <many-to-one name="user" class="com.zdx.domain.User" column="userId" unique="true" ></many-to-one> </class> </hibernate-mapping>
<hibernate-mapping> <class name="com.zdx.domain.User" table="user"> <id name="userId" type="integer"> <column name="userId" /> <generator class="native" /> </id> <property name="name"></property> <!-- 基于外键的一对一 property-ref是指在IDCard类中User对象的名称 --> <one-to-one name="card" class="com.zdx.domain.IDCard" property-ref="user"></one-to-one> </class> </hibernate-mapping>
基于主键的一对一的配置文件:
<hibernate-mapping> <class name="com.zdx.domain.IDCard" table="idcard"> <id name="cardId" type="integer"> <column name="cardId" /> <!-- 采用基于主键的一对一映射时,要把主键生成策略改为foreign 其中的property参数是表示要使用哪个对象的主键值, user的主键值作为自己的主键值 --> <generator class="foreign"> <param name="property">user</param> </generator> </id> <property name="number"></property> <!-- user属性,表达IDCard与User的一对一。 采用基于主键的一对一映射方式。 constrained属性:默认为false,表示不在主键列上加上外键约束,true表示要加上外键约束。 --> <one-to-one name="user" class="com.zdx.domain.User" constrained="true"></one-to-one> </class> </hibernate-mapping>
<hibernate-mapping> <class name="com.zdx.domain.User" table="user"> <id name="userId" type="integer"> <column name="userId" /> <generator class="native" /> </id> <property name="name"></property> <!-- 基于主键的一对一 --> <one-to-one name="card" class="com.zdx.domain.IDCard"></one-to-one> </class> </hibernate-mapping>
测试代码:
package com.zdx.test; import org.junit.Test; import com.zdx.dao.IDCardDao; import com.zdx.dao.UserDao; import com.zdx.dao.impl.IDCardDaoImpl; import com.zdx.dao.impl.UserDaoImpl; import com.zdx.domain.IDCard; import com.zdx.domain.User; public class UserDaoTest { UserDao userDao = new UserDaoImpl(); IDCardDao cardDao = new IDCardDaoImpl(); @Test public void testSelect() throws Exception { User user = userDao.getUserByName("zdx"); if (user != null) { System.out.println("User--->" + user.toString()); } else { System.out.println("无此用户"); } } @Test public void testSave() throws Exception { User user = new User(); user.setName("sfeewf"); IDCard card = new IDCard(); card.setNumber("0023423234354"); // 关联 user.setCard(card); card.setUser(user); userDao.insertUser(user); cardDao.insertIDCard(card); } }
相关推荐
hibernate一对一映射源码 希望大家可以顶一下。。。请关注我。。
个人的很详细的Hibernate一对一映射配置详解,对初学者有帮助!
hibernate框架中有好多例子。不过最经典一对一映射的例子莫过于此例子,相信你下载后会有很好的感受!
Spring+Hibernate 框架整合写的一对一映射级联增删改查小例子,有SQL文件和使用说明,代码简洁易懂.
Hibernate双向一对一关联映射(注解版)
hibernate 映射关系学习入门 一对一映射Eclipse源码
包含《多对多双向关联映射》《多对一单向关联映射》《多对一双向关联映射》《一对多单向关联映射》等文档,并有图解及例子,非常适合新手学习,尤其是刚刚接触hibernate,对映射关系不清楚的。。。。
Hibernate 一对一外键单向关联 Hibernate 一对一主键单向关联 Hibernate 一对一连接表单向关联 Hibernate 一对多外键单向关联 Hibernate 一对多连接表单向关联 Hibernate 多对一外键单向关联 Hibernate 多对一连接...
Hibernate一对多映射
Hibernate映射一对多关联关系
Hibernate一对一外键映射实例,里面包含源程序,测试程序,映射文档
Hibernate一对一主键映射实例,里面包含源程序,测试程序,映射说明
hibernate主键一对一关联映射代码示例
hibernate基于 一对多、多对一映射写的一个增加,查询,删除,修改的demo,内附数据库脚本
使用hibernate技术实现对MySQL数据库的一对多和多对一的映射。下载后对应着改一下自己的IP地址就好了。
Hibernate一对多,多对一映射
博文链接:https://shaqiang32.iteye.com/blog/201308
关于hiberante主键的一对一的映射,单向的,实例
博文链接:https://shaqiang32.iteye.com/blog/201311