hibernate中一对一映射配置详细解析(一)
来源:互联网 发布:装饰公司的网络销售 编辑:程序博客网 时间:2024/05/06 15:33
本例模仿用户与身份证相对应的关系,即一个用户对应一个身份证信息,且身份证信息不能重复,下面代码是实现基于外键的一对一映射
1.hibernate.cfg.xml
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><!--映射文件:映射一个实体类对象,描述一个对象最终可以直接保存对象数据到数据库中 --><!-- package:要映射的对象所在的包(可选,如果不指定,此文件下所有的类都要指定全路径) auto-import 默认为true,在写HQL的时候自动导入包名 如果指定为false,在写HQL的时候必须要写上类的全名--><hibernate-mapping package="cn.itcast.c_one2one"><class name="User" table="t_user"> <id name="userId"> <generator class="native"></generator> </id> <property name="userName" length="20"></property> <one-to-one class="IdCard" name="idCard"></one-to-one> </class></hibernate-mapping>
2.User
package cn.itcast.c_one2one;public class User {private Integer userId;private String userName;//用户与身份证信息,一对一的关系private IdCard idCard;public Integer getUserId() {return userId;}public void setUserId(Integer userId) {this.userId = userId;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public IdCard getIdCard() {return idCard;}public void setIdCard(IdCard idCard) {this.idCard = idCard;}}
3.IdCard
package cn.itcast.c_one2one;public class IdCard {//身份证号主键private String cardNum;private String place;//身份地址//身份证与用户关系,一对一的关系private User user;public String getCardNum() {return cardNum;}public void setCardNum(String cardNum) {this.cardNum = cardNum;}public String getPlace() {return place;}public void setPlace(String place) {this.place = place;}public User getUser() {return user;}public void setUser(User user) {this.user = user;}}
4.User.hbm.xml
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><!--映射文件:映射一个实体类对象,描述一个对象最终可以直接保存对象数据到数据库中 --><!-- package:要映射的对象所在的包(可选,如果不指定,此文件下所有的类都要指定全路径) auto-import 默认为true,在写HQL的时候自动导入包名 如果指定为false,在写HQL的时候必须要写上类的全名--><hibernate-mapping package="cn.itcast.c_one2one"><class name="User" table="t_user"> <id name="userId"> <generator class="native"></generator> </id> <property name="userName" length="20"></property> <one-to-one class="IdCard" name="idCard"></one-to-one> </class></hibernate-mapping>
5.IdCard.hbm.xml
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><!--映射文件:映射一个实体类对象,描述一个对象最终可以直接保存对象数据到数据库中 --><!-- package:要映射的对象所在的包(可选,如果不指定,此文件下所有的类都要指定全路径) auto-import 默认为true,在写HQL的时候自动导入包名 如果指定为false,在写HQL的时候必须要写上类的全名--><hibernate-mapping package="cn.itcast.c_one2one"><class name="IdCard" table="t_IdCard"> <id name="cardNum"> <generator class="assigned"></generator> </id> <property name="place" length="20"></property> <!--一对一映射,有外键方,unique="true" 给外键字段 添加唯一约束 --> <many-to-one class="User" unique="true" name="user" column="user_id" cascade="save-update"></many-to-one> </class></hibernate-mapping>
6.Junit测试
package cn.itcast.c_one2one;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import org.hibernate.classic.Session;import org.junit.Test;public class App {private static SessionFactory sf;static{sf=new Configuration().configure().addClass(IdCard.class).addClass(User.class).buildSessionFactory();}@Testpublic void save(){Session session=sf.openSession();session.beginTransaction();//用户User user=new User();user.setUserName("liudehua");//身份证IdCard idCard=new IdCard();idCard.setCardNum("343567677");idCard.setPlace("成都");//关系idCard.setUser(user);//保存session.save(idCard);session.getTransaction().commit();session.close();}}
2 0
- hibernate中一对一映射配置详细解析(一)
- hibernate中一对一映射配置详细解析(二)
- Hibernate中一对一映射详细解析(内含实例)
- hibernate中继承映射配置详细解析(一)
- hibernate中组件映射配置详细解析
- Hibernate 一对一映射(一)
- hibernate中继承映射配置详细解析(二)
- hibernate中继承映射配置详细解析(三)
- hibernate中继承映射配置详细解析(四)
- mybatis中一对一详细配置解析
- hibernate中多对多映射配置详细解析
- Hibernate一对一映射配置详解
- 【Hibernate 3】一对一映射配置
- hibernate注解配置一对一映射
- Hibernate(五)——经典解析一对一关联映射
- 【Hibernate步步为营】--双向关联一对一映射详解(一)
- Hibernate 一对一映射(二)
- hibernate一对一映射(注解)
- Android仿美团切换城市
- SDUTACM 数据结构实验之二叉树六:哈夫曼编码
- OJ2129树结构练习——判断给定森林中有多少棵树(并查集)
- 《Python编程》笔记(六)
- Android一个完整的项目转成SDK提供给第三方嵌入
- hibernate中一对一映射配置详细解析(一)
- 提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意)
- JS 匿名函数01
- 采药 纪中2540 背包问题
- exp 对oracle版本需求
- [codeforces311E]Biologist
- iOS tableView滑动出现多个按钮
- 蓄水池抽样
- AFN HTTPS 双向认证这是传客户端证书