Различия между сеансом и сеансом factory - Hibernate?
Есть ли у нас другие отличия, кроме перечисленных ниже? Также, пожалуйста, подтвердите правильность приведенного ниже.
- Объекты
SessionFactory
- по одному на приложение, а объекты Session
- по одному на клиента. -
SessionFactory
предназначен для создания и управления Sessions
. Session
должна предоставить интерфейс CRUD для отображаемых классов, а также доступ к более универсальному Criteria API
. -
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 - предлагать, создавать, читать и удалять операции для экземпляров классов сопоставленных сущностей.