для подведения итогов:
import inspect
print( "".join(inspect.getsourcelines(foo)[0]))
Будьте в спящем режиме, потому что это - в основном defacto стандарт в Java и было одной из движущих сил в создании JPA. Это имеет превосходную поддержку в Spring, и почти каждый Java поддержка платформы это. Наконец, GORM является действительно прохладной оберткой вокруг этого делающий динамические средства поиска и так далее с помощью Groovy.
Это было даже портировано к.NET (NHibernate), таким образом, можно использовать его там также.
SimpleORM, потому что это просто и без волшебства. Это определяет все структуры метаданных в коде Java и очень гибко.
SimpleORM обеспечивает схожую функциональность для Спящего режима путем отображения данных в реляционной базе данных к объектам Java в памяти. Запросы могут быть определены с точки зрения объектов Java, объектные идентификационные данные выровненные ключей базы данных, отношения между объектами поддерживаются и изменили объекты, автоматически сбрасываются к базе данных с оптимистическими блокировками.
, Но в отличие от этого В спящем режиме, SimpleORM использует структуру очень простого объекта и архитектуру, которая избегает потребности в сложном парсинге, код байта, обрабатывающий и т.д. SimpleORM, является маленьким и прозрачным, упаковывается в двух банках просто 79K и 52K в размере только с одной маленькой и дополнительной зависимостью (Slf4j). (Будьте в спящем режиме, по 2400K плюс приблизительно 2000K зависимых Банок.) Это делает SimpleORM легким понять и так сильно снижает технический риск.
Я перестал использовать ORM.
Причина не в каком-то большом изъяне в концепции. Hibernate работает хорошо. Вместо этого я обнаружил, что запросы имеют низкие накладные расходы, и я могу уместить много сложной логики в большие SQL-запросы и переложить большую часть своей обработки в базу данных.
Так что рассмотрите возможность использования только пакета JDBC.
Eclipse Link , по многим причинам, но, в частности, мне кажется, что в нем меньше раздувания, чем в других решениях основного потока (по крайней мере, меньше раздувания на лицо).
О и Eclipse Link был выбран в качестве эталонной реализации для JPA 2.0
У меня был действительно хороший опыт работы с Avaje Ebean , когда я писал приложение JavaSE среднего размера.
Он использует стандартные аннотации JPA для определения сущностей, но предоставляет гораздо более простой API (без EntityManager или какой-либо из этих прикрепленных / отсоединенных сущностей). Он также позволяет при необходимости легко использовать SQL-запросы или простые вызовы событий JDBC
. Он также имеет очень удобный гибкий и безопасный по типу API для запросов. Вы можете написать что-то вроде:
List<Person> boys = Ebean.find(Person.class)
.where()
.eq("gender", "M")
.le("age", 18)
.orderBy("firstName")
.findList();
Нет, потому что наличие ORM отнимает слишком много контроля с небольшими преимуществами. Полученная экономия времени легко сдувается, когда вам нужно отлаживать отклонения, возникающие в результате использования ORM. Более того,
Я бы рекомендовал использовать MyBatis . Это тонкий слой поверх JDBC, очень легко сопоставить объекты с таблицами и при этом использовать простой SQL, все под вашим контролем.
Hibernate, потому что он:
Несколько моментов о том, почему (и когда) использовать ORM: