我们使用Spring + Hibernate作为Webapp。Spring + Hibernate:如何拥有一个可配置的PK生成器?
该Webapp将部署在两个不相关的生产站点上。这两个生产站点将使用Webapp并行生成和使用Person数据。
我需要做的是确保在这两个不相关的生产站点上生成的人员都具有不同的PK,以便我们可以随时合并来自这两个站点的Person数据。
对我施加的进一步限制是这些PK适合Long
,所以我不能使用UUID。
我试图做的是改变目前的Hibernate映射,具有序列S_PERSON
作为发电机:
<hibernate-mapping default-cascade="save-update" auto-import="false">
<class name="com.some.domain.Person" abstract="true">
<id name="id">
<column name="PERSON_ID"/>
<generator class="sequence">
<param name="sequence">S_PERSON</param>
</generator>
</id>
...
</hibernate-mapping>
弄成配置,使PERSON_ID
从不同的序列产生的的PK(也许S_PERSON_1
和S_PERSON_2
),具体取决于部署站点的Spring配置文件。
当然,
<generator class="sequence">
<param name="sequence">${sequenceName}</param>
</generator>
不工作,所以我必须到别的什么事情弄清楚......我想我的发电机应指向一个可配置的bean,反过来指向一个序列或其他,但我不知道该怎么做...
任何想法或解决方法?
谢谢!
是的,这就是我目前的选择。这个解决方案的问题是它增加了一个部署步骤。 我真的很想做的事情是创建两个不同的序列,并将映射配置为指向现有Spring配置文件中的序列1或序列2。 – 2008-10-09 07:43:47