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单表操作实例解析
# 加载
# 所示
# 不存在
# 抛出
# 是一个
# 迭代
# 几个
# 分页
# 当我们
# 此种
# 小编
# 的是
# 而不是
# 法会
# 第一个
# 在此
# 一是
# 才会
# 两种
# 对其
相关文章:
如何快速搭建高效WAP手机网站吸引移动用户?
营销式网站制作方案,销售哪个网站招聘效果最好?
如何通过虚拟主机快速搭建个人网站?
威客平台建站流程解析:高效搭建教程与设计优化方案
个人摄影网站制作流程,摄影爱好者都去什么网站?
小建面朝正北,A点实际方位是否存在偏差?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
如何制作一个表白网站视频,关于勇敢表白的小标题?
如何解决ASP生成WAP建站中文乱码问题?
盐城做公司网站,江苏电子版退休证办理流程?
如何快速重置建站主机并恢复默认配置?
如何快速生成可下载的建站源码工具?
建站之星客服服务时间及联系方式如何?
手机网站制作与建设方案,手机网站如何建设?
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
成都响应式网站开发,dw怎么把手机适应页面变成网页?
如何在IIS服务器上快速部署高效网站?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
企业微网站怎么做,公司网站和公众号有什么区别?
如何在万网自助建站平台快速创建网站?
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
Python多线程使用规范_线程安全解析【教程】
如何通过万网虚拟主机快速搭建网站?
如何在Golang中指定模块版本_使用go.mod控制版本号
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
济南网站制作的价格,历城一职专官方网站?
小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建
网站制作费用多少钱,一个网站的运营,需要哪些费用?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
浅谈Javascript中的Label语句
大连网站制作公司哪家好一点,大连买房网站哪个好?
,石家庄四十八中学官网?
建站主机选虚拟主机还是云服务器更好?
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
如何彻底卸载建站之星软件?
宁波免费建站如何选择可靠模板与平台?
如何在搬瓦工VPS快速搭建网站?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
如何用搬瓦工VPS快速搭建个人网站?
深圳网站制作的公司有哪些,dido官方网站?
建站10G流量真的够用吗?如何应对访问高峰?
活动邀请函制作网站有哪些,活动邀请函文案?
香港服务器部署网站为何提示未备案?
英语简历制作免费网站推荐,如何将简历翻译成英文?
制作网站的基本流程,设计网站的软件是什么?
高防服务器租用首荐平台,企业级优惠套餐快速部署
油猴 教程,油猴搜脚本为什么会网页无法显示?
广德云建站网站建设方案与建站流程优化指南
建站之星价格显示格式升级,你的预算足够吗?
长沙做网站要多少钱,长沙国安网络怎么样?
*请认真填写需求信息,我们会在24小时内与您取得联系。