우리는 2 개의 Java 웹 응용 프로그램 모두 읽기/쓰기 및 3 개의 독립 실행 형 Java 읽기/쓰기 응용 프로그램을 제공합니다 (하나는 전자 메일을 통해 질문을로드하고 하나는 XML 피드를 처리하고 하나는 전자 메일을 구독자에게 보냅니다). 최대 절전 모드로 만들고 공통 코드 기반을 공유하십시오.여러 Java 응용 프로그램과의 Hibernate 데이터베이스 무결성
최근 발생한 문제는 이메일을 통해로드 된 질문이 웹 앱 중 하나에서 작성된 질문을 덮어 쓰는 경우가 있다는 것입니다. 여기에는 별도의 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>
질문 : 우리는 BTW MySQL을 사용하고
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "id", unique = true, nullable = false)
@DocumentId
public Integer getId() {
return this.id;
}
.
CREATE TABLE `question` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
...
PRIMARY KEY (`id`),
...
) ENGINE=InnoDB DEFAULT CHARSET=utf8
우리는 명시 적으로 열고 세션을 닫는 것이 아니라 Util.getSessionFactory().getCurrentSession()
를 통해이를 관리 최대 절전 할 수 없습니다.
다른 단계의 복잡성이 생기기 때문에이 단계에서는 클러스터 된 2 차 수준 캐시를 설정하지 않으려 고합니다. 앱 전체에서 얻을 수있는 성능 수준에 만족하고 있습니다.
웹 응용 프로그램에서 열린 세션보기 패턴을 구현하고이를 수정하는 것처럼 독립 실행 형 응용 프로그램에서 세션을 수동으로 관리하는 것이 어떻습니까?
또는 다른 제안 사항이나 아이디어를 알려주십시오.
동일한 질문에 대한 메일 및 웹 업데이트는 어떻게 확인됩니까 (기본 키가 무엇인지)? – Mark
데이터베이스에서 처리하는 시퀀스를 사용하는 대신 앱에서 기본 키를 생성하는 것처럼 들립니다. – khmarbaise
안녕하세요. 제 질문에 대한 업데이트가 더 필요합니다. IDENTITY 전략으로 인해 ID가 MySQL에서 생성되는 것으로 생각했습니다. – Austen