Spring Hibernate SessionFactory-没有映射表到类

时间:2014-05-26 14:26:27

标签: java spring hibernate

我在应用程序中设置SessionFactory时遇到问题。在dispatcher-servlet.xml中我写了

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

    <property name="driverClassName" value="${database.driver}" />
    <property name="url" value="${database.url}" />
    <property name="username" value="${database.user}" />
    <property name="password" value="${database.password}" />

    </bean>

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />     
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">${hibernate.dialect}</prop>
            <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
        </props>
    </property>
</bean>

在我的java课程中,我做过像

这样的事情
@Autowired
    private SessionFactory sessionFactory;

 public SessionFactory getSessionFactory() {
    return sessionFactory;
}


public void setSessionFactory(SessionFactory sessionFactory) {
    this.sessionFactory = sessionFactory;
}


private Session openSession()
{       
    return sessionFactory.getCurrentSession();
}

运行时我的应用程序总是在方法openSession()上给出NullPointerException。

请注意,我没有使用任何带注释的DAO。我试图直接连接数据库表,而不是每个表都有Pojos,并尝试实现本机查询而不是HQL。有可能吗?

2 个答案:

答案 0 :(得分:0)

你应该以某种方式标记包含sessionfactory的类(例如:@service)

在任何情况下,你都以错误的方式使用hibernate:hibernate很棒,因为它为你管理sql执行,它使db交互变得容易。如果你只使用本机查询,没有任何pojo,那么hibernate就没用了。我告诉你更多:在这种情况下,hibernate甚至很糟糕,它会造成你从未使用过的浪费的数据结构。 Hibernate很棒,但当然不轻。

我的建议是:使用spring jdbc模板。

希望它有所帮助。

答案 1 :(得分:0)

1-添加交易支持 -

            <bean id="transactionManager"    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
                 <property name="sessionFactory" ref="sessionFactory" />
            </bean>

2-启用交易支持

  <tx:annotation-driven/>

3 - 让你的班级成为交易

         @Transactional