spring如何配置管理hibernate的Session

J2EE 码拜 6年前 (2015-07-11) 457次浏览 0个评论

spring 管理的hibernatesession时这样调用:

               getHibernateTemplate().get(entityClass, id)
		getHibernateTemplate().load(entityClass, id)
		getHibernateTemplate().find(queryString)
//或者
                          return (Page)template.execute(new HibernateCallback() {
				public Object doInHibernate(Session session) throws HibernateException, SQLException {
					Query query = setQueryParameters(session.createQuery(queryXsqlResult.getXsql()),pageRequest);
					Query countQuery = setQueryParameters(session.createQuery(removeOrders(countQueryXsqlResult                                                                      .getXsql())),pageRequest);

					return executeQueryForPage(pageRequest, query, countQuery);
				}
			});

现在问题是我想在spring 打开session时添加一个拦截如:

Session session = template.getSessionFactory().openSession(permissionInterceptor);

请问我应该在spring 如何配置或者是去做才能实现呢? session 就给spring管理。

100分

这个你只能去研究源码,然后找到切入点,通过继承啊,等扩展手段解决这个问题
 

这个你不搞源码,没人知道的,又不是常见的问题

 
我看了 hibernate的配置项可以做到这一点
(1)定义实现Interceptor接口的拦截器类
(2)通过Session启用拦截器,或者通过Configuration启用全局拦截器

new Configuration().setInterceptor( new AuditInterceptor() );

但是不知道怎么在配置文件里 配置Configuration他的setInterceptor

 
<bean id=”sessionFactory” class=”cn.sh.cares.framework.spring.annotationSessionFactoryBean”>
<property name=”dataSource” ref=”ppcDataSource”/>
<!–<property name=”lobHandler” ref=”lobHandler”/>–>
<property name=”annotatedClassesLocations”>
<list>
<value>classpath*:</value>
</list>
</property>
<property name=”hbmLocations”>
<list>
<value>classpath*:</value>
</list>
</property>
<property name=”hibernateProperties”>
<props>
<prop key=”hibernate.dialect”>cn.sh.cares.framework.dao.hibernate.OracleDialect</prop>
<prop key=”hibernate.format_sql”>true</prop>
<prop key=”hibernate.show_sql”>true</prop>
<prop key=”hibernate.use_sql_comments”>false</prop>
<prop key=”hibernate.cache.provider_class”>org.hibernate.cache.EhCacheProvider</prop>
<prop key=”hibernate.cache.use_query_cache”>true</prop>
<prop key=”hibernate.cache.use_second_level_cache”>true</prop>
<prop key=”hibernate.jdbc.batch_size”>20</prop>
<prop key=”hibernate.jdbc.fetch_size”>20</prop>
</props>
</property>
<property name=”entityInterceptor”>//找到了这里是。
<bean id =”auditInterceptor” class=”cn.sh.cares.framework.dao.hibernate.AuditInterceptor” />
</property>

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明spring如何配置管理hibernate的Session
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!