07.session的delete和update方法讲解
package com.gyf.hibernate.test; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.junit.Test; import com.gyf.hibernate.domain.User; public class Lesson07 { @Test public void test1(){ //用户数据 //1.获取核心 配置文件对象 Configuration cfg = new Configuration().configure(); //2.创建会话工厂 SessionFactory factory = cfg.buildSessionFactory(); //3.通过会话工厂获取session对象 Session session = factory.openSession(); /** * 讲解session的delete 删除数据两种方式 * 第一方式:先获取要删除对象,然后再调用delete方法 * User user = (User) session.get(User.class, 7); * session.delete(user); * 第二方式:创建一个User,设置id,然后再调用delete方法 */ session.getTransaction().begin(); User user = new User(); user.setUid(8); session.delete(user); session.getTransaction().commit(); //4.关闭会话 session.close(); //5.关闭工厂,释放资源 factory.close(); } @Test public void test2(){ //用户数据 //1.获取核心 配置文件对象 Configuration cfg = new Configuration().configure(); //2.创建会话工厂 SessionFactory factory = cfg.buildSessionFactory(); //3.通过会话工厂获取session对象 Session session = factory.openSession(); User user = new User(); user.setPassword("123"); user.setUsername("gyf03"); session.save(user); //4.关闭会话 session.close(); //5.关闭工厂,释放资源 factory.close(); } @Test public void test3(){ //用户数据 //1.获取核心 配置文件对象 Configuration cfg = new Configuration().configure(); //2.创建会话工厂 SessionFactory factory = cfg.buildSessionFactory(); //3.通过会话工厂获取session对象 Session session = factory.openSession(); /** * 讲解session的update 更新数据 * 方式一.通过get获取数据,调用set方法,事务提交,自动执行update语句 * 方式二.自己封装User对象,设置id,这个时候,需要调用update方法 */ session.getTransaction().begin(); //1.获取数据,调用set方法,事务提交 User user = (User) session.get(User.class, 5); user.setPassword("123234"); /* User user = new User(); user.setUid(5); user.setUsername("gyf"); user.setPassword("123345");*/ //更新 //session.update(user);//有id会更新,update时,一定要有id //session.save(user);//有id会更新 //session.saveOrUpdate(user);//判断user有没有id,有id,更新数据,没有id的插入数据 session.getTransaction().commit(); //4.关闭会话 session.close(); //5.关闭工厂,释放资源 factory.close(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?