Различия между сеансом и сеансом factory - Hibernate?

Есть ли у нас другие отличия, кроме перечисленных ниже? Также, пожалуйста, подтвердите правильность приведенного ниже.

  1. Объекты SessionFactory - по одному на приложение, а объекты Session - по одному на клиента.
  2. SessionFactory предназначен для создания и управления Sessions. Session должна предоставить интерфейс CRUD для отображаемых классов, а также доступ к более универсальному Criteria API.
  3. SessionFactory является потокобезопасным, тогда как Session не является потокобезопасным

Ответ 1

Прежде всего, спрашивать разницу между этими интерфейсами не имеет никакого смысла. Это похоже на вопрос о разнице между заводом по производству автомобилей и автомобилем. Завод-производитель - это место, где будут производиться автомобили. Точно так же SessionFactory - это экземпляр, который будет создавать объекты Session.

Ответ 2

SessionFactory - это фабричный класс для объектов Session. Он доступен для всего приложения, а Session доступен только для конкретной транзакции.

Session недолговечна, а объекты SessionFactory - недолговечны. SessionFactory предоставляет кэш второго уровня, а Session - кэш первого уровня.

Ответ 3

SessionFactory представляет собой концепцию Hibernates единого хранилища данных и является потокобезопасной, поэтому многие потоки могут одновременно обращаться к ней и запрашивать сеансы и неизменяемый кеш скомпилированных сопоставлений для одной базы данных.

Нет, сеанс не является потокобезопасным. Сессия - это легкий и нетекающий объект (нет, вы не можете делиться им между потоками), который представляет собой единую единицу работы с базой данных. Сессии открываются SessionFactory, а затем закрываются, когда все работы завершены. Сессия является основным интерфейсом для службы сохранения. Сеанс получает соединение базы данных лениво (т.е. Только при необходимости).

Ответ 4

Основное отличие состоит в том, что "на клиентское приложение hibernate будет только один объект фабрики сеанса. Поскольку класс реализации интерфейса SessionFactory является одноэлементным Java-классом".

Ответ 5

SessionFactory - это интерфейс. SessionFactory можно создать, предоставив объект конфигурации, который будет содержать все сведения о свойствах, связанных с БД, взятые из файла hibernate.cfg.xml или файла hibernate.properties. SessionFactory - это фабрика для объектов Session.

Мы можем создать одну реализацию SessionFactory для каждой базы данных в любом приложении. Если ваше приложение ссылается на несколько баз данных, вам нужно создать один SessionFactory для каждой базы данных.

SessionFactory - это тяжеловесный объект; обычно создается во время запуска приложения и сохраняется для последующего использования. SessionFactory является потокобезопасным объектом и используется всеми потоками приложения.

Сессия используется для получения физического соединения с базой данных. Объект Session является легким и предназначен для реализации каждый раз, когда необходимо взаимодействие с базой данных. Постоянные объекты сохраняются и извлекаются через объект Session.

Объекты сеанса не должны оставаться открытыми в течение длительного времени, потому что они обычно не являются потокобезопасными, и их следует создавать и уничтожать по мере необходимости. Основная функция Session - предлагать, создавать, читать и удалять операции для экземпляров классов сопоставленных сущностей.