Hibernate Core 提供了各种内置的简单主键生成器类,如:
1) hilo ==> org.hibernate.id.TableHiloGenerator
2) 增量 ==> org.hibernate.id.IncrementGenerator 等
例如,假设您有一个 Customer 类,如下所示:
Customer.java
package org.myapps;
public class Customer {
private long cid; // your primary key property
...
// setters and getters
}
现在,您可以指示休眠 ID 生成器使用 hilo 算法生成 ID,如下所示:
Customer.hbm.xml
<hibernate-mapping>
<class name="org.myapps.Customer" table="CUSTOMER">
<id name="cid" type="int">
<column name="CID" />
<generator class="hilo">
<param name="table">hi_value</param>
<param name="column">next_value</param>
<param name="max_lo">1000</param>
</generator>
</id>
....
</hibernate-mapping>
并使用增量生成器
<hibernate-mapping>
<class name="org.myapps.Customer" table="CUSTOMER">
<id name="cid" type="int">
<column name="CID" />
<generator class="increment" />
</id>
....
</hibernate-mapping>
现在,如果您的问题是如何根据您的底层数据库(Oracle 或 MySQL)在这两种生成类型之间切换,那么在我看来,您需要定义两个休眠配置文件:
1) oracle_hibernate.cfg.xml - 用于 Oracle
2) mysql_hibernate.cfg.xml - 用于 MySQL
每个实体都有两个版本的休眠映射文件:
一个用于 Oracle (oracle_Customer.hbm.xml),使用 hilo 生成器和
一个使用 increment 生成器的 MySQL (mysql_Customer.hbm.xml)
并将这些映射文件与其对应的 xxx.cfg.xml 文件映射。
您还需要定义两个实用程序方法来根据您的数据库为您加载这些配置。
注意:这是我想出的,但是,这里认为是专家引用,您应该咨询有更多经验的人。