У мене є проект, над яким я зараз працюю, використовуючи Tomcat, Spring 4, Spring Security, MySQL та JPA w / Hibernate.
Я обрав JPA з точки зору того, що, мабуть, зробити заміну базового впровадження постачальників ORM безпроблемним або, принаймні, менш болісним. Я б сказав, що це подумки з використанням специфікації щодо впровадження (JAX-RS) є позицією за замовчуванням спільноти розвитку Java.
Мені цікаво, чи справді це завдання, яке варто виконати. Я впевнений, що якби я використовував Hibernate безпосередньо, я набув би певної сили, оскільки міг би використовувати функції, які не входять до основної специфікації JPA.
Частина мого занепокоєння випливає з ідеї YAGNI. Я по суті програмую в певному стилі та способі (використовую JPA замість сплячого), щоб у якийсь момент в майбутньому я міг змінити свою реалізацію ORM. Я сильно сумніваюся, що коли-небудь трапиться протягом життя продукту, тому я по суті докладаю зусиль для чогось, від чого я, мабуть, ніколи не пожинаю переваги.
Які ваші думки? Чи варто "програмування на інтерфейс", якщо мова йде про такі речі, як JPA? Ви коли-небудь фактично поміняли всю продукцію ORM у продукт? Чи вам колись вдалося повністю уникнути абстрагування чогось подібного до протікання JPA? В мене особисто вже є єдиний вихідний SQL-виклик (щоб очистити таблиці баз даних), і є щось, що я хотів би з цим вбудувати в специфікацію JPA (отримати / встановити префікси до ваших методів та різницю між ЧЛЕНОМ OF / IN, яка прив'язує себе лише до основної реалізації, отримає мені будь-який шанс уникнути.