Home Articles

从public static void main测试Hibernate Spring

Asked
Viewed 1552 times
3

我是Spring和Hibernate的新手 . 我创建了实体User和DAO - UserHibernateDao . 我想测试hibernate如何使用public static void main在简单的java-class中工作:

public class Starter {

public static void main(String[] args) {
    ApplicationContext context = new ClassPathXmlApplicationContext("/org/jtalks/jcommune/model/entity/applicationContext-dao.xml");
    Dao<User> uhd = (Dao) context.getBean("userDao");
    User user = new User();
    user.setNickName("UserName");
    uhd.saveOrUpdate(user);
}

}

但我得到了错误

信息:使用Hibernate SessionFactory的DataSource [org.springframework.jdbc.datasource.DriverManagerDataSource@17b4703]进行HibernateTransactionManager线程“main”中的异常org.springframework.orm.hibernate3.HibernateSystemException:没有Hibernate会话绑定到线程,并且配置没有允许在这里创建非交易的;嵌套异常是org.hibernate.HibernateException:没有Hibernate Session绑定到线程,并且配置不允许在org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:679)中创建非事务性的

我知道我需要创建类似会话和事务的东西,但我不知道我应该如何做到这一点 .

my config User.java UserHibernateDao.java Full Project

谢谢

2 Answers

  • 1

    将@Transactional注释添加到DAO的方法中 .

    这将启动事务上下文 .

    import org.springframework.transaction.annotation.Transactional;
    
    @Transactional
    public User getUser(int id) {
    ..
    }
    
  • 1

    我建议你阅读这个reference on Spring and Transaction Management,因为它会帮助你理解如何设置这一切 .

Related