JPA承诺在持久性和数据库方面保持厂商中立性。但是我已经知道了一些像hibernate这样的持久性框架并不完美(字符编码,null比较),你需要为每个数据库调整你的模式。因为有两个层(持久性框架和数据库),我想他们可以使用一些JPA代码...
有没有人有多种支持的经验,如果是,有哪些技巧和建议可以避免这种不兼容性?
答案 0 :(得分:2)
在JPA级别上,你唯一能做的就是使用当前使用的持久性库的JPA API(即使用hibernate时,不要使用Hibernate.initialize())。
在数据库级别上,最好的办法是保持简单,因为当您离开最常见的用例时,行为差异的可能性会增加。具体来说,这可能意味着不使用复合主键,不存储二进制数据,根本不使用SQL执行...我敢肯定其他人会有更好的实践示例,这些实践将允许您轻松地从一个数据库移动到另一个数据库。
上面的内容使我可以在PostgreSQL和Oracle之间切换一个应用程序,在PostgreSQL和MySQL的一些“方言”(在hibernate术语中)之间切换另一个应用程序。