У меня есть проект, над которым я сейчас работаю, использующий Tomcat, Spring 4, Spring Security, MySQL и JPA с Hibernate.
Я выбрал JPA с той точки зрения, что предполагается сделать замену базовой реализации поставщиков ORM беспроблемной или, по крайней мере, менее болезненной. Я бы сказал, что это умственное использование спецификации над реализацией (JAX-RS) является точкой зрения по умолчанию сообщества разработчиков Java.
Мне любопытно, стоит ли это делать на самом деле. Я уверен, что если бы я использовал Hibernate напрямую, я бы получил некоторую мощность, потому что я мог бы использовать функции, которые не являются частью основной спецификации JPA.
Часть моей заботы исходит от идеи ЯГНИ. По сути, я программирую в определенном стиле и стиле (использую JPA вместо Hibernate), чтобы в какой-то момент в будущем я мог поменять свою реализацию ORM. Я сильно сомневаюсь, что это когда-нибудь случится в течение срока службы продукта, поэтому я прилагаю усилия к тому, что я, вероятно, никогда не получу.
о чем ты думаешь? Стоит ли «программирование на интерфейс», когда дело доходит до таких вещей, как JPA? Вы когда-нибудь меняли всю реализацию ORM в продукте? Удалось ли вам когда-нибудь полностью избежать абстракции от утечки JPA? У меня лично уже есть один собственный вызов SQL (для очистки таблиц базы данных), и есть кое-что, с чем я хотел бы познакомиться, это встроено в спецификацию JPA (префиксы get / set для ваших методов и разница между MEMBER OF / IN, которая только привязывает себя к базовой реализации, даст мне шанс избежать.