【发布时间】:2016-06-01 22:53:37
【问题描述】:
简介
我正在构建一个使用 Hibernate 和 Jersey 的 REST Web 服务,以向移动客户端提供 JSON 数据。我有一个关于如何在内部处理 Hibernate 会话的一般性问题。我想讨论两种不同的方法(A,B)。
方法
答。有人告诉我应该为每个用户打开一个新会话,让它为用户的整个网络会话打开,最后在用户停止使用我的网络服务后关闭这个会话。有人告诉我,从安全性和性能的角度来看,这将是一种更好的方法。
虽然我已经读过:
“会话无关紧要”Common REST Mistakes, 6.
B. 现在我正在使用 SessionFactory 在我的服务类中打开一个会话,并在查询完成后立即关闭这个会话。我的网络服务只使用 GET 和 POST 请求。没有 PUT 或 DELETE。我不需要任何用户身份验证(如 oAuth)来请求数据。因此我认为没有必要使用 Transactions
这是我的服务类的示例:
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
Query query = session.createQuery("from RoomEntity");
@SuppressWarnings("unchecked")
List<RoomEntity> list = (List<RoomEntity>) query.list();
session.close();
问题
很高兴听到您对我以下问题的看法:
- 最佳做法是什么?您遵循哪种方法?
- 您如何看待性能问题?
- 您如何看待安全问题?
【问题讨论】:
标签: java performance hibernate session rest