我有一个正在使用Tomcat,Spring 4,Spring Security,MySQL和带有Hibernate的JPA的项目。
我从JPA的角度出发选择了JPA,它是为了使ORM提供程序的基础实现无缝交换,或者至少减轻痛苦。我要说的是,在思想上使用规范而非实现(JAX-RS)是Java开发社区的默认观点。
我很好奇这是否真的值得一做。我敢肯定,如果我直接使用Hibernate,我会获得一些力量,因为我可以使用不属于主要JPA规范的功能。
我的部分担忧来自YAGNI的想法。我本质上是以特定的样式和方式编程(使用JPA而不是Hibernate),以便将来可以在某些时候换出我的ORM实现。我严重怀疑这种情况会在产品的整个生命周期内发生,因此,我实质上是在努力做一些我可能永远不会从中受益的事情。
你怎么看?对于诸如JPA之类的东西,“编程接口”是否值得?您是否曾经在产品中交换过整个ORM实施?您是否曾经能够完全避免像JPA这样的泄漏引起的抽象?我个人已经有一个本地SQL调用(以清理数据库表),并且我想在JPA规范中内置一些功能(获取/设置方法的前缀,以及MEMBER OF之间的区别) / IN,它只会将自己绑定到底层实现上,这给了我避免的机会。