博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate 关联映射
阅读量:6955 次
发布时间:2019-06-27

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

1.建立多对一的单向关联关系

01.配置单向多对一关联

Dept.hbm.xml文件

SEQ_NUM

 

在以上映射代码中,dept属性使Dept类型,而EMP表的外键DEPTNO是整数类型,显然类型不匹配,因此不能使用<property>元素来映射dept属性,而要使用<many-to-one>元素;

<many-to-one>元素建立了dept属性和EMP表的DEPTNO之间的映射

Emp.hbm.xml文件

SEQ_NUM

03.测试类

@Test    public void test(){        Session session = HibernateUtil.currentSession();        Transaction tx = session.beginTransaction();//开始一个事务        Dept dept=new Dept();//部门        dept.setDeptName("小卖部");        session.save(dept);//保存部门对象        Emp emp=new Emp();//员工        emp.setEmpname("李狗蛋");        session.save(emp);        tx.commit();//关闭事务        HibernateUtil.closeSession();    }

工具类

@Entitypublic class HibernateUtil {    private static final ThreadLocal
sessionTL=new ThreadLocal
(); private static Configuration configuration; private final static SessionFactory sessionFactory; static{ try { configuration=new Configuration().configure(); sessionFactory=configuration.buildSessionFactory(); } catch (Exception e) { e.printStackTrace(); throw new ExceptionInInitializerError(e); } } public static Session currentSession(){ Session session=sessionTL.get(); //如果session为null,则打开一个新的session if (session==null) { session=sessionFactory.openSession(); sessionTL.set(session); } return session; } public static void closeSession(){ Session session=sessionTL.get(); sessionTL.set(null); session.close(); }}

2.建立一对多双向关联关系

配置双向一对多关联

private Set
emps=new HashSet
(); public Set
getEmps() { return emps; } public void setEmps(Set
emps) { this.emps = emps; }

在Dept.hbm.xml中写入<set>标签

<set>name属性:设定持久化的属性名

<key>:column属性设定与所关联的持久化类对应的表的外键

<one-to-many>:class属性设定与所关联的持久化类

01.测试类

@Test    public void onetomanyTest(){        Session session = HibernateUtil.currentSession();        Transaction tx = session.beginTransaction();        Dept dept = (Dept)session.load(Dept.class, 1);        //建立dept对象和emp对象的一对多双向关联关系        Set
emps = dept.getEmps(); for (Emp emp : emps) { System.out.println(emp.getEmpname()); } //session.save(dept);//保存dept对象 tx.commit();//关闭事务 HibernateUtil.closeSession(); }
@Test    public void onetomanyTest(){        Session session = HibernateUtil.currentSession();        Transaction tx = session.beginTransaction();        //建立dept对象和emp对象的一对多双向关联关系        Dept dept=new Dept();        Emp emp=new Emp();        dept.setDeptName("中部");        emp.setEmpname("张三");        emp.setDept(dept);        dept.getEmps().add(emp);        //session.save(dept);//保存dept对象        tx.commit();//关闭事务        HibernateUtil.closeSession();    }

先创建一个Dept对象和Emp对象,接着建立两者的一对多双向关联关系,最后调用sessiom.save(dept)方法持久化Dept对象。

转载于:https://www.cnblogs.com/s1294/p/5765589.html

你可能感兴趣的文章
在阿里云服务器windows server2012r iis上部署.net网站
查看>>
为easyui添加多条件验证
查看>>
Linux mem/swap/buffers/cached 区别
查看>>
13 memcache服务检查
查看>>
go install之后没有生成bin目录的原因(环境变量GOBIN)
查看>>
uva 10441(poj 2337 欧拉通路)
查看>>
DS博客作业07--查找
查看>>
Codeforces_733C
查看>>
[改善Java代码]动态加载不适合数组
查看>>
Mysql打开日志信息
查看>>
javaScript----Http对象封装
查看>>
Struts2入门
查看>>
纯JS,AJAX
查看>>
数据结构上机1顺序表
查看>>
如何搭建自己的SPRING INITIALIZR server
查看>>
JDK5-注解
查看>>
定义表单控件的id和name注意点
查看>>
UILabel里字体带下划线
查看>>
Ios开发之多线程编程——NSThread
查看>>
linux下网站压力测试工具webbench
查看>>