首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

请问一个关于hibernateTemplate的有关问题

2012-01-01 
请教一个关于hibernateTemplate的问题我在注入hibernateTemplate的时候总是发现它的值为null. 但是检查不

请教一个关于hibernateTemplate的问题
我在注入hibernateTemplate的时候总是发现它的值为null. 但是检查不出原因来。 下面是我的代码, 麻烦大家帮忙查一下

AdminUserDAOImpl.java
-------------------------------- 
package com.brolinuk.irms.DAO;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.sworduk.irms.admin.AdminUser;

public class AdminUserDAOImpl extends HibernateDaoSupport implements AdminUserDAO{
  public void create(AdminUser adminuser) throws DataAccessException {
  getHibernateTemplate().save(adminuser);
  }
}

applicationContext.xml
————————————————————
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<!-- DataSource Definition -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/irms</value>
</property>
<property name="username">
<value>system</value>
</property>
<property name="password">
<value>system</value>
</property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mappingResources">
<list>
<value>adminUser.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLInnoDBDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="jdbcExceptionTranslator" class="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
<property name="jdbcExceptionTranslator">
<ref bean="jdbcExceptionTranslator"/>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="adminUserDAO" class="com.brolinuk.irms.DAO.AdminUserDAOImpl">
<property name="hibernateTemplate">
<ref bean="hibernateTemplate"/>
</property>
</bean>
<bean id="adminService" class="com.brolinuk.irms.admin.AdminServiceImpl">
<property name="adminUserDAO">
<ref local="adminUserDAO"/>
</property>
</bean>
</beans>




------解决方案--------------------



将adminUserDAO对template的注入直截改为对sessionFactory的注入
<bean id="adminUserDAO" class="com.brolinuk.irms.DAO.AdminUserDAOImpl"> 
<property name="hibernateTemplate"> 
<ref bean="hibernateTemplate"/> 
</property> 
</bean> 


<bean id="adminUserDAO" class="com.brolinuk.irms.DAO.AdminUserDAOImpl">
<property name="sessionFactory">
<ref bean="sessionFactory
</property>
</bean>


中间多加一步就不能实现注入了
[解决办法]
Lz可以参考一下配置:

XML code
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">        <property name="dataSource">            <ref bean="dataSource"/>        </property>        <property name="configLocation">            <value>classpath:com\transfar\cardmanage\hibernate\cfg\hibernate.cfg.xml</value>        </property>            </bean>
[解决办法]
rickhunterchen 

如果将adminUserDAO对template的注入直截改为对sessionFactory的注入 那样不就无法使用hibernateTemplate了吗。 这样我岂不是不能使用它的一些方法?

[解决办法]
正如1,2楼所说
直接通过注入essionFactory就可以直接用getHibernateTemplate().save()以及HibernateTemplate的其它方法

热点排行