使用Spring sessionFactory注入。
@SuppressWarnings("unchecked")
public void getData() {
System.out.println("%%%% Hibernate fetching data %%%% ");
Session session = factory.getCurrentSession();
/*
* try { Thread.sleep(10000); } catch (InterruptedException e) { // TODO
* Auto-generated catch block e.printStackTrace(); }
*/
List<Address> addresses = session.createQuery("from Address").list();
System.out.println("Total Connectins = "
+ factory.getStatistics().getConnectCount());
for (Address address : addresses) {
System.out.println(address);
}
}
以上代码给出异常
org.hibernate.HibernateException: No Session found for current thread
但是当这个方法被标记为@Transactional时,它工作得很好。但是我不希望为此方法启用任何事务。
我错过了什么吗…?
这就是事务的工作原理。通过标记该方法@Transactional
,您要求TransactionManager
使用来自SessionFactory
的新事务会话创建并启动新事务。没有事务,Hibernate不会使用数据库创建会话
。它创建Transaction
的原因是,如果出现问题,Hibernate可以轻松回滚您在一个事务中所做的事情。
如果没有@Transactional
,Hibernate 将假定您不需要与数据库进行交互。我建议在继续之前阅读Spring文档,因为您似乎对这项技术的工作原理感到非常困惑。通过了解正在发生的事情将大大提高你在写这些东西时的有效性。
问题内容: 我有一个使用spring和hibernate的java stuts2 Web应用程序。 我越来越。 SpringBean.xml hibernate.cfg.xml CustomerServiceImpl.java CustomerDaoImpl.java CustomerAction.java 我得到的例外 问题答案: 您在Spring配置中指定了一个事务管理器,但是没有关于何时或何
我正在windows(7.3版)上安装gvim。启动后,我希望设置变量MYVIMRC,但它没有设置。有没有理由不设定。 有一个vimrc文件,因为许多设置与默认设置不同。 我用检查了MYVIMRC的值 gvim可执行文件位于c:\workarea\Vim\vim73中,c:\workare\Vim中的*\u vimrc*(在gvim启动时读取)。启动gvim后,我可以使用 对于版本:我发现系统vi
我试图在一个演示的独立应用程序中使用Spring,使用DAO层和服务层来使用委托的Hibernate事务。 我已经正确地设置了配置,并且我已经对DAO方法上使用@Transactional注释进行了单元测试,测试结果表明它可以正常工作,但是当我将这个注释移动到服务层时,我得到了一个: 我提供了代码中最相关的部分,希望您能给我一个提示,让我了解这里发生了什么。 在GenericDaoHibernat
当我使用request-url访问api时 它的工作很完美 但如果我将urlendpoint更改为某个无效endpoint,如 2019-12-28 19:16:47.601 DEBUG 5591---[nio-8080-exec-5]o.s.s.w.u.matcher.antPathRequestMatcher:检查请求的匹配:“/api/v1/hhh”;针对“/API/V1/Factuals”
问题内容: 我有一个使用spring和hibernate的java stuts2 Web应用程序。 我越来越。 SpringBean.xml hibernate.cfg.xml CustomerServiceImpl.java CustomerDaoImpl.java CustomerAction.java 我得到的例外 问题答案: 您在Spring配置中指定了一个事务管理器,但是没有关于何时或何