Hibernate——关联关系的CRUD(增删改查)一
来源:互联网 发布:在淘宝开网店要多少钱 编辑:程序博客网 时间:2024/06/16 18:30
两张ManyToOne双向关联的表Group和User
(一)增
通过保存user把group也保存
@Testpublic void testSaveUser() {User u = new User();Group g = new Group();u.setName("u1");g.setName("g1");u.setGroup(g);Session session = sf.getCurrentSession();session.beginTransaction();session.save(u);session.getTransaction().commit();}
ManyToOne有一个cascade(级联)属性,@ManyToOne(cascade={CascadeType.ALL})
对父表的操作会同步到子表(cascade影响增删改(CUD),不影响读取(R))
通过保存group把user也保存
public void testSaveGroup() {User u1 = new User();User u2 = new User();Group g = new Group();u1.setName("u1");u2.setName("u2");u1.setGroup(g);u2.setGroup(g);g.setName("g1");g.getUsers().add(u1);g.getUsers().add(u2);Session session = sf.getCurrentSession();session.beginTransaction();session.save(g);session.getTransaction().commit();}@OneToMany(cascade=CascadeType.ALL)
可以看出通过一的这方保存多的这方要麻烦很多
(二)读
默认情况下读取Many的一方会自动把One的一方也取出来,而读取One的一方则不会自动读取Many的一方。
如果想要通过One读取Many,需要
@OneToMany(mappedBy="group",
cascade=CascadeType.ALL,
fetch=FetchType.EAGER)
(尽量不要两边同时设EAGER)
fetch影响读取(R)
@Testpublic void testGet() {testSaveGroup();Session session = sf.getCurrentSession();session.beginTransaction();Group g = (Group)session.get(Group.class, 1);session.getTransaction().commit();for(User u:g.getUsers()){System.out.println(u.getName());}}
比如上一段代码,若设置fetch=FetchType.LAZY,则会出现错误,因为session在commit之后已经被关闭,无法从数据库取出user;但在commit之前取出user则可以实现。
阅读全文
1 0
- Hibernate——关联关系的CRUD(增删改查)一
- Hibernate中关联关系的CRUD(增删改查)
- Hibernate——关联关系的CRUD(增删改查)二
- 13hibernate hibernate关联关系的CRUD(增删改查)
- Hibernate的增删改查CRUD
- 实现hibernate的crud(增删查改)
- Hibernate实现数据的增删改查(CRUD)操作
- Hibernate初学者---多对多双向关联数据表的CRUD增删改查
- oracle的CRUD(增删改查)
- mybatis的增删查改(CRUD)
- hibernate核心API和级联的增删改查(CRUD)
- hibernate 基本的CRUD增删改查方法
- hibernate对单表增删改查(CRUD)
- Hibernate入门(6):CRUD 增删改查
- Hibernate基本概念与CRUD(增删改查)
- hibernate笔记05 Hibernate实现类的crud(增删改查)操作
- hibernate关联对象的增删改查------查
- 【Hibernate框架开发之七】Hibernate使用Annotation中各种关系映射的CRUD(增删改查)&&集合映射&&继承映射
- 医药公司的html和CSS文件1
- HDU-1253-胜利大逃亡
- c语言extern,引用,排序
- 块级元素以内联方式显示出现的问题
- 改善程序员生活质量的 3 + 10 习惯
- Hibernate——关联关系的CRUD(增删改查)一
- 大端地址与小端地址的区分
- jupyter notebook 更改工作目录
- R实战0:【R安装】Windows
- 三角形计数
- Java编程思想复用类
- Java-实现两个int类型变量值的交换,要求不使用中间变量
- java笔记(四)之循环练习
- 实现组合算法