我们有2个Java Web应用程序都是读/写和3个独立的Java读/写应用程序(一个通过电子邮件加载问题,一个处理XML订阅源,一个向订阅者发送电子邮件)休眠并共享一个通用的代码库。Hibernate数据库完整性与多个Java应用程序
我们最近遇到的问题是,通过电子邮件加载的问题有时会覆盖在其中一个Web应用程序中创建的问题。请注意,这些是单独的问题,应该有单独的ID。我们原本认为这是一个缓存问题。我们尝试关闭二级缓存,但这没有什么区别。
<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.cache.use_second_level_cache">false</property>
问:
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "id", unique = true, nullable = false)
@DocumentId
public Integer getId() {
return this.id;
}
我们正在使用MySQL BTW。
CREATE TABLE `question` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
...
PRIMARY KEY (`id`),
...
) ENGINE=InnoDB DEFAULT CHARSET=utf8
我们没有明确开幕和闭幕会议,而是让Hibernate通过Util.getSessionFactory().getCurrentSession()
管理。
我们宁愿不在现阶段设置集群二级缓存,因为这会造成另一层复杂性,我们对于从应用程序整体获得的性能级别感到满意。
那么,在Web应用程序中实现一个开放会话视图模式,并手动管理独立应用程序中的会话听起来就像它会解决这个问题?
或其他任何建议/想法请吗?
如何确定问题(还有什么是主键)是同一个问题的邮件和网页更新? – Mark 2010-05-12 08:36:12
听起来像主键是由应用程序生成的,而不是使用由数据库处理的序列。 – khmarbaise 2010-05-12 08:38:52
嗨,刚刚更新我的问题与更多的信息给你。我认为IDENTITY策略导致id由MySQL生成? – Austen 2010-05-12 08:50:43