利用HibernateCallback 回调查询

【Hibernate】HibernateCallback总结 HibernateCallback总结 HibernateTemplate提供了非常多的常用方法来 完成数据库的基本操作,使得持久层访问模板化 。只要创建HibernateTemplate实例后,注入一 个SessionFactory的引用就可以了,而无需手动 创建sessionFactory,从而可以更加智能的管理 Hibernate的Session,避免了对于try/catch的 大量使用。... 阅读详情
 

public long getMaxMailId() {

long maxId = 0l;
maxId = ((Long) (this.getHibernateTemplate().executeFind(
new HibernateCallback() {
public Object doInHibernate(org.hibernate.Session session)
throws HibernateException, SQLException {
String sql = "select max(id) from Mail";
Query query = session.createQuery(sql);
return query.list();

}
}).get(0))).longValue();
return maxId;
}

为什么不直接用: this.getSession().createQuery(sql); 来查询呢?

我们使用HibernateTemplate,有一个很重要的原因就在于我们不想直接控制事务,不想直接去获取,打开Session,开始一个事务,处理异常,提交一个事务,最后关闭一个Session。我们自己只专注于业务,不想去作这些重复而繁琐的操作。我们把这些责任全部委托给了HibernateTemplate,然后使用声明式的配置来实现这样的功能。

如果我们通过类似getSession()这样的方法获得了Session,那就意味着我们放弃了上面所说的一切好处。所以,如果楼主的业务类如果在使用HibernateTemplate的同时,又可以直接得到Session(而不是通过HibernateCallback),那么我敢说楼主的代码一定有bug


你当然可以直接使用Query。但是问题是HibernateTemplate提供了相当多有用的辅助功能。我们想用它提供的辅助功能。但是HibernateTemplate包装了Hibernate的代码,使用了它以后不能直接访问到Session了,也就是说,我们无法通过Session对象得到Query了。所以,这种情况下我们当然无法直接用Query来查询了。

HibernateTemplate提供这个HibernateCallback,就是为了满足这种使用了HibernateTemplate的情况下,仍然需要直接访问Session的需求而来的。它提供了在HibernateTemplate里面直接访问Session的能力。

这个就是我们要使用HibernateCallback的原因。

HibernateCallback使用方法 立即下载

相关推荐

LayaBox CommandBuffer描边使用详细

项目需要使用LayaBox做一个给3D物体动态描边的一个功能,前前后后踩了一些坑算是把这个东西给做出来了把我改好的代码贴上,分享给大家。 (1)想要使用描边你的引擎版本必须 >=2.9.0 (2)你必须下载 Laya官方的BlurShader库才能使用这个功能,下载地址:https://github.com/layabox/layaair-demo/tree/master/h5/3d/ts/LayaAir3D_PostProcess/BlurShader 下载完之后把BlurShader放到自己项目的

小智队长 1735

HibernateCallback()详解

HibernateTemplate提供了非常多的常用方法来完成数据库的基本操作,使得持久层访问摸板化,只要创建HibernateTemplate 实例后,注入一个SessionFactory的引用就可以了.无须手动创建sessionFactory,更加智能的管理Hibernate 的Session,没有大量的try/catch操作, void delete(Object entity)删除指

云淡风轻、仅此一抹 1万+

基于ROS2 Humble与Livox Mid-360的双雷达点云融合实战解析

本文详细解析了基于ROS2 Humble与Livox Mid-360的双雷达点云融合实战方案。从环境搭建、驱动安装、双雷达配置、外参标定、时间同步到点云融合核心实现,全面介绍了技术要点与避坑指南,并提供了工程化部署与性能优化建议,助力开发者高效实现高精度点云合成应用。

ss78901的博客 1093

【转】HibernateCallback()详解

HibernateTemplate提供了非常多的常用方法来完成数据库的基本操作,使得持久层访问摸板化,只要创建HibernateTemplate 实例后,注入一个SessionFactory的引用就可以了.无须手动创建sessionFactory,更加智能的管理Hibernate 的Session,没有大量的try/catch操作,  void delete(Object entity)删除指定...

sinat_18474835的博客 366

保姆级教程:用PyTorch从零实现SDE扩散模型(附完整代码与MNIST实战)

本文提供了一份详细的PyTorch教程,指导读者从零开始实现SDE扩散模型,并附有完整的代码示例和MNIST数据集实战。通过解释随机微分方程(SDE)的核心概念、模型架构设计、训练流程实现以及采样生成过程,帮助开发者掌握扩散模型的构建与应用。

weixin_28677005的博客 267

四足机器人如何用对抗运动先验(AMP)实现复杂地形行走?Unitree Go1实战解析

本文深入解析了四足机器人Unitree Go1如何通过对抗运动先验(AMP)算法实现复杂地形行走。AMP结合模仿学习与对抗训练,使机器人仅凭本体感知就能适应未知地形。文章详细介绍了AMP的核心架构、仿真训练工程实践以及在Unitree Go1上的部署优化方案,展示了其在极端地形下的卓越性能表现。

weixin_29050513的博客 329

利用HibernateCallback() 回调查询的疑问

public long getMaxMailId() { long maxId = 0l; maxId = ((Long) (this.getHibernateTemplate().executeFind( new HibernateCallback() { public Object doInHibernate(org.hibernate.Session session) ...

mush_me的专栏 157

如何用Arduino和HX711压力传感器制作一个简易电子秤(含OLED显示)

本文详细介绍了如何使用Arduino、HX711压力传感器和OLED显示屏制作一个简易电子秤。从硬件连接到软件编程,提供了分步教程,包括核心元件功能解析、接线方法、库安装、模块测试以及关键的校准流程。项目实践性强,适合创客和DIY爱好者学习嵌入式系统与传感器应用。

tea88的博客 536

HibernateTemplate.execute(HibernateCallback action)回调方式

今天在做codereview的时候,发现同事用了以下方法返回一个list。看了后台日志之后,很是奇怪,为什么只有一条sql,后台却打出了101条select。 /** * 根据练习加载试题 * 每次练习考试,有多条试题questionBank * 如果试题questionBank是选择题,又会对应4个选项questionOptions。 * 因此questionBank对象中有一个questionOptions集合,他们的关系是一对多 * @param pmId 练习ID

7223

移动端实战指南:深入理解 & 接入 IAB OMSDK

OMSDK(OpenMeasurementSDK)是IABTechLab推出的标准化测量工具,用于统一移动端/原生App广告的可见性和验证流程。其核心包括Native库(采集设备数据)和OMID JavaScript层(实现通信),通过标准化接口让开发者只需接入一套SDK即可兼容多个测量厂商,减少冲突和性能损耗。v1.4版本强化了对CTV和原生App场景的支持,而v1.5新增了画中画检测等功能。集成流程需通过IAB技术实验室注册下载,并遵循严格的命名空间规则。测试阶段需嵌入验证脚本并通过指定工具验证

帅次的博客 1190

华为OD技术面真题 - Python开发 - 2

汇总华为OD技术面八股Python八股,高频技术真题并提供详细解答。

qq_45776114的博客 910

getHibernateTemplate().execute(new HibernateCallback())方法

1. HibernateCallback是一个接口,该接口只有一个方法doInHibernate(org.hibernate.Session session),该方法只有一个参数 Session。   2. 方法 doInHibernate 的方法体就是 Spring执行的持久化操作。   3. 使用HibernateTemplate执行execute(new Hibern

小熊学习基地 743

【YOLOv8科研级优化】基于YOLOv9的GELAN模块重构C2f架构,显著提升模型精度与推理效率

打开确保模型解析器能识别GELANBlock模块。通过将YOLOv9的GELAN模块集成到YOLOv8的C2f模块中,我们实现了一个“强特征表达+高效计算”的目标检测模型。这个改进不仅在工程上能提升复杂场景下的检测效果,更在科研上提供了“多分支特征融合”的创新思路——这种思路可以延伸到其他检测网络(如Faster R-CNN、SSD)的改进中,帮你在论文中打造独特的研究点。

FJN110的博客 112

Hibernate操作数据库的回调机制--Callback

 1:一般情况下,在使用Hibernate Session存取数据库的代码中,基本上大部分是相同的,如下两个方法所示,   [html] view plaincopyprint?           //查询Teacher操作  ublic Teacher getTeacher(Long id) throws DataAccessException {  Sessi

极客on之路 687

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

回调HibernateCallback

Hibernate+Spring,由于本身提供的方法可能不能满足我们的查询,尤其是Criteria 查询,因此Spring为我们预留了回调接口,下面我们重新定制findAll(),HibernateTemplate给我们提供了executeFind方法和execute方法,executeFind 返回List方法,execute方法返回Object,接收一个参数回调接口HibernateCallb

石头 java,javaweb,c#, 1178

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

关于Hibernate中HibernateCallback()的回调

public long getMaxMailId() { long maxId = 0l; maxId = ((Long) (this.getHibernateTemplate().executeFind( new HibernateCallback() { public Object doInHibernate(org.hibernate.Session session) throws Hibe

moonsbird的专栏 2278

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Spring用回调HibernateCallBack方法

Spring用回调HibernateCallBack方法实现持久层一些功能,当这些功能不能满足需求时,我们也可以自已来重写HibernateCallBack,例: public class UsersDAO extends HibernateDaoSupport { ...... public List getUsers() { return getHibernateTemplate().exec

技术天地 1682

HibernateCallback()

HibernateTemplate提供了非常多的常用方法来完成数据库的基本操作,使得持久层访问摸板化,只要创建HibernateTemplate 实例后,注入一个SessionFactory的引用就可以了.无须手动创建sessionFactory,更加智能的管理Hibernate 的Session,没有大量的try/catch操作,     void delete(Object entity

King-Blog 360

Spring中使用HibernateCallback

HibernateTemplate还提供一种更加灵活的方式来操作数据库,通过这种方式可以完全使用Hibernate的操作方式。这种灵活方式主要是通过如下两个方法完成的: Object execute(HibernateCallback action) List executeFind(HibernateCallback action) HibernateCall...

aq9618154的博客 159

Hibernate回调--bernate的复杂用法HibernateCallback

转自:http://kewb.iteye.com/blog/128708   HibernateTemplate还提供一种更加灵活的方式来操作数据库,通过这种方式可以完全使用Hibernate的操作方式。HibernateTemplate的灵活访问方式是通过如下两个方法完成: q      Object execute(HibernateCallback action) q      Li...

Only the heart peace will be prosperity 133

使用 HibernateTemplate 实现分页查询 (HibernateCallback接口)

HibernateTemplate 只支持 .setMaxResults(int) 方法。         因此,做 Spring+Hibernate 分页处理要使用到一个接口 org.springframework.orm.hibernate3.HibernateCallback 来灵活操作数据库,该接口中有一个未实现的方法 Object doInHibernate (Session ses

c1005351789的专栏 578

HibernateCallback回调接口

关于HibernateCallback回调接口,先提两个问题: 1、什么是HibernateCallback 2、什么时候使用它 我们使用HibernateTemplate,有一个很重要的原因就在于我们不想直接控制事务,不想直接去获取,打开Session,开始一个事务,处理异常,提交一个事务,最后关闭一个Session。我们自己只专注于业务,不想去作这些重复而繁琐的操作。我们把这些责任全...

俊彩星驰 220

HibernateCallback 详解

HibernateCallback 详解

hddyhg的博客 291

HibernateCallback

今天项目中用到了,HibernateCallback。以前没用过,也不知道这样做的作用有多大。上来存档一下。HibernateTemplate还提供一种更加灵活的方式来操作数据库,通过这种方式可以完全使用Hibernate的操作方式。HibernateTemplate的灵活访问方式是通过如下两个方法完成:q      Object execute(HibernateCallback act

Luo2008wei的专栏 2963

关于Hibernate中的HibernateCallback

HibernateTemplate提供了非常多的常用方法来完成数据库的基本操作,使得持久层访问摸板化,只要创建HibernateTemplate 实例后,注入一个SessionFactory的引用就可以了.无须手动创建sessionFactory,更加智能的管理Hibernate 的Session,没有大量的try/catch操作,     void delete(Object entity)删

小李大哥 803
上一篇: Hibernate的二级缓存之查询缓存
下一篇: 如何画ER图
DiscussQuestions
博客等级 码龄19年 28粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值