假设两个对象User和Group,在数据库模型上Group为主表,User为从表,属于一对多的关系。
hibernate进行save操作时候,如何进行联级操作。
普通的做法:在session事务中先进行主表的save操作,使对象转化为persisent状态,再进行从表User的save操作。
@Test
public void testSaveUser(){
User u = new User();
u.setName("CZS") ;
Group g = new Group();
g.setName("g1") ;
//g.setId(1) ;
u.setGroup(g) ;
Session session = sessionFactory.getCurrentSession() ;
session.beginTransaction() ;
session.save(g) ;
session.save(u) ;
session.getTransaction().commit() ;
}
那么当我们想,已经在表之中确定好两个表之间的关系,如何在hibernate进行子表操作的时候同时自动操作主表对象,让hibernate自动进行联级操作?
可以在对象模型的@ManyToOne中设定属性cascade[]:
@ManyToOne(cascade={CascadeType.ALL})
@ManyToOne(cascade={CascadeType.ALL})
@JoinColumn(name="t_groupid")
public Group getGroup() {
return group;
}
public void setGroup(Group group) {
this.group = group;
}
进行Save:
@Test
public void testSaveUser(){
User u = new User();
u.setName("CZS") ;
Group g = new Group();
g.setName("g2") ;
//g.setId(1) ;
u.setGroup(g) ;
Session session = sessionFactory.getCurrentSession() ;
session.beginTransaction() ;
//session.save(g) ;
session.save(u) ;
session.getTransaction().commit() ;
}
同理存储主表级联子表操作在主表对象加入@OneToMany(cascade={CascadeType.ALL}):
@OneToMany(mappedBy="group",cascade={CascadeType.ALL})
public Set<User> getUsers() {
return users;
}
public void setUsers(Set<User> users) {
this.users = users;
}
session操作则比较麻烦,需要相互设置两个对象模型之间的关系:
@Test
public void testSaveGroup(){
User u1 = new User();
u1.setName("CZS") ;
User u2 = new User() ;
u2.setName("LMY") ;
Group g = new Group();
g.setName("g1") ;
Set<User> users = new HashSet<User>() ;
users.add(u1) ;
users.add(u2) ;
g.setUsers(users) ;
u1.setGroup(g) ;
u2.setGroup(g) ;
Session session = sessionFactory.getCurrentSession() ;
session.beginTransaction() ;
session.save(g) ;
session.getTransaction().commit() ;
}
分享到:
相关推荐
一键生成指令php think curd(关联语句+sql文件) EasyAdmin框架以内置快速生成CURD的命令, 包括控制器、视图、模型、JS文件。能够使开发者效率得到进一步提升。 备注:在进行CURD命令行之前, 请按照规范设计表结构, ...
这篇关于"thinkPHP之CURD开发简单源码"的内容,旨在帮助新手快速理解和掌握如何在ThinkPHP框架下进行基本的数据操作。 首先,创建(Create)数据通常涉及到向数据库中插入新的记录。在ThinkPHP中,你可以通过Model...
ThinkPHP的ORM(对象关系映射)系统在模型类中实现了各种数据库操作方法,其中 CURD 操作是基础且核心的部分,代表了创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)。而其中的where方法是查询...
你需要定义一个模型,然后调用它的`$save()`方法。 2. **读取(Read)**:读取数据是通过GET请求从服务器获取。在AngularJS中,可以使用$http服务或ngResource模块的`$query()`或`$get()`方法。通常,你会在控制器...
SpringMVC之CURD小Demo适合新手学习,没有具体的链接数据库,利用map保存数据,相当于数据库,新手学习阶段自己的一些总结,希望能帮到大家
标题中的“所有使用数据库的Web应用都'just CURD Apps(只是CURD应用)'”指的是在Web开发中,大部分应用程序的核心功能围绕着四个基本操作:创建(Create)、读取(Read)、更新(Update)和删除(Delete),简称CURD...
本教程将详细讲解如何利用EXT实现SQL Server数据表的CURD操作,并提供一个可以直接使用的EXT应用程序示例。 **1. CURD操作** CURD是数据库操作的基本概念,代表Create(创建)、Read(读取)、Update(更新)和...
**Entity Framework (EF)**: EF是微软的ORM(对象关系映射)工具,它允许开发者使用C#对象直接操作数据库,而无需编写SQL语句。在ASP.NET MVC5中,EF通常通过DbContext类与数据库交互,提供方便的Linq查询语法和改变...
在ASP.NET MVC3项目中,结合Entity Framework或NHibernate等ORM(对象关系映射)工具,可以利用LINQ轻松实现对数据库的CURD(创建Create、读取Read、更新Update、删除Delete)操作。 下面,我们将深入探讨如何在MVC...
data方法是ThinkPHP CURD操作中的一个重要组成部分,它主要用来设置模型对象的数据属性,并可以与其他CURD操作方法配合使用,实现对数据的读取或写入。 在ThinkPHP中,data方法通常用于设置数据对象的值,无论是在...
8. **CURD操作**: CRUD操作包括Create(创建)、Read(读取)、Update(更新)和Delete(删除)。在SSM中,这些操作可以通过Service层的方法实现,例如,使用`insert()`、`selectById()`、`updateById()`和`...
在数据库管理领域,PostgreSQL是一种广泛应用的关系型数据库管理系统(RDBMS),以其强大的功能和开源特性受到广大开发者青睐。本文将深入探讨PostgreSQL中的CURD操作以及存储过程,并结合jdbc、hibernate、ibatis三...
总的来说,"mongodb_node.js"的学习涵盖了MongoDB和Node.js的基础知识,包括如何在Node.js环境中使用MongoDB进行数据操作,以及如何利用Mongoose这个强大的框架进行数据模型定义和关联关系管理。同时,也提到了开发...
curd oracle. curd oracle. curd oracle.
Java后台结合EasyUI实现CURD操作是Web...这个“java后台+easyui完整curd”的项目为初学者提供了学习Java Web开发的实用范例,涵盖了后端编程、前端设计和数据库操作等多个方面,有助于提升开发者综合运用技术的能力。
通过学习和实践这个"thinkphp CURD完整案例",开发者可以深入理解如何在ThinkPHP框架下进行数据库操作,这对于构建动态Web应用来说是至关重要的技能。同时,这也是提升PHP编程能力和数据库管理能力的有效途径。
- ThinkPHP CURD方法之`field`方法详解 - ThinkPHP CURD方法之`data`方法详解 - ThinkPHP CURD方法之`order`方法详解 - ThinkPHP CURD方法之`page`方法详解 - ThinkPHP CURD方法之`limit`方法详解 - ThinkPHP ...
- [ThinkPHP CURD方法之field方法详解](你可能感兴趣的文章链接) - [ThinkPHP CURD方法之data方法详解](你可能感兴趣的文章链接) - [ThinkPHP CURD方法之table方法详解](你可能感兴趣的文章链接) - [ThinkPHP CURD...
【Hibernate学习笔记(1-13)】是传智播客李勇的教程,涵盖了Hibernate框架的基础到进阶内容。Hibernate是一个流行的ORM(对象关系映射)框架,它旨在解决Java面向对象编程与关系型数据库之间的模型不匹配问题,即...
总的来说,"一个CURD的demo"涵盖了数据库管理的核心操作,通过xxm_admin.sql文件可以学习到实际的SQL语句应用,并了解如何在实际项目中进行数据库操作。同时,这个话题也延伸到了数据库驱动的后端开发,涉及到编程...