Spring中使用GetHibernateTemplate

【Bug已解决】codex file edit fails / Write operation denied — CodeX CLI 文件编辑失败解决方案 CodeX CLI 编辑文件时报写入被拒绝,本质是沙箱限制或权限不足。文中给出配置允许目录、修复权限、Git stash 管理冲突等完整方案。 阅读详情

getHibernateTemplate

前提条件:你的类必须继承HibernateDaoSupport 
一: 
回调函数: 
public List getList(){
   return (List ) getHibernateTemplate().execute(
     new HibernateCallback() {
      public List doInHibernate(final Session s)
        throws HibernateException, SQLException {

     StringBuffer sb = new StringBuffer();
     Query query = s.createSQLQuery(sb.toString());//<STRONG>执行普通sql</STRONG>
     Query query = s.createQuery(sb.toString());// <STRONG>执行hql </STRONG>
     List list = query.list();
     return list ;
      }
     });   
}
采用这种做法的好处是:不用关心事务。session的创建和销毁,一切都在程序内部完成。看看名字doInHibernate就知道好处了。不好的是程序看起来比较乱!个人认为。 
二: 
getHibernateTemplate().find():
List list = getHibernateTemplate().find(String sql ):
这种的前提是sql必须是hql ,原始sql 不能执行。

三: 
自己获取session处理。 
获取session的两种方式:this.getSession();和this.getHibernateTemplate().getSessionFactory().openSession(); 
获取session以后再createQuery操作就一样了。但是这种做法,是需要自己去手动关闭session的。所以你需要配置openSessioninview,个人认为不推荐使用!

其他: 
getHibernateTemplate.delete(Object);

getHibernateTemplate.save(Object); 
getHibernateTemplate.update(Object);

总结:推荐使用回调函数。

HibernateTemplate提供非常多的常用方法来完成基本的操作,比如通常的增加、删除、修改、查询等操作,Spring 2.0更增加对命名SQL查询的支持,也增加对分页的支持。大部分情况下,使用Hibernate的常规用法,就可完成大多数DAO对象的CRUD操作。下面是HibernateTemplate的常用方法简介:

q void delete(Object entity):删除指定持久化实例

q deleteAll(Collection entities):删除集合内全部持久化类实例

q find(String queryString):根据HQL查询字符串来返回实例集合

q findByNamedQuery(String queryName):根据命名查询返回实例集合

q get(Class entityClass, Serializable id):根据主键加载特定持久化类的实例

q save(Object entity):保存新的实例

q saveOrUpdate(Object entity):根据实例状态,选择保存或者更新

q update(Object entity):更新实例的状态,要求entity是持久状态

q setMaxResults(int maxResults):设置分页的大小

下面是一个完整DAO类的源代码:

public class PersonDAOHibernate implements PersonDAO

{

 //采用log4j来完成调试时的日志功能

private static Log log = LogFactory.getLog(NewsDAOHibernate.class);

 //以私有的成员变量来保存SessionFactory。

private SessionFactory sessionFactory;

//以私有变量的方式保存HibernateTemplate

private HibernateTemplate hibernateTemplate = null;

 //设值注入SessionFactory必需的setter方法

 public void setSessionFactory(SessionFactory sessionFactory)

{

 this.sessionFactory = sessionFactory;

 }

 //初始化本DAO所需的HibernateTemplate

public HIbernateTemplate getHibernateTemplate()

{

 //首先,检查原来的hibernateTemplate实例是否还存在

 if ( hibernateTemplate == null)

 {

 //如果不存在,新建一个HibernateTemplate实例

 hibernateTemplate = new HibernateTemplate(sessionFactory);

 }

 return hibernateTemplate;

}

 //返回全部的人的实例

 public List getPersons()

 {

 //通过HibernateTemplate的find方法返回Person的全部实例

 return getHibernateTemplate().find("from Person");

 }

 public void savePerson(Person person)

 {

 getHibernateTemplate().saveOrUpdate(person);

 }

 /**

 * @ param personid 需要删除Person实例的主键

 * /

 public void removePerson(int personid)

 {

 //先加载特定实例

 Object p = getHibernateTemplate().load(Person.class, new Integer(personid));

 //删除特定实例

 getHibernateTemplate().delete(p);

 }

}

1、信息与物理世界:“It from Bit”还是“Bit from It”? 这篇博文探讨了物理学与信息理论之间的深刻联系,从惠勒提出的“It from Bit”概念出发,讨论了信息是否是物质世界的基础,或者物质是否是信息的来源。文章回顾了2013年举办的征文竞赛以及众多学者对这一问题的不同观点,涵盖了量子理论、热力学、计算机科学、黑洞物理以及时空本质等多个领域。同时,文章还分析了信息理论在哲学层面的含义,并展望了其在未来理论、实验和应用研究中的潜力与方向。 阅读详情

相关推荐

UE5.3像素流送Docker化部署:从Linux服务器搭建到云端实时渲染

本文详细介绍了在Linux服务器上使用Docker容器化部署UE5.3像素流送服务的完整流程。通过将虚幻引擎运行时、信令服务器和TURN服务打包为标准化镜像,利用Docker Compose进行编排,实现了云端实时渲染应用的快速部署、环境一致与弹性扩展,有效解决了传统部署中的环境依赖与运维难题。

k0l1m2n3o的博客 199

getHibernateTemplate方法

getHibernateTemplate 前提条件:你的类必须继承HibernateDaoSupport  一:  回调函数:  public List getList(){    return (List )getHibernateTemplate().execute(     new HibernateCallback() {      public List doInHiber

i_mc_90的专栏 1322

叶绿体基因组提交NCBI全流程避坑指南

叶绿体基因组作为环状细胞器DNA,其数据提交并非简单上传,而是需严格遵循INSDC标准的学术出版行为。其核心原理在于元数据完整性、拓扑结构语义一致性与分类学路径精确匹配;技术价值体现在保障序列可追溯、可复现、可互操作;典型应用场景涵盖植物系统发育、条形码开发及合成生物学底盘构建。实践中,FASTA头行格式、feature table嵌套规则、taxid绑定及BankIt静默校验等环节极易引发失败。本文聚焦NCBI|叶绿体基因组数据上传中的高频报错与隐性约束,提供面向生物信息工程师的实操级规范解析。

weixin_31960565的博客 318

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

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

zhangmiao12的专栏 359

UE5多人联机实战:从零搭建LAN游戏房间(含UMG界面配置)

本文详细介绍了如何在UE5中从零开始搭建一个完整的局域网(LAN)多人游戏房间系统。内容涵盖项目基础配置、UMG主菜单设计、会话创建与搜索的核心实现,并重点解析了创建会话的关键参数配置与常见陷阱,帮助开发者快速掌握UE5多人联机开发的核心流程。

weixin_29001683的博客 690

Python Trimesh库实战:5分钟搞定STL文件解析与3D模型可视化

本文介绍了如何使用Python的Trimesh库快速解析STL文件并进行3D模型可视化。通过简洁的代码示例,演示了从环境搭建、模型加载、几何数据提取到基础变换和批量处理的核心流程,帮助开发者和工程师在5分钟内高效完成3D数据处理与可视化任务。

weixin_32005771的博客 158

遇到异常Session/EntityManager is closed

使用struts2+hibernate遇到的问题 使用hibernate操作是数据库时遇到异常Session/EntityManager is closed 1、第一进行删除操作时,会调用dao层进行删除,但是 第二次在继续删除时就会报异常 原因:每次调用了session之后, 在事务提交了以后就会把session关闭 这是因为Hibernate会维护这个Session, 在我提交事务的时...

qq_38707216的博客 9572

zds1104示波器使用指南

(2)将探头连接到探头补偿端,按下auto setup按键,一键捕获。(3)连接需要测量信号,开始查看波形。操作说明书,可以自行查看操作说明书。

m0_61973119的博客 6762

Hibernate hql getHibernateTemplate()常用方法汇总

getHibernateTemplate()常用方法 [b]一、find(String queryString);  [/b]       示例:[code="java"]this.getHibernateTemplate().find("from bean.User");[/code]         返回所有User对象   [b]二、find(String querySt...

zwdsmileface的专栏 401

YOLOv8剪枝 lamp剪枝测试精度仅掉0.7个点,速度提高11.8fps!

该摘要介绍了LAMP剪枝方法的创新点和理论分析,重点突出了其最小化L2失真和分层自适应剪枝的特性。LAMP通过引入ξ变量在最坏情况下优化剪枝失真,并简化了计算过程。文章还提供了代码移植的具体步骤,包括创建compress.py文件和相关配置说明。

FJN110的博客 1112

在ParaView中编程实现涡量可视化

综上所述,本文介绍了在ParaView中使用编程方式实现涡量可视化的方法,并提供了相应的Python代码示例。通过灵活运用ParaView的编程接口,我们可以根据特定需求定制复杂的数据可视化流程,进一步深入了解和分析流体的旋转行为。ParaView是一款强大的开源数据可视化工具,它提供了丰富的功能和灵活的编程接口,使用户能够定制数据可视化流程。你可以根据需要自定义颜色映射范围和颜色,上述代码中的RGBPoints列表中包含了两个点,分别对应涡量值为0和10时的颜色。在实际使用过程中,你需要替换代码中的。

ByteProwl的博客 1434

Hibernate 的getHibernateTemplate()方法使用

<br />getHibernateTemplate()spring 中获得由spring所配置的hibernate的操作对象,然后利用此对象进行,保存,修改和删除等操作,此方法是在配置了spring以后,hibernate由spring接管,不直接使用hibernate的session了 HibernateTemplate提供非常多的常用方法来完成基本的操作,比如通常的增加、删除、修改、查询等操作,Spring 2.0更增加对命名SQL查询的支持,也增加对分页的支持。大部分情况下,使用Hibernate的

wintree的专栏 2万+

RK3588+YT9215快速拓展以太网口

YT9215支持7个端口的非阻塞数据传输,确保高效的数据流处理;在开发过程中,最重要的一点就是YT9215与RK3588的GMAC连接和配置部分,下面是gmac1对应dtsi文件的修改,包括注释掉rgmii_phy1对应的mdio1,以及gmac1对应的phy-handle部分,同时将gmac1修改成1000Mbps全双工模式。这就是最简单,最快速的RK3588拓展网口的方法了,如果需要用到交换芯片的其他功能,那就不可以直接使用原厂提供的bin,而是需要对YT9215进行另外的驱动开发。

带着耳朵取流浪的博客 2783

spring框架中getSession与getHibernateTemplate的区别

一直都很疑惑在spring框架中getSession与getHibernateTemplate的区别。相同的地方不用说大家都是调用数据库返回结果的。但为什么要这样有二个不同的兄弟呢。认真学习了一下(其实还是很粗略的) 从使用上看 getHibernateTemplate必须继承或实例HibernateDaoSupport当然包括sessionFactory Java代码 @S...

Java-Jinguo 176

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Spring 的 getHibernateTemplate() 和getSession()的区别

1.使用getSession()方法你只要继承sessionFactory,而使用getHibernateTemplate()方法必须继承 HibernateDaoSupport当然包括sessionFactory,这点区别都不是特别重要的,下面这些区别就很重要了 2.getSession()方法是没有经过spring包装的,spring会把最原始的session给你,在使用完之后必须自己调用相...

lanmaokyle的专栏 155

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

spring+hibernate整合中HibernateTemplate对象的getHibernateTemplate()获取为空

在spring+hibernate整合中HibernateTemplate对象的getHibernateTemplate()获取为空,各路大侠请指教指教!!

livem 995

Spring中常用的hql查询方法(getHibernateTemplate())

继承org.springframework.orm.hibernate3.support.HibernateDaoSupport类 getHibernateTemplate() spring 中获得由spring所配置的hibernate的操作对象,然后利用此对象进行,保存,修改和删除等操作, 此方法是在配置了spring以后,hibernate由spring接管,不直接使用hi

从来年少爱做梦,一心只想往前飞 885

getSession()与getHibernateTemplate()区别

getSession()与getHibernateTemplate()区别一直都很疑惑在spring框架中getSession与getHibernateTemplate的区别。相同的地方不用说大家都是调用数据库返回结果的。但为什么要这样有二个不同的兄弟呢。认真学习了一下(其实还是很粗略的)从使用上看getHibernateTemplate必须继承或实例HibernateDaoSupport当然包括sessionFactoryJava代码  @SuppressWarnings ( "unchecked" ) 

highwhite2009的专栏 637

getSession与getHibernateTemplate…

一直都很疑惑在spring框架中getSession与getHibernateTemplate的区别。相同的地方不用说大家都是调用数据库返回结果的。但为什么要这样有二个不同的兄弟呢。认真学习了一下(其实还是很粗略的) 从使用上看 getHibernateTemplate必须继承或实例HibernateDaoSupport当然包括sessionFactory Java代码   @Suppr

huangleijay的专栏 774

spring getHibernateTemplate() 返回null的问题

public class BasicDAOImpl extends HibernateDaoSupport implements BasicDAO{                public List findByHql(String hql)throws DataAccessException{      System.out.println("1111111111111"+getHi

chanllen的专栏 1807

在spring中 getHibernateTemplate 运用session

对应spring中数据库的访问,spring封装好了 HibernateTemplate。但有的时候还是回想用 session。 return (List)hibernateTemplate.execute( public Object doInHibernate(Session session) throws Hibernate Exception { List

wwwcomcn123的专栏 769

spring+hibernate 使用getHibernateTemplate实现分页

实现分页操作的代码: public List findPage(final int page ,final int pageSize){ //利用HibernateTemplate.execute()方法,以回调方式使用,不需要关闭session List costList = (List)getHibernateTemplate().exec

XiChuan的博客 5293

Spring HibernateTemplate getHibernateTemplate()

一、find(String queryString); 示例:this.getHibernateTemplate().find("from bean.User"); 返回所有User对象 二、find(String queryString , Object value); 示例:this.getHibernateTemplate().fin...

大漠孤烟 165

getHibernateTemplate()和getSession()的区别(转)

自动生成hibernate配置文件的时候,会在dao层用到getSession()方法来操作数据库记录,但是他还有个方法getHibernateTemplate(),这两个方法究竟有什么区别呢? 1.使用getSession()方法你只要继承sessionFactory,而使用getHibernateTemplate()方法必须继承 HibernateDaoSupport当然包括sessio...

先相信你自己,然后别人才会相信你。 227
上一篇: JAVA类中如何利用Comparator实现自定义排序
下一篇: 2014年影响Web前端发展的五类API
一博一言
博客等级 码龄15年 307粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值