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
}
Теперь вы можете указать генератору идентификаторов гибернации для генерации идентификаторов с использованием алгоритма hilo как: 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 и
один для MySQL (mysql_Customer.hbm.xml) с использованием генератора приращения
и сопоставьте эти файлы сопоставления с их соответствующим файлом xxx.cfg.xml.
Также вам нужно будет определить два служебных метода для загрузки этой конфигурации в зависимости от вашей базы данных.
ПРИМЕЧАНИЕ. Это то, что я придумал, однако здесь считается цитирование экспертов, и вам следует проконсультироваться с кем-то более опытным.
person
Amitesh Rai
schedule
15.10.2014