Легкая альтернатива Hibernate? [закрыто]


113

У меня есть однопользовательская java-программа, данные которой я хотел бы хранить в легкой базе данных, такой как Derby или Sqlite. Я хотел бы использовать в своей программе уровень абстракции данных. Hibernate, похоже, требует большой настройки и является излишним для того, что мне нужно. Какие есть легкие альтернативы Hibernate?


2
Вы можете проверить альтернативы вместе с примером использования (и примером конфигурации с помощью Spring) здесь: github.com/bwajtr/java-persistence-frameworks-comparison
Břetislav Wajtr

CMobileCom JPA - это облегченная реализация JPA для Java и Android. Его размер около 380К. Легко и быстро. cmobilecom.com
Джон

Ответы:


142

Если вы используете аннотации, Hibernate требует почти нулевой конфигурации. Он даже может автоматически обнаруживать сопоставленные bean-компоненты в пути к классам! Я не вижу никакой альтернативы к нему с обеих простоты и мощности точки зрения.

Он также может открывать себя как JPA, что (IMHO) еще проще.


32
рядом с нулем не ноль.
njzk2 05

12
также нужно много внешних библиотек, попробуйте использовать его на android: P
sherif

4
Я попытался найти более простую альтернативу Hibernate. В личном проекте я использовал MyBatis (какое ужасное имя). Это было гораздо больше работы, чем Hibernate. Hibernate действительно экономит много кода SQL и помогает с отношениями родитель-потомок. Я также посмотрел несколько ORM в стиле ActiveRecord для Java. Никто не казался зрелым или более простым, чем Hibernate. Итак, я возвращаюсь в Hibernate.
devdanke

56
был вопрос не об АЛЬТЕРНАТИВЕ?
Лукаш Грюнер

8
Hibernate - не легкая альтернатива Hiberernate
cosbor11

55

Моя библиотека ORMLite - одна из таких альтернатив. Он поддерживает MySQL, Postgres, Microsoft SQL Server, H2, Derby, HSQLDB и Sqlite и может быть легко расширен на другие. Он использует аннотации для настройки классов, хорошую поддержку Spring, гибкий конструктор запросов и т. Д.


OrmLite действительно выглядит многообещающим! Но жив ли этот проект? Нет новой версии больше года, нет ответов на запросы / проблемы на Github.
Стефан

3
Версия 5.0 была выпущена в июне 2016 года.
Лаури Лаанти,

Версия 5.1 выпущена 19.02.2018. Но это вообще не сравнимо с Hibernate, и некоторые реализации аннотаций JPA не работают должным образом.
M-Razavi

"сопоставимо с Hibernate"? Они оба являются ORM, но в остальном сильно отличаются. Что касается реализаций JPA, пожалуйста, заполните отчет об ошибке, если вы найдете что-то @ M-Razavi.
Gray

31

Он по-прежнему требует конфигурации XML, но взгляните на MyBatis (ранее iBatis) .


iBatis очень легкий. Вы можете более легко определять и контролировать свой SQL для сопоставления объектов.
Берлин Браун

... нужно проголосовать за iBatis, хотя имейте в виду, что это не альтернатива ORM, поскольку он не пытается конкурировать с подобными Hibernate. Это немного другое животное, но оно соответствует тому, что вы ищете по весу.
вектор


3
Я думаю, что XML в i / MyBatis на самом деле является преимуществом, поскольку он хранит сложные запросы в формате, который можно легко скопировать в консоль SQL для тестирования.
Питер Тиллеманс

22

jOOQ поставляется с плавным DSL, имитирующим SQL непосредственно на Java, в качестве побочного эффекта для его основных целей, а именно:

  • Генерация исходного кода
  • Полная поддержка стандартного SQL, включая функции языка SQL, такие как UNION, вложенные SELECT, все типы JOIN, псевдонимы (например, для самостоятельных соединений) и т. Д.
  • Широкая поддержка нестандартного SQL, включая UDT, хранимые процедуры, специфичные для поставщика функции и т. Д.

Прочтите о jOOQ в этой статье: http://java.dzone.com/announcements/simple-and-intuitive-approach или посетите веб-сайт напрямую: http://www.jooq.org

(Отказ от ответственности, я работаю в компании, стоящей за jOOQ)


3
jOOQ качается! С его помощью мы реализовали крупномасштабный сервис ETL, и мы очень счастливы. Я использовал iBATIS, и jOOQ дает все те же преимущества низкоуровневого SQL, без множества XML и отсутствия безопасности типов.
spieden

3
Я забыл упомянуть одну из лучших особенностей jOOQ: сложные и / или динамически сгенерированные запросы могут быть собраны контролируемым образом и проверены компилятором Java, что избавит вас от всех этих неоднозначных синтаксических ошибок баз данных и обеспечивает регрессию во время компиляции покрытие, когда схема изменяется под вами.
spieden

JOOQ потрясающий, но очевидно, что теперь он не бесплатен для Oracle и Sybase, поэтому многие люди избегают этого фреймворка и используют как MyBatis
Makky

@Makky: Спасибо за отзыв. Я очень надеюсь, что вы помните о реальных ценностных предложениях и не собираетесь переходить на совершенно другую структуру только на основании того факта, что одна из них бесплатна, а другая нет. Стоимость обслуживания и миграции вашего программного обеспечения непомерно высока и намного превосходит любую разумную коммерческую лицензию ...
Лукас Эдер

15

Apache Commons DBUtils берет на себя большую часть повторяющейся рутинной работы при программировании JDBC. Он требует небольшой настройки и прост в освоении. Это не ORM-фреймворк (как Hibernate и другие упомянутые здесь фреймворки), но он автоматизирует сопоставление столбцов SELECT с полями-членами Java, а также другие повторяющиеся задачи программирования JDBC. Безусловно, легкий.


12

Вы можете взглянуть на Ebean ORM . - Никаких сессий - ленивая загрузка просто работает - Упрощенный API для использования и изучения.


он совместим с SQLite и Android?
endryha

Добавлена ​​поддержка SQLite. На Android еще не пробовал.
Роб Бигрейв 06

9

Cayenne сослужил мне хорошую службу. Относительно легко понять и запустить. Мне особенно нравится обратная инженерия. Конфигурацию можно выполнить с помощью графического интерфейса.


6

Могу предложить apache empire-db. http://incubator.apache.org/empire-db/

Apache Empire-db - это компонент сохранения реляционных данных с открытым исходным кодом, который позволяет определять динамические запросы независимо от поставщика базы данных, а также безопасно и просто извлекать и обновлять данные. По сравнению с большинством других решений, таких как, например, Hibernate, TopLink, iBATIS или реализация JPA, Empire-db использует значительно иной подход, уделяя особое внимание безопасности во время компиляции , уменьшению избыточности и повышению производительности труда разработчиков.

Пример:

// Define the query
DBCommand cmd = db.createCommand();
DBColumnExpr EMPLOYEE_FULLNAME= db.EMPLOYEES.LASTNAME.append(", ")
                        .append(db.EMPLOYEES.FIRSTNAME).as("FULL_NAME");
// Select required columns
cmd.select(db.EMPLOYEES.EMPLOYEE_ID, EMPLOYEE_FULLNAME);
cmd.select(db.EMPLOYEES.GENDER, db.EMPLOYEES.PHONE_NUMBER);
cmd.select(db.DEPARTMENTS.NAME.as("DEPARTMENT"));
cmd.select(db.DEPARTMENTS.BUSINESS_UNIT);
// Set Joins
cmd.join(db.EMPLOYEES.DEPARTMENT_ID, db.DEPARTMENTS.DEPARTMENT_ID);
// Set contraints and order
cmd.where(EMP.LASTNAME.length().isGreaterThan(0));
cmd.orderBy(EMP.LASTNAME);;


2

Возможно, я немного опоздал на вечеринку, но я выпустил ActiveJDBC в 2010 году, который является ORM-реализацией шаблона ActiveRecord, более чем в 10 раз легче Hibernate в зависимостях, по крайней мере в два раза быстрее во время выполнения и не требует настройки или аннотации.


1

Возможно, вы захотите взглянуть на prevayler (на sourceforge). Несколько более легкий подход к настойчивости. Или вы думали о составлении отчетов по базе данных?




-2

Kiteframework - это также очень легкий orm framework. Он обеспечивает почти все операции с базами данных с минимальными настройками.

http://deipakgarg.github.com/Kite-ORM/

Раскрытие информации: я являюсь автором этого проекта


3
Добро пожаловать в Stack Overflow! Спасибо, что разместили свой ответ! Не забудьте внимательно прочитать FAQ по саморекламе . Также обратите внимание, что необходимо публиковать отказ от ответственности каждый раз, когда вы ссылаетесь на свой собственный сайт / продукт.
Эндрю Барбер

2
он не находится в разработке, от автора нет нового текущего релиза, последний ожидаемый релиз был в 2012 году.
Барун,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.