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

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

1.在之前学习了单表的crud操作。在实际应用中,大都是多表关联操作,这篇会学习如何处理多表之间的关系。

2.考察书籍表和书籍分类表的关系。书籍表和书籍分类表之间是多对一的关系。数据库的表设计为:

3.在java中,如何使用类的关系来表明表与表之间关系

Book.java

public class Book implements Serializable{    private int id;    private String name;    private String author;    private double price;    private Date pubDate;    private Category category;//在多的一端对一的一端的引用   //也就是说在多的一端可以获取到一的一端信息    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 String getAuthor() {        return author;    }    public void setAuthor(String author) {        this.author = author;    }    public double getPrice() {        return price;    }    public void setPrice(double price) {        this.price = price;    }    public Date getPubDate() {        return pubDate;    }    public void setPubDate(Date pubDate) {        this.pubDate = pubDate;    }    public Category getCategory() {        return category;    }    public void setCategory(Category category) {        this.category = category;    }}

Category.java

public class Category implements Serializable{    private int id;    private String 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;    }}

4.映射文件关系

Book.hbm.xml

Category.hbm.xml

5.测试

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();            Category c1 = new Category("计算机类");            Category c2 = new Category("文学");            Category c3 = new Category("历史");            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");            Book b1 = new Book("java","sun",30,df.parse("1995-05-23"));            b1.setCategory(c1);            Book b2 = new Book("struts","apache",40,df.parse("2006-09-12"));            b2.setCategory(c1);            Book b3 = new Book("明朝那些事儿","当年明月",70,df.parse("2008-05-23"));            b3.setCategory(c3);            Book b4 = new Book("水浒传","老撕",20,df.parse("1985-05-23"));            b4.setCategory(c2);            session.save(c1);            session.save(c2);            session.save(c3);            session.save(b1);            session.save(b2);            session.save(b3);            session.save(b4);            tx.commit();                    } catch (Exception e) {            if(tx!=null)                tx.rollback();        }finally {            HibernateUtil.close();        }    }    /**     * 在查询多的一端数据时可以获取一的一端的数据     */    @Test    public void testGetData(){        Session session = HibernateUtil.getSession();        Book book = (Book)session.get(Book.class, 3);        System.out.println(book.getId()+"--"+book.getName()+"---"+book.getAuthor()+                "---"+book.getPrice()+"---"+book.getPubDate()+"---"+book.getCategory().getName());                HibernateUtil.close();    }}

注意:初始化数据时,保存顺序,先保存的分类,再保存的书籍

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

你可能感兴趣的文章
超详细的Guava RateLimiter限流原理解析
查看>>
VueJS ElementUI el-table 的 formatter 和 scope template 不能同时存在
查看>>
Halcon一日一练:图像拼接技术
查看>>
Swift - RotateView
查看>>
iOS设计模式 - 中介者
查看>>
centos jdk 下载
查看>>
HDU 1028 Ignatius and the Princess III(母函数)
查看>>
关于多路复用器的综合结果
查看>>
(转)面向对象最核心的机制——动态绑定(多态)
查看>>
token简单的使用流程。
查看>>
django创建项目流程
查看>>
UIActionSheet 修改字体颜色
查看>>
Vue 框架-01- 入门篇 图文教程
查看>>
Spring注解之@Lazy注解,源码分析和总结
查看>>
多变量微积分笔记24——空间线积分
查看>>
Magento CE使用Redis的配置过程
查看>>
poi操作oracle数据库导出excel文件
查看>>
(转)Intent的基本使用方法总结
查看>>
Mac 下的Chrome 按什么快捷键调出页面调试工具
查看>>
Windows Phone开发(24):启动器与选择器之发送短信
查看>>