Разработчик(и) | Авахе |
---|---|
Стабильный релиз | 13.25.1 / 22 ноября 2023 г. ( 2023-11-22 ) [1] |
Репозиторий |
|
Написано в | Ява |
Операционная система | Кроссплатформенный |
Платформа | Ява |
Размер | 1,9 МБ (архив) |
Тип | Объектно-реляционное отображение |
Лицензия | Лицензия Apache 2.0 |
Веб-сайт | ebean-orm.github.io |
Ebean — это продукт объектно-реляционного отображения, написанный на Java . Он разработан так, чтобы быть более простым в использовании и понимании, чем продукты JPA (Java Persistence API) или JDO (Java Data Objects).
Ebean имеет более простой API, чем JPA. Он достигает этого с помощью своей архитектуры « Session Less» . Ebean не требует JPA EntityManager или JDO PersistenceManager, и это устраняет концепции отсоединенных/присоединенных bean-компонентов и проблемы, связанные с очисткой/сбросом и «управлением сеансами» EntityManager. Это делает API Ebean намного более простым для изучения, понимания и использования.
Хотя Ebean имеет полный набор функций ORM (эквивалентных JPA), он также включает функции 'SQL/Relational'. Идея заключается в том, что многие усилия по разработке требуют контроля над точным SQL, вызова хранимых процедур или проще решаются с помощью 'Relational' подходов. Конечная цель Ebean — объединить лучшие функции ORM из JPA с лучшими 'Relational' функциями из таких продуктов, как MyBatis, в единую среду сохранения.
Ebean использует то же отображение, что и JPA с его аннотациями @Entity, @Table, @OneToMany и т. д. и xml. Отображение компонентов Entity должно быть совместимым между Ebean и JPA.
Выходя за рамки JPA, Ebean поддерживает Java Generics и извлечение «частичных» объектов с помощью объекта Query.
// найти клиента по идентификатору Customer customer = Ebean.find ( Customer.class , 1 ) ; //Сохранение изменений объекта клиента customer . save ();// более сложный запрос с объединениями List < Order > order = Ebean.find ( Order.class ) .fetch ( " customer" ) .fetch ( " customer.billingAddress " ) .fetch ( "customer.shippingAddress" ) .fetch ( "details" ) .fetch ( " details.product" , " name " ) .where ( ). eq ( " shipDate " , today ) .findList ( ) ;