我是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 回答
将@Transactional注释添加到DAO的方法中 .
这将启动事务上下文 .
我建议你阅读这个reference on Spring and Transaction Management,因为它会帮助你理解如何设置这一切 .