hibernate增删改查操作代码
发布时间 - 2026-01-11 03:12:07 点击率:次Hibernate对数据删除操作

删除User表中个一条数据,是需要更具User表的主键id值来删除的。首先根据id值向数据库中查询出来对应的对象。可以采用两种方式一是session的get方法,一个是session的load方法。
Session的Get方法:调用这个方法会返回一个Object对象。然后我们对其强制转换。Useruser = (User)session.get(User.class,” 402881e5441c035e01441c0360510003”); 当我们传递id值在数据中查找没有相应的结果时,get方法会返回一个null值。
区别:get方法加载的时候会立刻发出sql语句去查询,而load方法在执行的时候没有立刻的发出sql去查询,生成一个代理User,没有生成真正的User。当我们真正的去用这个user的时候才会加载真正的User。Load()支持延迟加载,而Get()不支持延迟加载。Get加载的对象不存在时返回的是null对象,而Load()加载对象不存在时会抛出ObjectNotFoundException异常。
Session的Load方法:同样是调用这个方法返回一个Object对象,再进行强制转换。
然后我们通过get或load加载上来对应user表id的对象,再调用session的delete方法删除该对象同时删除表中的一条记录,代码如下所示。
第一种删除方式。
publicvoid testDel1()
{
Sessionsession =null;
try
{
session= HibernateUtils.getSession();
//开启事务.
session.beginTransaction();
//采用load查询不存在的数据,hibernate会抛出object not found exception
Useruser = (User)session.load(User.class,"402881e5441c035e01441c0360510003");
//删除表中的记录.
//删除,建议用此种方式删除,先加载再删除.
session.delete(user);
//提交事务.把内存的改变提交到数据库上.
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.getTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
}
第二种删除方式,手动构造detached对象再删除。
代码如下所示。
//测试方法以test开头.测试del方法.返回存在的加载的.
publicvoid testDel2()
{
Sessionsession =null;
try
{
session= HibernateUtils.getSession();
//开启事务.
session.beginTransaction();
//手动构造的Detached对象.
User user =new User();
user.setId("402881e4441b3d1c01441b3f5dfe0001");
session.delete(user);
//提交事务.把内存的改变提交到数据库上.
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.getTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
}
Hibernate对数据查询操作
一般查询,代码如下所示。
//查询方法.
publicvoid testQuery1()
{
Sessionsession =null;
try
{
session= HibernateUtils.getSession();
session.beginTransaction();
//参数是一个字符串,是HQL的查询语句.注意此时的的UserU为大写,为对象的,而不是表的.
Queryquery = session.createQuery("from User");
//使用List方法.
List userList = query.list();
//迭代器去迭代.
for(Iterator iter=userList.iterator();iter.hasNext();)
{
Useruser =(User)iter.next();
System.out.println("id="+user.getId() + "name="+user.getName());
}
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.getTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
}
分页查询,代码如下所示。
//分页查询,从什么地方查,查几个;
publicvoid testQuery2()
{
Sessionsession =null;
try
{
session=HibernateUtils.getSession();
session.beginTransaction();
//参数是一个字符串,是HQL的查询语句.注意此时的的UserU为大写,为对象的,而不是表的.
Queryquery = session.createQuery("from User");
//从第一个开始查起.可以设置从第几个查起.
query.setFirstResult(0);
//最大条数为两个
query.setMaxResults(2);
//使用List方法.
List userList = query.list();
//迭代器去迭代.
for(Iterator iter=userList.iterator();iter.hasNext();)
{
Useruser =(User)iter.next();
System.out.println("id="+user.getId() + "name="+user.getName());
}
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.getTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
}
Hibernate对数据更新操作
手动构造detached对象,调用session的update()方法,代码如下所示。
//测试方法以test开头.测试update方法.返回存在的加载的.
publicvoid testUpdate1()
{
Sessionsession =null;
try
{
session= HibernateUtils.getSession();
//开启事务.
session.beginTransaction();
//采用load查询不存在的数据,hibernate会抛出object not found exception
//手动构造的Detached对象.
Useruser =newUser();
user.setId("402881e5441bfb0601441bfb075b0002");
user.setName("周六");
session.update(user);
//提交事务.把内存的改变提交到数据库上.
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.getTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
}
加载对象,调用session的update()方法,让对象处于持久化状态的时候进行更新操作,代码如下所示。
//测试方法以test开头.测试update方法.返回存在的加载的.
publicvoid testUpdate2()
{
Sessionsession =null;
try
{
session= HibernateUtils.getSession();
//开启事务.
session.beginTransaction();
//采用load查询不存在的数据,hibernate会抛出object not found exception
//先把要更新的查出来.
//建议采用此种方式,先加载再更新的方式.
Useruser = (User)session.load(User.class,"402881e5441bfb0601441bfb075b0002");
//查出来的话就直接放入了.处于持久化状态.
user.setName("周日");
//显示的调用,因为为持久化状态也可以不显示调用.
session.update(user);
//提交事务.把内存的改变提交到数据库上.
session.getTransaction().commit();
}catch(Exceptione){
e.printStackTrace();
session.getTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
}
总结
以上所述是小编给大家介绍的hibernate增删改查操作代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# hibernate增删改查
# Hibernate中Session增删改查操作代码详解
# hibernate通过session实现增删改查操作实例解析
# Hibernate对数据库删除、查找、更新操作实例代码
# 全面解析Hibernate关联操作、查询操作、高级特性、并发处理机制
# hibernate批量操作实例详解
# Java的Hibernate框架数据库操作中锁的使用和查询类型
# Java的Hibernate框架中用于操作数据库的HQL语句讲解
# Hibernate单表操作实例解析
# 加载
# 所示
# 不存在
# 抛出
# 是一个
# 迭代
# 几个
# 分页
# 当我们
# 此种
# 小编
# 的是
# 而不是
# 法会
# 第一个
# 在此
# 一是
# 才会
# 两种
# 对其
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
5种Android数据存储方式汇总
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
免费视频制作网站,更新又快又好的免费电影网站?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
lovemo网页版地址 lovemo官网手机登录
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门
Laravel集合Collection怎么用_Laravel集合常用函数详解
Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤
Linux网络带宽限制_tc配置实践解析【教程】
北京专业网站制作设计师招聘,北京白云观官方网站?
晋江文学城电脑版官网 晋江文学城网页版直接进入
如何用PHP快速搭建CMS系统?
node.js报错:Cannot find module 'ejs'的解决办法
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
C#如何调用原生C++ COM对象详解
Python高阶函数应用_函数作为参数说明【指导】
谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程
公司门户网站制作流程,华为官网怎么做?
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
制作公司内部网站有哪些,内网如何建网站?
Laravel如何创建自定义Artisan命令?(代码示例)
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
Laravel如何实现全文搜索功能?(Scout和Algolia示例)
Laravel如何创建自定义中间件?(Middleware代码示例)
Laravel API资源类怎么用_Laravel API Resource数据转换
如何快速搭建二级域名独立网站?
Laravel如何配置任务调度?(Cron Job示例)
如何在万网ECS上快速搭建专属网站?
Internet Explorer官网直接进入 IE浏览器在线体验版网址
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
Laravel如何使用withoutEvents方法临时禁用模型事件
Python文件异常处理策略_健壮性说明【指导】
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
如何用美橙互联一键搭建多站合一网站?
如何确保西部建站助手FTP传输的安全性?
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
javascript基于原型链的继承及call和apply函数用法分析

