Я использовал следующие реализации JPA:
- Hibernate,
- Toplink,
- OpenJPA
У каждого из них свои сильные и слабые стороны. Я нашел Hibernate самым продвинутым из трех, за исключением того, что он смешал некоторые свои усовершенствования с JPA, что затруднило переход к другим провайдерам. Самое главное, что его интерпретатор запросов был гораздо более мягким при интерпретации JPA. Они немного затрудняют получение правильных библиотек для поддержки спящего режима, потому что я нашел в нем миссию, пытающуюся получить правильные версии всех зависимостей.
Топлинк был в порядке, но оставалось ощущение, что оно слегка искалечено, поскольку кажется, что Oracle хочет, чтобы вы использовали/покупали? их более продвинутой библиотекой. Попытка загрузить его также была миссией, потому что вам нужно установить ее, запустив файл jar. Я обнаружил, что он реализовал только базовую спецификацию JPA. Причина, по которой я использовал его, - это спящий режим, который использует множество библиотек, которые обычно используются в других проектах с открытым исходным кодом, которые часто могут возникать при проблемах классоардера, особенно при использовании JBoss
OpenJPA - это, безусловно, самая лучшая документация, и ее легко загружать и использовать, но она кажется очень плохой. Возможно, его только мой код, но код, который я нашел более продвинутым, например отношения OneToMany с CascadeType.all, просто не работают. По общему признанию, это может быть мой код, который был неправильным, и у меня не было времени проверить чистый случай, но многие инциденты, подобные этому, оставляют меня страшно использовать. Я действительно надеюсь, что все станет лучше. Его сообщения об ошибках часто бесполезны для решения проблемы.
Какие другие библиотеки используют люди, а какие они предпочитают и почему?