Hibernate:sessionFactory.openSession()VS sessionFactory.getCurrentSession()

时间:2015-11-02 14:34:58

标签: java spring hibernate postgresql spring-mvc

我正在尝试在Spring 4(Java配置)中创建一个Web应用程序。我使用postgres作为数据库,使用C3P0作为连接池。 我的所有数据库事务都发生在postgres存储过程/函数中。我正在使用Hibernate @ NamedNativeQueries来调用存储过程。

我有两个问题:  1.我的应用程序将同时登录多个用户。我应该使用sessionFactory.openSession()或sessionFactory.getCurrentSession()来获取hibernate会话吗?  2.我应该使用hibernate来调用存储过程或在spring mvc4中构建支持吗?我知道两种方式,但我对hibernate感觉更舒服,因为与spring方式相比,它需要更少的努力,但我觉得hibernate使我的应用程序变慢但不确定。

请帮助我找到这些问题的答案。

1 个答案:

答案 0 :(得分:0)

回答第一个问题: 你应该为每个用户连接一个会话。例如,如果您在servlet上下文中,则可以使用servlet过滤器为每个servlet线程调用sessionFactory.openSession()

回答第二个问题: 性能和优化不是一种感觉。如果你feel缓慢地休眠,请测量它并尝试知道原因。你必须测量它减速的地方。您也可以通过一个简单的示例尝试这两种解决方案,并了解您感觉更舒适的地方。