- 浏览: 2305613 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (314)
- JAVA基础知识 (54)
- Java-IO/FIle (16)
- Java-JDBC (4)
- JAVA-新增特性-注解 (3)
- Java-枚举 (2)
- Java-泛型 (1)
- Java-多线程 (15)
- Java-XML (4)
- Java-JMS(消息服务) (4)
- Java-JVM (0)
- Web Service服务 (7)
- Jsp (10)
- js (18)
- Struts框架 (11)
- Spring框架 (29)
- Hibernate框架 (28)
- Spring Boot框架 (2)
- ExtJS前端框架 (29)
- Jquery js库 (8)
- JUnit框架 (8)
- Selenium 测试 (1)
- NoSql---Redis (6)
- ORACLE数据库 (45)
- MySQL数据库 (4)
- tomcat (3)
- Nginx反向代理服务器 (4)
- web应用服务器通用知识 (3)
- 开发工具IDE (14)
- UML建模 (1)
- SVN CVS 版本管理 (6)
- git 分布式版本管理 (4)
- 报表设计 (5)
- 文件上传下载 (2)
- 数据算法 (1)
- 存储过程 (5)
- JSON 相关 (1)
- OGNL表达式 (3)
- Util工具包 (9)
- 设计模式 (15)
- linux 相关 (3)
- life think (3)
- 工作流管理框架 (1)
- 大数据-Hadoop (1)
最新评论
-
huih:
很不错的文章
SpringMVC+Hibernate+Spring 简单的一个整合实例 -
calm01:
学习了.
Spring <bean>标签属性 Autowire自动装配(转载) -
lizhenlzlz:
我的也是拦截不了service层
SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)(转载) -
josh_123:
讲的不错,很详细,如果quartz定时任务类采用不继承任何类的 ...
Spring,jdk定时任务的几种实现以及任务线程是串行还是并行执行(转载) -
human_coder:
你知道eclipse调试怎么可以回调吗?有时候总是调快了,不能 ...
Debug---Eclipse断点调试基础
1.虽然继承了HibernateDaoSupport这个类,但是this.getSession(),获得的session也要在使用后即使关闭,因为这个session是原生的session不是经过sping代理过的,并且还没有事物管理,自动提交,自动关闭连接等功能,所以使用使用getSession()获得session时一定要关闭。
2.使用getHibernateTemplate()中的1.exceute(callback) 2. executeFind(callback) 3.execute(callback, boolean)时一定要注意:1和2会点方法中使用的session都是经过spring代理过的会自动关闭,但是3最后一个参数标示的是:回调函数中使用的session是否是本地的(没有经过是spring代理过,没有自动关闭连接的功能)。true:本地的 false:spring代理过的(不用但是session是否关闭)
3.spring的bean的默认管理都是单列模式,在ssh整合中保证各dao的的实例是无状态的,佛则在一旦有某个方法设置状态之后,别的方法也就有了状态,但是别的方法又不需要这个状态,或者对别的放产生了别的不好的影响:例如
getHibernateTemplate().setMaxResults(3);
一旦是给HibernateTemplate设置了最大输出记录数,那么以后调用这个类中的别的方法的最大记录数也就是3个,对别人调用这个类的别的方法产生的副作用,除非你再次设置你想要的最大记录数,setMaxResults(10);
4,都说Spring 和 Hibernate是绝配。今天有点小小心得,拿出来共享一下。 当我们费了九牛二虎之力终于把环境全配好之后,有一个问题摆在面前: 如何访问数据库? 通过继承HibernateDaoSupport我们有两个选择: getSession().createQuery("from Users"); getHibernateTemplate().find( "FROM Users); 用哪个呢?困惑啊。 网上找了找资料都是推荐用getHibernateTemplate,原因说的不是很清楚。 于是我做了如下测试: 分别循环调用getSession().createQuery("from Users");getHibernateTemplate().find( "FROM Users); 1000次 结果getSession()很快就包无法建立连接了。而getHibernateTemplate屁事没有可以跑完。 通过后台观察,使用getSession会在数据库中留下很多SQL*Net message from client的连接,终止测试后连接自动释放。 而getHibernateTemplate则从头到尾都使用一个连接。 难道是getSession()不会自动释放连接? 于是我又分别循环调用getSession().createQuery("from Users");getHibernateTemplate().find( "FROM Users); 5次 发现当前端程序一结束, getSession的5个连接立刻就释放了。结合前面1000次时终止测试后连接自动释放,可以说明getSession()是 会自动释放连接的。 结论: 1、getSession()和getHibernateTemplate都可以自动释放连接(当然你的配置要正确),但是在一个线程内 getSession会get很多个session(就是开很多个会话、连接),很可能导致数据库连接超过上限。所以推荐使用 getHibernateTemplate。 2、如果有些语句无法用getHibernateTemplate实现,可以使用getHibernateTemplate.execute使用 HibernateCallback回调接口。 另:可以设定HibernateTemplate的AllowCreate为True,并在finally中关闭Session。也可以将true作为参 数传递到super.getSession(..)方法中取得Session。这样也可以,就是麻烦点。 参见: http://springframework.org/docs/api/org/springframework/orm/hibernate3 /HibernateTemplate.html http://www.mxjava.com/blog/article.asp?id=246 请各位高手不吝赐教。 另:用myEclipse自动生成的HibernateDAO代码中。4.1.1版本的myEclipse自动生成的findById方法使用的是 getSession方法获得连接, 不过在6.0中已经修改为使用getHibernateTemplate方法。5.0的没有测试。 getSessionFactory().getCurrentSession()
发表评论
-
教你使用Hibernate的QBC查询(转载)
2015-12-18 17:19 4215转载自:http://developer.51cto.com ... -
hibernatesynchronizer3开发工具的使用方法
2014-11-24 14:35 25811. hibernatesynchronizer3可以帮助 ... -
Hibernate锁机制(悲观锁,乐观锁)
2014-09-24 17:16 2085锁(locking) 业务逻辑的实现过程中,往往需要保证 ... -
六种方式实现hibernate查询,及IDE推荐 (转载)
2014-07-16 18:13 1247hibernate查询的6种方法。分别是HQL查询,对象 ... -
SpringMVC+Hibernate+Spring 简单的一个整合实例
2014-07-04 16:14 87759SpringMVC又一个漂亮的web框架,他与Struts2 ... -
Struts2、hibernate和spring下载,整合所需jar包
2014-07-04 16:00 4454ssh三个框架各自所有版本下载地址如下 Struts f ... -
Hibernate Criteria的 Criterion,Projection,Restrictions等条件设置
2014-04-01 16:46 38013在查询方法设计上可以灵活的根据Criteria的特点来方便 ... -
Hibernate的Example示例查询
2013-07-29 17:32 4009org.hibernate.criterion.Ex ... -
Spring与Hibernate集成中的session问题
2013-04-15 15:53 31551.通过getSession()方法 ... -
剖析Hibernate主键生成几种常用方式
2012-12-05 20:01 13151.assigned: 主键由外部程序负责生成,无需H ... -
正确理解Hibernate Inverse (转)
2012-12-05 11:02 1360通过Hibernate Inverse的设 ... -
Hibernate中session.getconnection()的替代方法
2012-08-27 16:39 51642010-04-15 10:21 Hibernate ... -
Hql总结 查询结果动态组装成List(map),List(bean),List(list),List(set)等格式(转)
2012-08-17 15:51 73171.//查询整个对象String hql="from ... -
sql和hql中join语句区别,以及hibernate中内连接,迫切内连接,左外连接,迫切左外连接,右外连接的区别(合集)
2012-07-24 17:39 3197第一:sql和hql中join语 ... -
Hibernate_HQL--实体、属性查询,参数绑定,引用查询(随时温习一遍)
2012-07-05 17:52 15916是Hibernate官方推荐的查询模式,比Criteria功能 ... -
hibernate里createSQLQuery的addEntity()和setResultTransformer()方法
2012-06-21 10:55 565411. 使用SQLQuery对原生SQL查询执行的控制是通过S ... -
hibernate的session.connection被session.dowork()替代
2012-06-14 10:22 4079Hibernate3.3.2版本中getSessi ... -
Hibernate继承映射多态的详解
2012-06-05 17:36 1950在面向对象的程序领域中,类与类之间是有继承关系的,例如Java ... -
No Hibernate Session bound to thread, and configuration does not allow creation
2012-04-18 10:57 2172用SessionFactory.getCurrentSessi ... -
Hibernate的generator属性之意义(转)
2012-04-01 11:06 1324Hibernate的Generator属性有7种class,本 ...
相关推荐
closeIterator 方法用于立即关闭由 iterate 方法创建的 Iterator 对象。 contains 方法 contains 方法用于检查给定的对象是否在 Session 缓存中。 createSessionProxy 方法 createSessionProxy 方法用于创建一个...
通过`HibernateTemplate`,开发者可以非常方便地进行数据的增删改查等基本操作,而无需关心Hibernate Session的开启、关闭及事务管理等问题。本文将详细介绍`HibernateTemplate`的一些常用方法及其应用场景。 #### ...
- **统一的异常处理**:使用HibernateTemplate可以避免出现由Session关闭不当导致的问题。 - **集成Spring框架**:与Spring框架高度集成,可以方便地管理事务。 - **易于测试**:由于使用了Spring的依赖注入,使得...
而在使用`HibernateTemplate`时,这些操作都被自动管理,从而避免了因遗漏关闭`Session`而导致的资源泄露问题。 3. **异常处理**:当使用`HibernateTemplate`执行数据库操作时,它会自动捕获并处理Hibernate抛出的...
该方法首先检查`Session`是否已经关闭,然后获取当前`Session`的`Transaction`对象,并调用其`begin`方法。 2. **`getTransaction()`** 方法用于获取当前`Session`的`Transaction`对象。如果该对象尚未初始化,则...
无需手动开启和关闭Session,也不用关心事务的回滚和提交。 2. **异常转换**:它将Hibernate的异常转换为Spring的DataAccessException,这样整个应用程序可以有一致的异常处理策略,而不用处理多种不同来源的异常。...
在实际开发中,为了更好地管理Session和事务,我们通常会使用DAO(数据访问对象)模式,或者Spring的HibernateTemplate或JPA的EntityManager。这些高级工具可以自动化处理事务管理和Session生命周期,减少出错的可能...
`MyHibernateTemplate`类是整个机制的核心部分,它负责处理与数据库会话相关的所有事务管理,包括开启和关闭会话、事务提交或回滚等。具体来看: 1. **执行数据库操作**:`executeWithNativeSession`方法接收一个...
在实际应用中,通常推荐使用Transaction模板或者Spring的HibernateTemplate或JpaTemplate,它们可以帮助你更好地管理Session和事务。例如,Spring的`@Transactional`注解可以自动管理事务的生命周期,使得代码更加...
当Spring与Hibernate集成时,Spring通过其`HibernateTemplate`或`HibernateSessionManager`等类来管理和协调Hibernate的`Session`。`Session`是Hibernate的核心概念,它是与数据库交互的主要接口,用于保存、更新和...
它只要获得SessionFactory的引用,就可以智能地打开Session,并在持久化访问结束后关闭Session,程序开发只需完成持久层逻辑,通用的操作则由HibernateTemplate完成。 24.3 Spring对Hibernate的简化 24.3.2 简化的...
在事务开始时打开Session,在事务结束时关闭或回滚Session。虽然比前两种方式更底层,但提供了更大的灵活性和控制权。 在实际应用中,选择哪种方式取决于项目的需求和团队的偏好。对于新项目,通常推荐使用...
相比之下,直接使用`Session`进行操作更为直接,但需要手动处理Session的生命周期,比如开启、关闭Session以及异常处理。 在代码示例中,有一个批量更新的例子: ```java public void batchUpdate(Object[] params)...
最后关闭Session来结束操作。需要注意的是,执行完此操作后,与被删除对象关联的Session中的实例将变为脱管状态。 批量插入数据: HQL同样支持批量插入数据的操作。在Hibernate中,批量插入的HQL语法与标准的SQL...
通过`getHibernateTemplate()`方法,我们可以获取到一个预配置好的HibernateTemplate对象,它会自动处理Session的打开、关闭和事务提交/回滚。 3. HibernateTemplate的使用:HibernateTemplate是Spring提供的一个...
`HibernateTemplate`是Spring对Hibernate ORM框架的一个封装,它提供了一组方便的方法,使得在处理数据库操作时无需直接与`Session`对象交互。这些方法包括对实体的增删改查(CRUD)操作,以及支持命名查询和分页...
Spring框架的延迟加载和声明式事务处理是两个关键特性,...通过合理地使用Open Session in View机制,可以解决延迟加载时Session关闭导致的问题,同时,声明式事务处理则简化了事务管理,提升了应用的效率和可扩展性。
- 在使用`getCurrentSession()`时,事务会在请求结束时自动关闭,这可能导致在JSP页面中查询数据时session已关闭。为了解决这个问题,可以添加`OpenSessionInViewFilter`过滤器,确保在视图渲染期间保持session打开...
子类通过getSessionFactory()获取SessionFactory,然后创建Session实例进行操作,降低了与Hibernate的直接耦合。 总的来说,JdbcTemplate适合简单的SQL操作,而HibernateTemplate适用于更复杂的对象关系映射场景。...