我们有两个Java Web应用程序,都是读/写的,并且有三个独立的Java读/写应用程序(一个通过电子邮件加载问题,一个处理XML提要,一个向订阅者发送电子邮件),所有这些应用程序都使用Hibernate并共享一个公共代码库。
我们最近遇到的问题是,通过电子邮件加载的问题有时会覆盖在其中一个Web应用程序中创建的问题。请注意,这些是应该具有不同ID的单独的问题。我们最初认为这是缓存问题。我们已尝试关闭二级缓存,但这没有任何区别。
我们顺便提一下,我们正在使用MySQL。
我们不会明确地打开和关闭会话,而是让Hibernate通过
我们不想在这个阶段设置一个集群化的第二级缓存,因为这会增加另一层复杂性,而我们对整个应用程序的性能水平非常满意。
那么,在Web应用程序中实现open-session-in-view模式并在独立应用程序中手动管理会话听起来是否可以解决这个问题?
或者还有其他建议/想法吗?
我们最近遇到的问题是,通过电子邮件加载的问题有时会覆盖在其中一个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。
CREATE TABLE `question` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
...
PRIMARY KEY (`id`),
...
) ENGINE=InnoDB DEFAULT CHARSET=utf8
我们不会明确地打开和关闭会话,而是让Hibernate通过
Util.getSessionFactory().getCurrentSession()
来管理它们。我们不想在这个阶段设置一个集群化的第二级缓存,因为这会增加另一层复杂性,而我们对整个应用程序的性能水平非常满意。
那么,在Web应用程序中实现open-session-in-view模式并在独立应用程序中手动管理会话听起来是否可以解决这个问题?
或者还有其他建议/想法吗?