Spring + Hibernate 整合,前辈们救救小弟 我不会吝啬分的

hechenqingtian 2010-05-20 05:49:26
这两天在学习这两个框架的整合,问题如下:

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.setRemark("");
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无关
...全文
183 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
haijun286972766 2010-05-21
  • 打赏
  • 举报
回复
先帮顶了! 没空这会要外出!
colin_pxx 2010-05-21
  • 打赏
  • 举报
回复
在DAO里面加上
@Resource(name = "hibernateTemplate", type = HibernateTemplate.class)
private HibernateTemplate hibernateTemplate;
然后再加上get set方法试试
lq282514781 2010-05-21
  • 打赏
  • 举报
回复
顶顶顶
ladybirds2008 2010-05-20
  • 打赏
  • 举报
回复
帮你顶 给分不?
lc_HHHHH 2010-05-20
  • 打赏
  • 举报
回复
	<bean id="sessionFactory"
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>
zhou961270 2010-05-20
  • 打赏
  • 举报
回复
当然还hibernateTemaplate还是那个DAO 的一个属性
zhou961270 2010-05-20
  • 打赏
  • 举报
回复
你那个DAO里配一个hibernateTemplate的一个set方法就可以了,这才是set注入.
wasaia 2010-05-20
  • 打赏
  • 举报
回复
set注入,首先要有这个实例属性
wasaia 2010-05-20
  • 打赏
  • 举报
回复
set注入的实例属性在哪里?这样配hibernateTemplate你是指望hibernateDaoSupport知道模板的改变,可惜这样是不行的,要不dao中加实例属性hibernateDao,并在spring中配,要不改变实现方法,spring
dao的配置有点太灵活了
Derek-Chen 2010-05-20
  • 打赏
  • 举报
回复
你把Hibernate的配置文件配完整!(driver manager)

Spring 的配置文件中只需要用
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"> <value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
就可以了,
tanli902354 2010-05-20
  • 打赏
  • 举报
回复
你的hibernate 都配了 数据库的连接 , 你在 spring 里面又 配干嘛? 不是多此一举吗?

<bean id="sessionFactory"
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 就行了
试下。 看能否解决你滴问题
平淡面对 2010-05-20
  • 打赏
  • 举报
回复
换成:

<bean id="studao" class="com.web.dao.TabStudentDAO">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
<property name="name" value="ddddddddddddddddd"></property>
</bean>

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧