BasicDAO sessionFactory注入问题

J2EE_VIVA 2008-03-03 11:40:08
这是我的Spring 配置文件

<?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">
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/test"></property>
<property name="username" value="root"></property>
<property name="password" value="123456"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>org/lostrue/model/Logintable.hbm.xml</value>
</list>
</property>
</bean>
<bean id="Factory" class="org.lostrue.dao.BasicDAO">
<property name="sessionFactorya" ref="sessionFactory"/>
</bean>

<bean id="logindao" class="org.lostrue.dao.impl.UserLoginDAOimpl"
scope="prototype" />
<bean id="loginservice"
class="org.lostrue.service.impl.UserLoginServiceimpl"
scope="prototype">
<property name="logindao">
<ref bean="logindao" />
</property>
</bean>
<bean name="/userLogin"
class="org.lostrue.struts.action.UserLoginAction" scope="prototype">
<property name="loginservice">
<ref bean="loginservice" />
</property>
</bean>
</beans>

这是我BasicDAO的代码
package org.lostrue.dao;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

/**
* @author intone
*
*/
public class BasicDAO {
private SessionFactory sessionFactorya ;

public SessionFactory getSessionFactorya() {
return sessionFactorya;
}
public void setSessionFactorya(SessionFactory sessionFactorya) {
this.sessionFactorya = sessionFactorya;
}
public Session getSession(){
return this.sessionFactorya.openSession();
}

}

以前未用过Struts + Hibernate + Spring结合做过开发
最近会要用上,于是自己做做,总是拿不到session,抛空指针异常!

struts配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
<data-sources />
<form-beans >
<form-bean name="userLoginForm" type="org.lostrue.struts.form.UserLoginForm" />

</form-beans>

<global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="userLoginForm"
input="/userLogin.jsp"
name="userLoginForm"
path="/userLogin"
scope="request"
type="org.springframework.web.struts.DelegatingActionProxy">
<forward
name="err"
path="/err.jsp"/>
<forward
name="succ"
path="/succ.jsp"/>
</action>

</action-mappings>

<message-resources parameter="org.lostrue.struts.ApplicationResources" />
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/beans.xml" />
</plug-in>
</struts-config>

谢谢了
...全文
297 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
J2EE_VIVA 2008-04-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 pizzame 的回复:]
看完你的代码我很晕的说~~

首先:
引用楼主 J2EE_VIVA 的帖子:
Struts + Hibernate + Spring
既然使用了Spring DAO为什么不继承HibernateDaoSupport呢?这样用Spring控制session,不是更好些吗?

其次:
你贴的1楼的log好像都是info信息。连告警都没有,怎么挑找问题的??

最后:
思路没问题的说,只是在实现上很混乱。
[/Quote]
我只用Spring控制代码之间的依耐关系。
DAO以前封装好了
session我给filter管理了
laitaogood 2008-03-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 pizzame 的回复:]
附上 继承HibernateDaoSupport的一些方法。

首先 DAO继承HibernateDaoSupport

Java code
public class UsersDAO extends HibernateDaoSupport {

//findbyId 等DAO方法。不用考虑session
public Users FindById(Long Id) {
...
}
}




其次配置时注入

XML code
<!-- DAO -->
<bean id="alarmDAO" class="com.telestone.web.dao.AlarmDAO">
<property name="entityManager…
[/Quote]

呵呵,楼上的有道理,其实spring对hibernate已经进行了封装
睿音 2008-03-04
  • 打赏
  • 举报
回复
附上 继承HibernateDaoSupport的一些方法。

首先 DAO继承HibernateDaoSupport

public class UsersDAO extends HibernateDaoSupport {

//findbyId 等DAO方法。不用考虑session
public Users FindById(Long Id) {
...
}
}


其次配置时注入

<!-- DAO -->
<bean id="alarmDAO" class="com.telestone.web.dao.AlarmDAO">
<property name="entityManagerFactory"
ref="entityManagerFactory" />
</bean>
睿音 2008-03-04
  • 打赏
  • 举报
回复
看完你的代码我很晕的说~~

首先:
[Quote=引用楼主 J2EE_VIVA 的帖子:]
Struts + Hibernate + Spring[/Quote]
既然使用了Spring DAO为什么不继承HibernateDaoSupport呢?这样用Spring控制session,不是更好些吗?

其次:
你贴的1楼的log好像都是info信息。连告警都没有,怎么挑找问题的??

最后:
思路没问题的说,只是在实现上很混乱。
J2EE_VIVA 2008-03-03
  • 打赏
  • 举报
回复
[Broker] INFO [main] org.springframework.web.struts.ContextLoaderPlugIn.init(218) | ContextLoaderPlugIn for Struts ActionServlet 'action, module '': initialization started
[Broker] INFO [main] org.apache.catalina.core.ApplicationContext.log(647) | Initializing WebApplicationContext for Struts ActionServlet 'action', module ''
[Broker] INFO [main] org.springframework.context.support.AbstractApplicationContext.prepareRefresh(378) | Refreshing org.springframework.web.context.support.XmlWebApplicationContext@16e334a: display name [WebApplicationContext for namespace 'action-servlet']; startup date [Mon Mar 03 11:51:01 CST 2008]; root of context hierarchy
[Broker] INFO [main] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(293) | Loading XML bean definitions from ServletContext resource [/WEB-INF/beans.xml]
[Broker] INFO [main] org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(393) | Bean factory for application context [org.springframework.web.context.support.XmlWebApplicationContext@16e334a]: org.springframework.beans.factory.support.DefaultListableBeanFactory@1fb2ef9
[Broker] INFO [main] org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(275) | Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1fb2ef9: defining beans [dataSource,sessionFactory,Factory,logindao,loginservice,/userLogin]; root of factory hierarchy
[Broker] INFO [main] org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(743) | Building new Hibernate SessionFactory
[Broker] INFO [main] org.springframework.web.struts.ContextLoaderPlugIn.initWebApplicationContext(298) | Using context class 'org.springframework.web.context.support.XmlWebApplicationContext' for servlet 'action'
[Broker] INFO [main] org.springframework.web.struts.ContextLoaderPlugIn.init(235) | ContextLoaderPlugIn for Struts ActionServlet 'action', module '': initialization completed in 18390 ms
lyboyc 2008-03-03
  • 打赏
  • 举报
回复
<list>
<value>org/lostrue/model/Logintable.hbm.xml</value>
</list>中间是不是少了几行
J2EE_VIVA 2008-03-03
  • 打赏
  • 举报
回复
折腾了半天,自己的BasicDAO有问题,static的就没问题了
不过疑问似乎更多了

67,515

社区成员

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

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