Введение
Я использую веб-сервис REST, использующий Hibernate и Jersey для предоставления данных JSON мобильным клиентам. У меня есть общий вопрос о как внутренне работать с сессиями Hibernate . Есть два разных подхода (A, B), которые я хотел бы обсудить.
Подходы
A. Кто-то сказал мне, что я должен открыть новый сеанс для пользователя, разрешить его открывать для всего веб-сеанса пользователя и, наконец, закрыть этот сеанс после того, как пользователь перестал использовать мой веб-сервис. Мне сказали, что это будет лучший подход с точки зрения безопасности и производительности.
Хотя я читал это:
"Sessions are irrelevant" <a href="http://www.prescod.net/rest/mistakes/" rel="nofollow">Common REST Mistakes, 6. </a>
B. Прямо сейчас я использую SessionFactory, чтобы открыть сеанс в моих классах обслуживания и закрыть этот сеанс сразу после выполнения запроса. Мой веб-сервис использует только запросы GET и POST. Здесь нет ни PUT, ни DELETE. Мне не нужно никакой аутентификации пользователя (например, oAuth) для запроса данных. Поэтому я не считаю необходимым использовать транзакции
Вот пример моего класса обслуживания:
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
Query query = session.createQuery("from RoomEntity");
@SuppressWarnings("unchecked")
List<RoomEntity> list = (List<RoomEntity>) query.list();
session.close();
Вопросы * * 1023
Было бы здорово услышать ваше мнение о моих следующих вопросах:
Какая была бы лучшая практика? Какой подход вы используете?
Что вы думаете о производительности?
Что вы думаете о безопасности?