在某些情况下,您的JEE应用程序需要支持Postgres和Oracle作为数据库。
Hibernate应该在这里完成工作,但是有些细节值得一提。
在为已经运行Oracle的应用程序启用Postgres时,我遇到了以下棘手的部分:
-
BLOBs
支持, -
CLOBs
支持, - Oracle不知道
Boolean
类型(使用Integer
),并且 -
DUAL
表。
这些是我必须使用的技巧,以使@Entity
类在这两种方法上运行。
请注意,我已经将Postgres 9.3和Hibernate 4.2.1.SP1一起使用了。
BLOB支持
Postgres的问题在于它提供两种类型的BLOB存储:
-
bytea
–表中存储的数据 -
oid
–表仅保存存储在其他位置的数据的标识符
我猜在大多数情况下,您都可以像我一样使用bytea
。 据我所读,另一个用于一些大数据(千兆字节),因为它支持IO操作流。
好吧,听起来很高兴有这样的支持,但是在这种情况下使用Hibernate可能会带来很多问题(由于需要使用特定的批注),尤其是在您尝试与Oracle兼容的情况下。
要在此处查看问题,请参见StackOverflow:byte []的正确休眠注释
所有组合均在此处描述:
annotation postgres oracle works on
-------------------------------------------------------------
byte[] + @Lob oid b