В чем отличия между Datasouce, SessionFactory, Entity manager

подскажите, правильно ли я понимаю

DataSource - это объект, который позволяет для JDBC Template получать соединения с БД. Точнее он содержит пул соединений, а jdbcTemplate берет из пула

SessionFactory - это объект Hibernate, который предоставляет сессии - по факту те же соединения с БД.

Поскольку они оба создаются примерно одинаково - указывается путь до БД, логин, пароль и поскольку они оба предоставляют соединения с БД, делаю вывод что это по факту одинаковые объекты, просто 1 нужен для работы с jdbcTemplate , другой для Hibernate

И EntityManager - это тоже самое что SessionFactory, только EntityManager подходит под JPA и он будет работать хоть с Hibernate, хоть с другой реализацией JPA (видимо SessonFactory чет все таки еще делает, раз его в Hibernate создали)


Ответы (1 шт):

Автор решения: Денис Старакожев

Нет.

  • DataSource - инкапсулирует информацию о подключении к БД, в нем есть все необходимое, чтобы установить соединение.
  • Connection - активное соединение с БД, которое является абстракцией над драйвером, и позволяет взаимодействовать с БД посредством JDBC контракта.
  • Session - сессия Hibernate, которая является JPA прослойкой между логикой и Connection, предоставляет реализованный контракт и содержит в себе PersistenceContext
  • PersistenceContext - кэш/реплика используемых данных из БД в рамках сессии, хранит в себе Entity и механизмы синхронизации с БД
  • EntityManager - интерфейс из спецификации JPA, который позволяет абстрагироваться от реализации JPA (одной из которых является Hibernate и его Session)
  • SessionFactory - объект, который инкапсулирует в себе все, что необходимо для создания Session

P.S. Session как правило имеет скоуп, синхронизированный с транзакцией.

→ Ссылка