博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java之hibernate之基于外键的一对一单向关联映射
阅读量:5038 次
发布时间:2019-06-12

本文共 2972 字,大约阅读时间需要 9 分钟。

这篇讲解基于外键的一对一单向关联映射

1.考察如下信息,人和身份证之间是一个一对一的关系。表的设计

注意:基于外键的一对一关联的表结构和多对一的表结构是一致的,但是,外键是唯一的。

2.类的结构

Person.java

public class Person implements Serializable{    private int id;    private String name;    private IdCard idCard;    public Person() {    }    public Person(String name) {        super();        this.name = name;    }    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;    }}

IdCard.java

public class IdCard implements Serializable{    private String id;    private String address;    public IdCard() {        // TODO Auto-generated constructor stub    }        public IdCard(String id, String address) {        super();        this.id = id;        this.address = address;    }    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public String getAddress() {        return address;    }    public void setAddress(String address) {        this.address = address;    }    }

3.映射文件信息:

IdCard.hbm.xml

Person.hbm.xml

4.测试

public class HibernateTest {    /**     * 生成数据库表的工具方法     * */    @Test    public void testCreateDB(){        Configuration cfg = new Configuration().configure();        SchemaExport se = new SchemaExport(cfg);        //第一个参数  是否打印sql脚本        //第二个参数 是否将脚本导出到数据库中执行        se.create(true, true);    }    /**     * 初始化表数据     */    @Test    public void testInit(){        Session session = null;        Transaction tx = null;        try {            session = HibernateUtil.getSession();            tx = session.beginTransaction();            IdCard card1 = new IdCard("110086", "湖北武当");            IdCard card2 = new IdCard("110087", "光明顶");            Person p1 = new Person("张三疯");            p1.setIdCard(card1);            Person p2 = new Person("殷素素");            p2.setIdCard(card2);            session.save(card1);            session.save(card2);            session.save(p1);            session.save(p2);            tx.commit();                    } catch (Exception e) {            if(tx!=null)                tx.rollback();        }finally {            HibernateUtil.close();        }    }    /**     */    @Test    public void testGetData(){        Session session = HibernateUtil.getSession();        Person p1 = (Person)session.get(Person.class, 1);        System.out.println(p1.getName()+"----"+p1.getIdCard().getId()+"----"+p1.getIdCard().getAddress());        HibernateUtil.close();    }}

 

转载于:https://www.cnblogs.com/Vincent-yuan/p/11203267.html

你可能感兴趣的文章
2018.11.15 Nginx服务器的使用
查看>>
Kinect人机交互开发实践
查看>>
百度编辑器UEditor ASP.NET示例Demo 分类: ASP.NET...
查看>>
JAVA 技术类分享(二)
查看>>
android客户端向服务器发送请求中文乱码的问
查看>>
UOJ#220. 【NOI2016】网格 Tarjan
查看>>
Symfony翻译教程已开课
查看>>
Python模块之pickle(列表,字典等复杂数据类型与二进制文件的转化)
查看>>
通过数据库表反向生成pojo类
查看>>
css_去掉默认样式
查看>>
TensorFlow2.0矩阵与向量的加减乘
查看>>
NOIP 2010题解
查看>>
javascript中的each遍历
查看>>
String中各方法多数情况下返回新的String对象
查看>>
浅谈tcp粘包问题
查看>>
UVA11524构造系数数组+高斯消元解异或方程组
查看>>
排序系列之——冒泡排序、插入排序、选择排序
查看>>
爬虫基础
查看>>
jquery.lazyload延迟加载图片第一屏问题
查看>>
HDU 1011 Starship Troopers (树形DP)
查看>>