Ebean - это инструмент объектно-реляционного сопоставления с открытым исходным кодом. Его цель - предоставить более простую альтернативу реализациям JPA (Java Persistence API), таким как Hibernate и Eclipselink.

Ebean - это инструмент объектно-реляционного сопоставления с открытым исходным кодом.

Его цель - предоставить более простую альтернативу реализациям JPA (Java Persistence API), таким как Hibernate и Eclipselink.

Для этого он предоставляет "бессеансовый" API и более простой язык запросов. Это значит:

  • Нет объекта сеанса (или UnitOfWork или EntityManager)
  • Нет прикрепленных или отсоединенных бинов
  • Нет merge(), persist(), flush() или clear(). Вместо этого в Ebean есть save() и delete()

Ebean, как и JPA, имеет контекст постоянства, но имеет некоторые архитектурные отличия, позволяющие использовать другой подход к жизненному циклу объектного компонента и устраняя необходимость в управлении EntityManager.

Почему Ebean? ... чем отличается от JPA?

Ebean использует аннотации JPA Mapping и будет очень внимательно следить за ними.

Однако Ebean был спроектирован и построен с другой точки зрения, чем JPA. Различия в архитектуре и языке запросов достаточно фундаментальны как для Ebean, так и для JPA, поэтому трудно увидеть, что эти различия исчезнут в ближайшее время.

JPA спроектирован для использования "EntityManager", который близко соответствует "Session" Hibernate и "UnitOfWork " Toplink. Это приносит с собой концепцию того, что объектный компонент может быть присоединен или отсоединен от EntityManager (со связанными операциями слияния, очистки и т.д.). Если EntityManager используется в нескольких транзакциях, EntityManager обычно должен управляться EJB Session Bean, Seam, Spring или аналогичным контейнером / фреймворком.

Ebean спроектирован так, чтобы не требовать EntityManager (или объект Session или UnitOfWork) с целью упростить его использование и удалить требование для управления объектами EntityManager (также известный как другой подход к управлению жизненным циклом).

Хотя Ebean не имеет EntityManager, у него ДЕЙСТВИТЕЛЬНО есть "контекст постоянства" (например, JPA), и по умолчанию в Ebean контекст постоянства имеет область действия транзакции и автоматически управляется.