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

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

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

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;    private Person person;    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;    }    public Person getPerson() {        return person;    }    public void setPerson(Person person) {        this.person = person;    }}

3.映射文件

Person.hbm.xml

IdCard.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());        System.out.println("-------------------------------------------");        IdCard card = (IdCard)session.get(IdCard.class, "110086");        System.out.println(card.getId()+"------"+card.getAddress()+"----"+card.getPerson().getName());        HibernateUtil.close();    }}

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

你可能感兴趣的文章
graphite custom functions
查看>>
ssh无密码登陆屌丝指南
查看>>
一个自己写的判断2个相同对象的属性值差异的工具类
查看>>
[CF803C] Maximal GCD(gcd,贪心,构造)
查看>>
oracle连接的三个配置文件(转)
查看>>
Java 8 中如何优雅的处理集合
查看>>
[HNOI2012]永无乡 线段树合并
查看>>
Centos下源码安装git
查看>>
gulp-rev-append md5版本号
查看>>
IO流之File类
查看>>
sql 基础语句
查看>>
CF717A Festival Organization(第一类斯特林数,斐波那契数列)
查看>>
控件发布:div2dropdownlist(div模拟dropdownlist控件)
查看>>
Oracle composite index column ordering
查看>>
kaggle竞赛
查看>>
区块链入门教程
查看>>
npm常用命令
查看>>
南海区行政审批管理系统接口规范v0.3(规划)4.2.【queryExpireList】当天到期业务查询...
查看>>
[置顶] 细说Cookies
查看>>
[wp7软件]wp7~~新闻资讯,阅读软件下载大全! 集合贴~~~
查看>>