
hibernate 与 spring 集成
dao包的类如下:publicclassBookOrderDAOHibImplextendsHibernateDaoSupportimplementsBookOrderD...
dao包的类如下:
public class BookOrderDAOHibImpl extends HibernateDaoSupport implements BookOrderDAO{
public List search(final BookOrder condition)
{
......
}
}
spring配置文件:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
<property name="mappingResources">
<list>
<value>entity/BookOrder.hbm.xml</value>
</list>
</property>
</bean>
问题:在spring配置sessionFactory后,新建Main方法后运行,出错如下:
Exception in thread "main" java.lang.NullPointerException
at dao.BookOrderDAOHibImpl.search(BookOrderDAOHibImpl.java:34)
at test.test.main(test.java:17)
主要是hibernate配置文件已经配置好了,也配置数据库,为什么连不上数据库库?
这个继承HibernateDaoSupport,与spring配置文件有什么关系? 展开
public class BookOrderDAOHibImpl extends HibernateDaoSupport implements BookOrderDAO{
public List search(final BookOrder condition)
{
......
}
}
spring配置文件:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
<property name="mappingResources">
<list>
<value>entity/BookOrder.hbm.xml</value>
</list>
</property>
</bean>
问题:在spring配置sessionFactory后,新建Main方法后运行,出错如下:
Exception in thread "main" java.lang.NullPointerException
at dao.BookOrderDAOHibImpl.search(BookOrderDAOHibImpl.java:34)
at test.test.main(test.java:17)
主要是hibernate配置文件已经配置好了,也配置数据库,为什么连不上数据库库?
这个继承HibernateDaoSupport,与spring配置文件有什么关系? 展开
3个回答
展开全部
你把你spring的配置文件贴出来
肯定是你自己的类没有注进去
或在是sessionFactory没有注进去
<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://127.0.0.1:1433;databaseName=g3_ehr"></property>
<property name="username" value="sa"></property>
<property name="password" value="12345"></property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"></ref>
</property>
<!-- 下面指定Hibernate的属性 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<!--
<prop key="hbm2ddl.auto">create</prop> -->
</props>
</property>
<!--<property name="mappingResources">
<list>
<value>com/tcl/user/model/User.hbm.xml</value>
<value>com/tcl/login/model/Employee.hbm.xml</value>
</list>
</property>-->
<!--configLocation 这个地方是引入hibernate的配置文件 如果直接引用hibernate的配置文件则上面的都可以注释掉-->
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
<bean id="mkUserDao" class="com.misscake.register.dao.MkUserDaoImpl" singleton="false">
<property name="sessionFactory">
<ref bean="sessionFactory"></ref>
</property>
</bean>
肯定是你自己的类没有注进去
或在是sessionFactory没有注进去
<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://127.0.0.1:1433;databaseName=g3_ehr"></property>
<property name="username" value="sa"></property>
<property name="password" value="12345"></property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"></ref>
</property>
<!-- 下面指定Hibernate的属性 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<!--
<prop key="hbm2ddl.auto">create</prop> -->
</props>
</property>
<!--<property name="mappingResources">
<list>
<value>com/tcl/user/model/User.hbm.xml</value>
<value>com/tcl/login/model/Employee.hbm.xml</value>
</list>
</property>-->
<!--configLocation 这个地方是引入hibernate的配置文件 如果直接引用hibernate的配置文件则上面的都可以注释掉-->
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
<bean id="mkUserDao" class="com.misscake.register.dao.MkUserDaoImpl" singleton="false">
<property name="sessionFactory">
<ref bean="sessionFactory"></ref>
</property>
</bean>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Spring 主要是反转控制,解耦合。
看了你的配置文件,那是将Hibernate交给Spring进行托管配置。
看了部分代码,猜想,问题可能出在,代码没写全,从配置文件中可以看出,楼主并未将 BookOrderDAOHibImpl 交给Spring进行托管,应该这样写:
<bean id="BookOrderDAOHibImpl" class="。。。。">
<property name="BookOrderDAOHibImpl">
<ref bean="BookOrderDAOHibImpl"/>
</property>
</bean>
等。
看了你的配置文件,那是将Hibernate交给Spring进行托管配置。
看了部分代码,猜想,问题可能出在,代码没写全,从配置文件中可以看出,楼主并未将 BookOrderDAOHibImpl 交给Spring进行托管,应该这样写:
<bean id="BookOrderDAOHibImpl" class="。。。。">
<property name="BookOrderDAOHibImpl">
<ref bean="BookOrderDAOHibImpl"/>
</property>
</bean>
等。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
HibernateDaoSupport 不配置的话,它拿不到你配置的sessionFactory,也就没法拿到数据源等一些信息
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询