У меня есть однопользовательская java-программа, данные которой я хотел бы хранить в легкой базе данных, такой как Derby или Sqlite. Я хотел бы использовать в своей программе уровень абстракции данных. Hibernate, похоже, требует большой настройки и является излишним для того, что мне нужно. Какие есть легкие альтернативы Hibernate?
CMobileCom JPA - это облегченная реализация JPA для Java и Android. Его размер около 380К. Легко и быстро. cmobilecom.com
Джон
Ответы:
142
Если вы используете аннотации, Hibernate требует почти нулевой конфигурации. Он даже может автоматически обнаруживать сопоставленные bean-компоненты в пути к классам! Я не вижу никакой альтернативы к нему с обеих простоты и мощности точки зрения.
Он также может открывать себя как JPA, что (IMHO) еще проще.
также нужно много внешних библиотек, попробуйте использовать его на 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.
iBatis очень легкий. Вы можете более легко определять и контролировать свой SQL для сопоставления объектов.
Берлин Браун
... нужно проголосовать за iBatis, хотя имейте в виду, что это не альтернатива ORM, поскольку он не пытается конкурировать с подобными Hibernate. Это немного другое животное, но оно соответствует тому, что вы ищете по весу.
Я думаю, что XML в i / MyBatis на самом деле является преимуществом, поскольку он хранит сложные запросы в формате, который можно легко скопировать в консоль SQL для тестирования.
Питер Тиллеманс
22
jOOQ поставляется с плавным DSL, имитирующим SQL непосредственно на Java, в качестве побочного эффекта для его основных целей, а именно:
Генерация исходного кода
Полная поддержка стандартного SQL, включая функции языка SQL, такие как UNION, вложенные SELECT, все типы JOIN, псевдонимы (например, для самостоятельных соединений) и т. Д.
Широкая поддержка нестандартного SQL, включая UDT, хранимые процедуры, специфичные для поставщика функции и т. Д.
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. Безусловно, легкий.
Добавлена поддержка SQLite. На Android еще не пробовал.
Роб Бигрейв 06
9
Cayenne сослужил мне хорошую службу. Относительно легко понять и запустить. Мне особенно нравится обратная инженерия. Конфигурацию можно выполнить с помощью графического интерфейса.
Apache Empire-db - это компонент сохранения реляционных данных с открытым исходным кодом, который позволяет определять динамические запросы независимо от поставщика базы данных, а также безопасно и просто извлекать и обновлять данные. По сравнению с большинством других решений, таких как, например, Hibernate, TopLink, iBATIS или реализация JPA, Empire-db использует значительно иной подход, уделяя особое внимание безопасности во время компиляции , уменьшению избыточности и повышению производительности труда разработчиков.
Пример:
// Define the queryDBCommand 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);;
Возможно, я немного опоздал на вечеринку, но я выпустил ActiveJDBC в 2010 году, который является ORM-реализацией шаблона ActiveRecord, более чем в 10 раз легче Hibernate в зависимостях, по крайней мере в два раза быстрее во время выполнения и не требует настройки или аннотации.
Возможно, вы захотите взглянуть на prevayler (на sourceforge). Несколько более легкий подход к настойчивости. Или вы думали о составлении отчетов по базе данных?
Я создал sormula как альтернативу тяжелым ORM. Он готов к работе с CRUD, дружественен к POJO, прост в использовании, настройке и понимании. Возможно использование нулевой конфигурации. www.sormula.org
Добро пожаловать в Stack Overflow! Спасибо, что разместили свой ответ! Не забудьте внимательно прочитать FAQ по саморекламе . Также обратите внимание, что необходимо публиковать отказ от ответственности каждый раз, когда вы ссылаетесь на свой собственный сайт / продукт.
Эндрю Барбер
2
он не находится в разработке, от автора нет нового текущего релиза, последний ожидаемый релиз был в 2012 году.
Ответы:
Если вы используете аннотации, Hibernate требует почти нулевой конфигурации. Он даже может автоматически обнаруживать сопоставленные bean-компоненты в пути к классам! Я не вижу никакой альтернативы к нему с обеих простоты и мощности точки зрения.
Он также может открывать себя как JPA, что (IMHO) еще проще.
источник
Моя библиотека ORMLite - одна из таких альтернатив. Он поддерживает MySQL, Postgres, Microsoft SQL Server, H2, Derby, HSQLDB и Sqlite и может быть легко расширен на другие. Он использует аннотации для настройки классов, хорошую поддержку Spring, гибкий конструктор запросов и т. Д.
источник
Он по-прежнему требует конфигурации XML, но взгляните на MyBatis (ранее iBatis) .
источник
jOOQ поставляется с плавным DSL, имитирующим SQL непосредственно на Java, в качестве побочного эффекта для его основных целей, а именно:
Прочтите о jOOQ в этой статье: http://java.dzone.com/announcements/simple-and-intuitive-approach или посетите веб-сайт напрямую: http://www.jooq.org
(Отказ от ответственности, я работаю в компании, стоящей за jOOQ)
источник
Apache Commons DBUtils берет на себя большую часть повторяющейся рутинной работы при программировании JDBC. Он требует небольшой настройки и прост в освоении. Это не ORM-фреймворк (как Hibernate и другие упомянутые здесь фреймворки), но он автоматизирует сопоставление столбцов SELECT с полями-членами Java, а также другие повторяющиеся задачи программирования JDBC. Безусловно, легкий.
источник
Вы можете взглянуть на Ebean ORM . - Никаких сессий - ленивая загрузка просто работает - Упрощенный API для использования и изучения.
источник
Cayenne сослужил мне хорошую службу. Относительно легко понять и запустить. Мне особенно нравится обратная инженерия. Конфигурацию можно выполнить с помощью графического интерфейса.
источник
Могу предложить apache empire-db. http://incubator.apache.org/empire-db/
Apache Empire-db - это компонент сохранения реляционных данных с открытым исходным кодом, который позволяет определять динамические запросы независимо от поставщика базы данных, а также безопасно и просто извлекать и обновлять данные. По сравнению с большинством других решений, таких как, например, Hibernate, TopLink, iBATIS или реализация JPA, Empire-db использует значительно иной подход, уделяя особое внимание безопасности во время компиляции , уменьшению избыточности и повышению производительности труда разработчиков.
Пример:
источник
Фреймворк ORMAN тоже хорош. https://github.com/ahmetalpbalkan/orman
Документация: https://github.com/ahmetalpbalkan/orman/wiki
Сравнение: https://github.com/ahmetalpbalkan/orman/wiki/Why-orman-is-better-than-other-orms-for-you%3F
источник
Возможно, я немного опоздал на вечеринку, но я выпустил ActiveJDBC в 2010 году, который является ORM-реализацией шаблона ActiveRecord, более чем в 10 раз легче Hibernate в зависимостях, по крайней мере в два раза быстрее во время выполнения и не требует настройки или аннотации.
источник
Возможно, вы захотите взглянуть на prevayler (на sourceforge). Несколько более легкий подход к настойчивости. Или вы думали о составлении отчетов по базе данных?
источник
Если использование реляционной базы данных не является обязательным, попробуйте db4o.
источник
Я создал sormula как альтернативу тяжелым ORM. Он готов к работе с CRUD, дружественен к POJO, прост в использовании, настройке и понимании. Возможно использование нулевой конфигурации. www.sormula.org
источник
Kiteframework - это также очень легкий orm framework. Он обеспечивает почти все операции с базами данных с минимальными настройками.
http://deipakgarg.github.com/Kite-ORM/
Раскрытие информации: я являюсь автором этого проекта
источник