У меня есть однопользовательская java-программа, в которой я хотел бы хранить данные в легкой базе данных, такой как Derby или Sqlite. Я хотел бы использовать в своей программе уровень абстракции данных. Hibernate, похоже, требует большой настройки и является излишним для того, что мне нужно. Какие есть легкие альтернативы Hibernate?
CMobileCom JPA - это облегченная реализация JPA для Java и Android. Его размер около 380К. Он легкий и быстрый. cmobilecom.com




Он по-прежнему требует конфигурации XML, но обратите внимание на MyBatis (ранее iBatis).
Остался MyBatis: mybatis.org
Я думаю, что XML в i / MyBatis на самом деле является преимуществом, поскольку он хранит сложные запросы в формате, который можно легко скопировать в консоль SQL для тестирования.
iBatis очень легкий. Вы можете более легко определять и контролировать свой SQL для сопоставления объектов.
... нужно проголосовать за iBatis, хотя имейте в виду, что это не альтернатива ORM, поскольку она не пытается конкурировать с подобными Hibernate. Это немного другое животное, но по весу оно соответствует тому, что вы ищете.
Cayenne сослужил мне хорошую службу. Относительно легко понять и запустить. Мне особенно нравится обратная инженерия. Конфигурацию можно выполнить с помощью графического интерфейса.
Возможно, вы захотите взглянуть на prevayler (на sourceforge). Несколько более легкий подход к настойчивости. Или вы думали о составлении отчета по базе данных?
Если вы используете аннотации, Hibernate требует почти нулевой конфигурации. Он даже может автоматически обнаруживать сопоставленные bean-компоненты в пути к классам! Я не вижу альтернативы ему с точки зрения мощности и.
Он также может выставлять себя как JPA, что (IMHO) еще проще.
рядом с нулем не ноль.
также ему нужно много внешних библиотек, попробуйте использовать его на android: P
Я попытался найти более простую альтернативу Hibernate. В личном проекте я использовал MyBatis (какое ужасное имя). Это было гораздо больше работы, чем Hibernate. Hibernate действительно экономит много кода SQL и помогает с отношениями родитель-потомок. Я также просмотрел несколько ORM в стиле ActiveRecord для Java. Ни один из них не казался зрелым или более простым, чем Hibernate. Итак, я возвращаюсь в Hibernate.
был вопрос не об АЛЬТЕРНАТИВЕ?
Hibernate довольно хорошо работает с Derby - было очень просто перенести мое приложение Eclipse RCP с SQL Server на встроенный Derby. Если вы используете аннотации, объем конфигурации на самом деле довольно невелик.
Hibernate - не легкая альтернатива Hiberernate
Использование прямого сопоставления с объектами предполагает, что это можно сделать, при использовании инверсии сопоставление xml довольно сложно с гибернацией. Hibernate также может быть проблематичным из-за его прокси-объектов, которые также добавляют объекты в кучу. Часто требуется более простая альтернатива, просто используя JdbcTemplate и стратегию сопоставления полей.
Если вы хотите использовать Hibernate в приложении для Android, очевидно, что он слишком тяжелый. Теперь для Android и Java доступна облегченная реализация JPA - CMobileCom JPA. Он легкий (около 380К) и быстрый. Проверьте это на cmobilecom.com.
Apache Commons DBUtils берет на себя большую часть повторяющейся рутинной работы из программирования JDBC. Он требует небольшой настройки и прост в освоении. Это не ORM-фреймворк (в том смысле, в котором Hibernate и другие упомянутые здесь фреймворки), но он автоматизирует сопоставление столбцов SELECT с полями-членами Java, а также другие повторяющиеся задачи программирования JDBC. Безусловно, легкий.
Вы можете посмотреть Ebean ORM. - Нет сеансов - ленивая загрузка просто работает - Более простой API для использования и изучения.
он совместим с SQLite и Android?
Добавлена поддержка SQLite. На Android еще не пробовал.
Моя библиотека ORMLite - одна из таких альтернатив. Он поддерживает MySQL, Postgres, Microsoft SQL Server, H2, Derby, HSQLDB и Sqlite и может быть легко расширен на другие. Он использует аннотации для настройки классов, хорошую поддержку Spring, гибкий конструктор запросов и т. д.
OrmLite действительно выглядит многообещающим! Но жив ли этот проект? Нет новой версии больше года, нет ответов на запросы / проблемы на Github.
Версия 5.0 была выпущена в июне 2016 года.
Версия 5.1 выпущена 19.02.2018. Но это вообще не сравнимо с Hibernate, и некоторые реализации аннотаций JPA не работают должным образом.
"сопоставимо с Hibernate"? Они оба являются ORM, но в остальном сильно отличаются. Что касается реализаций JPA, пожалуйста, заполните отчет об ошибке, если вы найдете что-то @ M-Razavi.
jOOQ поставляется с плавным DSL-симулятором SQL непосредственно на Java в качестве побочного эффекта для его основных целей, а именно:
Прочтите о jOOQ в этой статье: http://java.dzone.com/announcements/simple-and-intuitive-approach, или посетите веб-сайт напрямую: http://www.jooq.org
(Отказ от ответственности, я работаю в компании, стоящей за jOOQ)
jOOQ качается! С его помощью мы внедрили крупномасштабный сервис ETL и очень счастливы. Я использовал iBATIS, и jOOQ дает все те же преимущества низкоуровневого SQL, без множества XML и отсутствия безопасности типов.
Я забыл упомянуть одну из лучших особенностей jOOQ: сложные и / или динамически сгенерированные запросы могут быть собраны контролируемым образом и проверены компилятором Java, что избавляет вас от всех этих неоднозначных синтаксических ошибок, возникающих в базах данных, и обеспечивает регрессию во время компиляции. покрытие, когда схема изменяется под вами.
JOOQ потрясающий, но очевидно, что теперь он не бесплатен для Oracle и Sybase, поэтому многие люди избегают этого фреймворка и используют как MyBatis.
@Makky: Спасибо за отзыв. Я очень надеюсь, что вы помните о реальных ценностных предложениях и не собираетесь переходить на совершенно другую структуру только на основании того факта, что одна из них бесплатна, а другая - нет. Стоимость обслуживания и миграции программного обеспечения ваш из-за этого непомерно высока и намного превосходит любую разумную коммерческую лицензию ...
Могу предложить 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);;
Если использование реляционной базы данных не обязательно, попробуйте db4o.
Фреймворк 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
Этот должен быть полностью вверху. Это круто !
Я создал Сормула как альтернативу тяжелым ORM. Он готов к работе с CRUD, дружественен к POJO, прост в использовании, настройке и понимании. Возможно использование нулевой конфигурации. www.sormula.org
Возможно, я немного опоздаю на вечеринку, но я выпустил ActiveJDBC в 2010 году, который является ORM-реализацией шаблона ActiveRecord, более чем в 10 раз легче, чем Hibernate, в зависимостях, по крайней мере в два раза быстрее во время выполнения и требует нулевой настройки. или аннотации.
Kiteframework - это также очень легкий orm framework. Он обеспечивает почти все операции с базами данных с минимальными настройками.
http://deipakgarg.github.com/Kite-ORM/
Раскрытие информации: я являюсь автором этого проекта
Добро пожаловать в Stack Overflow! Спасибо, что разместили свой ответ! Обязательно внимательно прочтите FAQ по саморекламе. Также обратите внимание, что именно требуется вы публикуете отказ от ответственности каждый раз, когда ссылаетесь на свой собственный сайт / продукт.
он не находится в разработке, от автора нет нового текущего релиза, последний ожидаемый релиз был в 2012 году.
Вы можете проверить альтернативы вместе с примером использования (и примером конфигурации с Spring) здесь: github.com/bwajtr/java-persistence-frameworks-comparison