org.springframework.orm.hibernate3.SessionFactoryUtils
Hibernate Session处理协助类,允许事务范围内的Session重用。同样提供了异常信息的转义。
支持受Spring管理及不受Spring管理的JTA事务同步(例如简单JTA或者EJB CMT),透明的支持事务范围内的Hibernate Sessions。注意:对于不受Spring管理的JTA事务,必须在Hibernate的配置当中指定JTA的TransactionManagerLookup。
org.springframework.orm.hibernate3.SessionHolder
包装了Hibernate Session及Hibernate事务的Session holder。在一个给定的Session工厂(SessionFactory)中的Hibernate事务管理对象( HibernateTransactionManager )绑定该类实例至当前线程。
org.springframework.orm.hibernate3.SpringSessionContext
Hibernate 3.1's CurrentSessionContext接口实现类,SessionFactoryUtils通过该类实例获得spring管理下与当前线程绑定的Session。
Used by Spring's LocalSessionFactoryBean
when told to expose a transaction-aware SessionFactory. This is the default as of Spring 2.5.
你可以自定义不同的CurrentSessionContext接口实现,并在设置SessionFactory工厂时,通过hibernate.current_session_context_class属性指定您的CurrentSessionContext实现。
org.springframework.orm.hibernate3.LocalSessionFactoryBean
FactoryBean接口创建了Hibernate的Session工厂。这是在spring应用环境中安装Hibernate Session工厂的常用方式(请参考FactoryBean接口);
通过依赖注入,这个Session工厂可以被传递到基于Hibernate支持的Dao中。
对于该类的配置及可以通过xml格式的Hibernate配置文件(通过制定“configLocation”属性),也可以完全通过该类完成。一个典型的配置总是由
一个或者多个"mappingResources"属性,"hibernateProperties" 属性(不是绝对必须的), 和一个“dataSource”属性(SessionFactory使用)完成。
“dataSource”属性同样可以由Hibernate的配置文件指定。但是这里的“dataSource”属性(指当前类内部的)支持任何基于Spring配置的DataSource,
而不仅仅是Hibernate所依赖的数据库连接提供者。
从单个数据库应用到分布式事务,SessionFactory的处理策略适用于大多数的应用。Hibernate事务管理对象或者JTA事务管理对象可用于不同的
场合,JTA事务管理对象仅用于多个数据库的事务处理。
默认情况下这个工厂对象将会派生出一个事务感知(transaction-aware)的SessionFactory型代理对象。无论使用任何事物管理策略
(local/JTA/EJB CMT)或者任何事物同步机制(Sping/JTA),Spring均可以使数据在使用原生Hibernate Session工厂,getCurrentSession()方法
的同时仍旧可以参与Spring管理的当前事务过程(ThreadLocal)。此外,getCurrentSession()方法对请求范围内的Session对象(由OpenSessionInViewFilter / OpenSessionInViewInterceptor管理的)提供了完美支持。
org.springframework.orm.hibernate3.HibernateTransactionManager
HibernateTransactionManager是一个为Hibernate Session工厂提供服务的PlatformTransactionManager接口实现。
HibernateTransactionManager和一个绑定在当前线程上的Hibenrate Session对象进行捆绑。SessionFactoryUtils对
象和HibernateTemplate对象可以感知当前线程内的Session对象,并自动参与当前线程内的事务处理。Using either
of those or going through SessionFactory.getCurrentSession() is required for Hibernate access code that needs
to support this transaction handling mechanism.
支持自定义的隔离级别,及Hibernate事务超时设定。
这个事务管理对象很适合于那种使用单Hibernate Session工厂的事务型数据访问应用,但是它也同样支持在一个事务中
直接的数据源访问(例如相同数据源的JDBC代码访问)。这样就允许混合型的应用代码,例如使用Hibernate访问,使用
JDBC访问(并不知道同时使用了Hibernate)!Application code needs to stick to the same simple Connection lookup
pattern as with DataSourceTransactionManager (i.e. DataSourceUtils.getConnection(javax.sql.DataSource) or going
through a TransactionAwareDataSourceProxy).
....................
org.springframework.orm.hibernate3.HibernateAccessor
HibernateTemplate和HibernateInterceptor父类,定义了像SessionFactory,flushing行为等通用属性。
不要尝试直接使用该类。请参考HibernateTemplate和HibernateInterceptor.
org.springframework.orm.hibernate3.HibernateInterceptor
这个拦截器在进入方法调用之前为当前线程绑定一个新的Hibernate Session实例,在方法执行完毕之后关闭并移除。
如果当前线程内已存在Session实例(来自HibernateTransactionManager对象或者已被Hibernate拦截器拦截的方法
环境),这个拦截器将会使用已有的Session实例。
应用代码必须通过SessionFactoryUtils.getSession方法或者更好的方式——Hibernate自己的SessionFactory.getCurrentSession()
方法获得与当前线程绑定的Session对象。通常情况下,代码如下所示:
- public void doSomeDataAccessAction() {
-
Session session = this.sessionFactory.getCurrentSession();
- ...
-
- }
public void doSomeDataAccessAction() {
Session session = this.sessionFactory.getCurrentSession();
...
// No need to close the Session or translate exceptions!
}
注意:通过委托的SessionFactoryUtils.convertHibernateAccessException方法,拦截器将会自动的将Hibernate异常
转换成与org.springframework.dao异常体系兼容的异常(像HibernateTemplate那样)。如果想要获取原始异常,可
以关闭这个功能。
这个类可以认为是HibernateTemplate回调方法的一个替代方案。优点是:
1)回调方法不需要使用匿名类。
2)在数据访问的应用代码中可以抛出任何应用异常。
缺点是依赖额外的拦截配置。然而,需要注意的是,通常情况下,在一个事务内部执行的数据访问代码不需要配置该
拦截器。在事务开始的起点将会有一个与线程绑定的Session实例,所以增加这个拦截器仅仅是在需要对Session实例
的属性微调例如flush模式 - 或者需要异常转义的时候。
org.springframework.orm.hibernate3.HibernateTemplate
简化Hibernate数据访问代码的辅助类。自动转换Hibernate原生异常为符合org.springframework.dao异常体系的DataAccessExceptions异常。
最重要execute方法支持实现了HibernateCallback接口的Hibernate访问代码。无论是HibernateCallback接口实现或
者其他的调用代码,无需关心对Session对象的获取和关闭以及Session对象的生命期异常。对典型的单步骤调用,提
供了多种便利方法(find, load, saveOrUpdate, delete)。
在一个service实现中可以通过一个SessionFactory引用直接获得该实例,或者在一个应用的上下文环境中获得一个配
置好的实例作为该service的内部引用。注意:SessionFactory应当永远以bean的形式被配置在应用的上下文当中,第
一种情况下直接提供给service实现,第二种情况提供模板实例引用。
转自:http://jef.iteye.com/blog/324518
相关推荐
### 关于 "org.springframework.orm.hibernate3.LocalSessionFactoryBean" 未找到问题的知识点解析 #### 一、问题背景 在开发基于Spring与Hibernate整合的应用时,可能会遇到“`org.springframework.orm.hibernate...
标题中的"org.springframework.orm.hibernate4.HibernateOptimisticLockingFailureException"是一个具体的异常类型,源自Spring框架的Hibernate4模块。这个异常通常在乐观锁(Optimistic Locking)机制失败时抛出,...
其中,`org.springframework.orm.jar`是Spring框架中的一个子模块,主要关注对象关系映射(ORM)集成,使得Java应用程序能够方便地与各种数据库进行交互。本文将深入探讨Spring ORM模块的核心概念、功能以及实际应用...
这些错误包括但不限于 `org.springframework.orm.ObjectRetrievalFailureException`、`org.springframework.beans.factory.BeanCreationException` 和 `org.springframework.dao.InvalidDataAccessApiUsageException...
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"> ``` 2. **使用 `@Transactional` 注解**: 在Service层或具体的业务逻辑方法上添加 `@...
spring-hibernate3.jar包,直接导入路径即可,解决Class 'org.springframework.orm.hibernate3.LocalSessionFactoryBean' not found这个错误
18. class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 19. <property name="dataSource" ref="dataSource" /> 20. <property name="hibernateProperties"> 21. <props> 22...
org.springframework.orm-3.0.0.M4.jar: 整合第三方的ORM框架,如hibernate,ibatis,jdo,以及spring的JPA实现 org.springframework.transaction-3.0.0.M4.jar: 为JDBC、Hibernate、JDO、JPA等提供的一致的声明式和...
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/...
`org.springframework.jdbc`和`org.springframework.orm`包下的代码处理了与数据库的交互逻辑,实现了事务管理,使得数据操作更加安全和高效。 Web模块是Spring在Web应用中的关键,包含了Spring MVC(Model-View-...
3. **org.springframework.web.servlet-3.0.5.RELEASE.jar**: 这个模块是Spring MVC的实现,它是Web应用开发的重要部分。它提供了模型-视图-控制器架构,用于处理HTTP请求,解耦业务逻辑和用户界面。它还支持视图...
Spring3和Hibernate3是两个非常重要的Java开发框架,它们在企业级应用开发中扮演着核心角色。Spring是一个全面的后端应用框架,提供依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)以及大量的集成工具。而...
7. `org.springframework.orm-3.1.0.RELEASE.jar`:ORM(对象关系映射)模块提供了与各种ORM框架如Hibernate、JPA集成的支持,帮助开发者在面向对象的代码中操作关系数据库。 8. `org.springframework.aop-3.1.0....
3. **数据访问/集成**:Spring的DAO(Data Access Object)支持提供了数据库访问的抽象层,包括JDBC、ORM(Object-Relational Mapping)框架如Hibernate和MyBatis的集成。3.1.0.RC1版本强化了对JPA 2.0的支持,增强...
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <value>com.org.entity</value> <prop key="hibernate....
"org.springframework.spring-library-3.1.0.M2.lib"可能是Spring框架的库文件,包含所有Spring模块的类和资源,版本号3.1.0.M2意味着这是一个预发布版本,可能在正式版之前用于测试和评估。 在SSH集成中,Spring...
- **IoC容器**:深入研究`org.springframework.beans`和`org.springframework.context`包,可以理解Spring如何通过XML或注解实现依赖注入。 - **AOP实现**:在`org.springframework.aop`包中,可以看到Spring如何...
在Hibernate 3中,`LocalSessionFactoryBean`的类路径发生了改变,从`org.springframework.orm.hibernate.LocalSessionFactoryBean`变为`org.springframework.orm.hibernate3.LocalSessionFactoryBean`。这个更改...
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect <prop key="hibernate.show_sql">...