第一种情况:
public class BaseDao<T> extends HibernateDaoSupport{}tomcat 报错
Caused by: java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
at org.springframework.orm.hibernate3.support.HibernateDaoSupport.checkDaoConfig(HibernateDaoSupport.java:118)
at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1469)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409)
... 21 more估计就是sessionFactory 没注入进去第二种情况:
public class BaseDao<T>
@Autowired
protected SessionFactory sessionFactory; public void setSessionFactory(final SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
} /**
* 取得sessionFactory.
*/
public Session getSession() {
return sessionFactory.getCurrentSession(); } 如果用这种获得Session tomcat报错如下:
Exception in thread "main" org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
如果用 这种
public Session getSession() {
return sessionFactory.getOpenSession(); }
tomcat就好了,不报错,项目也能运行成功,但是每次都没关闭session,用起来也蛮麻烦的
我想用 HibernateDaoSupport 里面的方法获得session 用习惯了 而且开发也方便 ,
请问到底该怎么配置啊!!!
解决方案 »
- 有没有使用spring tool stuite这个开发工具的?会的进,求指教
- 项目路径问题。
- bgsound 背景音乐
- 请问使用JDBC 和JNDI连接数据库哪个更有优势?
- 大家做SSH工程时候,Spring配置文件分几个?怎么分好?
- asp中的response.write在jsp中是什么?
- 请教:递归算法中的ResultSet如何重用。急!!!!
- 在jsp用什么方法可以实现与html分离
- 新人求助,用MYECLIPSE部署运行的网站,是如何制作的?
- IE访问不了127.0.0.1:8080,其它浏览器能访问
- 急求答案 发布webservice 的问题
- <bean:message key=""> 国际化
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close" >
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property><bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<aop:config proxy-target-class="true">
<aop:advisor
pointcut="execution(* com.xxxxx..*Service.*(..))"
advice-ref="txAdvice" />
</aop:config><bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>这些有吗?
你要在hibernate的配置文件里配置:
<property name="current_session_context_class">thread</property>
告诉hibernate把session绑定到thread上
<param-name>debug</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>classes</param-name> <param-value>java.lang.Object</param-value> </init-param> </servlet>
{
private HibernateTemplate hibernateTemplate;
...get()/set()...
public void save(T t)
{
this.HibernateTemplate.save(t);
}
}在配置文件配置好sessionFactory等。
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close" >
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property><bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
既然继承了类HibernateDaoSupport就不
需要再写 @Autowired
protected SessionFactory sessionFactory;
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>在方法上加上 @Transactional