关于SSH项目中,sessionFactory的管理问题。
在SSH项目中,用Spring来管理sessionFactory来实现Spring与Hibernate的整个,然后在应用中碰到一个这样的问题首先,我有一个BaseDaoI...
在SSH项目中,用Spring来管理sessionFactory来实现Spring与Hibernate的整个,然后在应用中碰到一个这样的问题
首先,我有一个BaseDaoImpl类,就是实现最基层的与数据库交互的方法,在这个类里实现sessionFactory的注入,并且有一个execute()方法,这个方法里会用到session来与数据库交互。
然后有一个OutDetailImpl类来继承BaseDaoImpl类,并且调用父类里的方法,但是在OutDetailImpl类里并没有注入sessionFactory,根据JAVA继承的特性,当BaseDaoImpl类被注入sessionFactory,OutDetailImpl不是同样可以使用么?但是在实际使用中,会报空指针
小弟学术不精,求大神赐教这是怎么回事。。。 展开
首先,我有一个BaseDaoImpl类,就是实现最基层的与数据库交互的方法,在这个类里实现sessionFactory的注入,并且有一个execute()方法,这个方法里会用到session来与数据库交互。
然后有一个OutDetailImpl类来继承BaseDaoImpl类,并且调用父类里的方法,但是在OutDetailImpl类里并没有注入sessionFactory,根据JAVA继承的特性,当BaseDaoImpl类被注入sessionFactory,OutDetailImpl不是同样可以使用么?但是在实际使用中,会报空指针
小弟学术不精,求大神赐教这是怎么回事。。。 展开
4个回答
展开全部
不光在类中是继承关系,另外还要在spring的配置文件中也要建立对应的继承关系,你看下一下配置:
<!-- 配置数据源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!-- 驱动名称 -->
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<!-- 连接数据库的URL -->
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
<!-- 连接数据库的用户名 -->
<property name="username" value="scott" />
<!-- 连接数据库的密码 -->
<property name="password" value="tiger" />
</bean>
<!-- 配置SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 指定数据源 -->
<property name="dataSource" ref="dataSource" />
<!-- 指定hibernate的相关属性 -->
<property name="hibernateProperties">
<props>
<!-- 指定数据库方言 -->
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<!-- 显示SQL语句 -->
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<!-- 指定ORM映射文件 -->
<property name="mappingResources">
<list>
<value>com/pb/entity/User.hbm.xml</value>
</list>
</property>
</bean>
<!-- 数据访问层(DAO) -->
<!-- 基类Dao -->
<bean id="baseDao" class="com.pb.dao.impl.BaseDaoImpl" abstract="true">
<!-- 注入SessionFactory属性 -->
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- UserDao -->
<bean id="userDao" parent="baseDao" class="com.pb.dao.impl.UserDaoImpl"></bean>
展开全部
我刚才试了,不会报错啊,请吧具体的错误代码贴出来吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
注入工厂管理时候调用父类的子类也得注入的。
如:
<bean id="Target"
class="com.forecast.business.service.PrForecastTwoServiceImpl">
<property name="BaseDaoImpl路径">---父类(一般实现类用impl结尾,而继承的DAO不写impl的,因为继承的是接口而不是实现类,所以这里应该最好写BaseDao--规范)
<ref local="BaseDaoImpl"/>
</property>
</bean>
<bean id="Target"
class="OutDetailImpl路径">---子类(所谓的实现BaseDao接口的类)
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
希望对你有所帮助
如:
<bean id="Target"
class="com.forecast.business.service.PrForecastTwoServiceImpl">
<property name="BaseDaoImpl路径">---父类(一般实现类用impl结尾,而继承的DAO不写impl的,因为继承的是接口而不是实现类,所以这里应该最好写BaseDao--规范)
<ref local="BaseDaoImpl"/>
</property>
</bean>
<bean id="Target"
class="OutDetailImpl路径">---子类(所谓的实现BaseDao接口的类)
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
希望对你有所帮助
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你最好画一下图 这样就能说明问题, 理清思路
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询