这两天在学习这两个框架的整合,问题如下:Hibernate 配置文件如下:
<hibernate-configuration>
<session-factory>
<property name="connection.url">
jdbc:sqlserver://localhost:1433;databaseName=ManagerDB
</property>
<property name="connection.username">sa</property>
<property name="connection.password">000000</property>
<property name="connection.driver_class">
com.microsoft.sqlserver.jdbc.SQLServerDriver
</property>
<property name="dialect">
org.hibernate.dialect.SQLServerDialect
</property>
<property name="current_session_context_class">thread</property>
<property name="show_sql">true</property>
<mapping resource="com/web/entity/TabStrule.hbm.xml" />
<mapping resource="com/web/entity/TabStudent.hbm.xml" />
<mapping resource="com/web/entity/TabSysData.hbm.xml" />
<mapping resource="com/web/entity/TabTeaScore.hbm.xml" />
</session-factory>
</hibernate-configuration>Spring 配置文件如下:<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">
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.microsoft.sqlserver.jdbc.SQLServerDriver">
</property>
<property name="url"
value="jdbc:sqlserver://localhost:1433;databaseName=ManagerDB">
</property>
<property name="username" value="sa"></property>
<property name="password" value="000000"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
</bean>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="studao" class="com.web.dao.TabStudentDAO">
<property name="hibernateTemplate" ref="hibernateTemplate"></property>
<property name="name" value="ddddddddddddddddd"></property>
</bean>
</beans>这里你要相信我,我确保数据库连接时正确的,如果撤出spring,Hibernate 使用是正常的。在这里希望不要回答什么数据库连接错误了,Hibernate 配置是否正常,我确信Hibernate 配置一切正常。插入数据代码:public class TabStudentDAO extends HibernateDaoSupport{ public TabStudentDAO() {
// TODO Auto-generated constructor stub
}
public void save(TabStudent stu){
getHibernateTemplate().save(stu);
}
}Servlet 中调用:TabStudent stu=new TabStudent();
stu.setClassId(1);
stu.setCreateTime(new Date());
stu.setRe("");
stu.setStuAdd("ddddddd");
stu.setStuAge(23);
stu.setStuName("hechen");
stu.setStuSex("男");
stu.setStuTel("15800466429");
stu.setExt1("");
stu.setExt2("");
stu.setExt3("");
stuDAO=new TabStudentDAO();
stuDAO.save(stu);
问题出现在 dao 中 getHibernateTemplate() 方法获得对象总是为 null。 确保spring 容器被加载了。
测试如下:
WebApplicationContext context=WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());
SessionFactory sf= (SessionFactory)context.getBean("sessionFactory");
if(sf!=null){
System.out.println(">>>>>>>>>>>>>>>>>>>>>>");
}dao 中 getHibernateTemplate() 方法获得对象总是为 null。 希望得到正确答案,再次声明 不要说什么ssh,这里是spring 和 Hibernate 的整合,与struts无关
<hibernate-configuration>
<session-factory>
<property name="connection.url">
jdbc:sqlserver://localhost:1433;databaseName=ManagerDB
</property>
<property name="connection.username">sa</property>
<property name="connection.password">000000</property>
<property name="connection.driver_class">
com.microsoft.sqlserver.jdbc.SQLServerDriver
</property>
<property name="dialect">
org.hibernate.dialect.SQLServerDialect
</property>
<property name="current_session_context_class">thread</property>
<property name="show_sql">true</property>
<mapping resource="com/web/entity/TabStrule.hbm.xml" />
<mapping resource="com/web/entity/TabStudent.hbm.xml" />
<mapping resource="com/web/entity/TabSysData.hbm.xml" />
<mapping resource="com/web/entity/TabTeaScore.hbm.xml" />
</session-factory>
</hibernate-configuration>Spring 配置文件如下:<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">
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.microsoft.sqlserver.jdbc.SQLServerDriver">
</property>
<property name="url"
value="jdbc:sqlserver://localhost:1433;databaseName=ManagerDB">
</property>
<property name="username" value="sa"></property>
<property name="password" value="000000"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
</bean>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="studao" class="com.web.dao.TabStudentDAO">
<property name="hibernateTemplate" ref="hibernateTemplate"></property>
<property name="name" value="ddddddddddddddddd"></property>
</bean>
</beans>这里你要相信我,我确保数据库连接时正确的,如果撤出spring,Hibernate 使用是正常的。在这里希望不要回答什么数据库连接错误了,Hibernate 配置是否正常,我确信Hibernate 配置一切正常。插入数据代码:public class TabStudentDAO extends HibernateDaoSupport{ public TabStudentDAO() {
// TODO Auto-generated constructor stub
}
public void save(TabStudent stu){
getHibernateTemplate().save(stu);
}
}Servlet 中调用:TabStudent stu=new TabStudent();
stu.setClassId(1);
stu.setCreateTime(new Date());
stu.setRe("");
stu.setStuAdd("ddddddd");
stu.setStuAge(23);
stu.setStuName("hechen");
stu.setStuSex("男");
stu.setStuTel("15800466429");
stu.setExt1("");
stu.setExt2("");
stu.setExt3("");
stuDAO=new TabStudentDAO();
stuDAO.save(stu);
问题出现在 dao 中 getHibernateTemplate() 方法获得对象总是为 null。 确保spring 容器被加载了。
测试如下:
WebApplicationContext context=WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());
SessionFactory sf= (SessionFactory)context.getBean("sessionFactory");
if(sf!=null){
System.out.println(">>>>>>>>>>>>>>>>>>>>>>");
}dao 中 getHibernateTemplate() 方法获得对象总是为 null。 希望得到正确答案,再次声明 不要说什么ssh,这里是spring 和 Hibernate 的整合,与struts无关
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
<property name="name" value="ddddddddddddddddd"></property>
</bean>
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
</bean>直接指向 hibernate 的配置就行<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean> 这一句貌似 也没有必要配吧?
<bean id="studao" class="com.web.dao.TabStudentDAO">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean> 这句 改成 sessionFactory 就行了
试下。 看能否解决你滴问题
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"> <value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
就可以了,
dao的配置有点太灵活了
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="mappingResources">
<list>
<value>实体类映射文件</value>
</list>
</property><bean id="studao" class="com.web.dao.TabStudentDAO">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
@Resource(name = "hibernateTemplate", type = HibernateTemplate.class)
private HibernateTemplate hibernateTemplate;
然后再加上get set方法试试