哪种GenerationType最适合AUTO,IDENTITY&使用Hibernate持久性提供程序的TABLE(或任何其他最好的approch)?

时间:2016-02-05 06:34:23

标签: java mysql oracle hibernate

在我的项目中,我们使用的是Oracle,我们也希望为MYSQL提供支持。 Oracle有序列支持,但MYSQL没有。如果我们想要在AUTO,IDENTITY&中使用Hibernate持久性提供程序支持具有相同代码库的ORACLE和MYSQL,那么GenerationType是好的。表(或任何其他方式)?,任何人都可以给出关于这些的简要说明吗?

System.out.println("UTF-8: " + new String(byteArray));

3 个答案:

答案 0 :(得分:1)

您可以使用

@GeneratedValue(generator = GenerationType.TABLE)

它适用于Oracle和mySql

答案 1 :(得分:0)

由于MySQL支持auto_increment,因此使用GenerationType.AUTO作为相应的POJO。

对于POJO for Oracle数据库,您可以为每个POJO创建一个序列,并在POJO中使用它,如下所示。

创建序列

 CREATE SEQUENCE MY_SEQ
 INCREMENT BY 1
 START WITH 1
 NOMAXVALUE
 NOCYCLE
 NOCACHE;

生成类型

我认为主键在Oracle表中标记为ID。

@Id
@GeneratedValue(generator = "mySeq")
@SequenceGenerator(name = "mySeq", sequenceName = "MY_SEQ", allocationSize = 1)
@Basic(optional = false)
@NotNull
@Column(name = "ID")
private Long id;

答案 2 :(得分:0)

您可能希望在xml配置文件中配置所有与数据库相关的内容。我没有使用xml文件来配置hibernate多年,我从来没有将它与注释混合在一起。但我理解它的方式:您的xml配置将覆盖POJO中的注释中的此特定配置。

因此,您可以将POJO与特定于oracle的ID生成器保留在一起,如果您将其部署到MySQL,则需要使用特定于MySQL的ID生成器添加xml配置。

虽然我不能给你任何细节。遗憾。