Spring hibenate 테스트 세 션

로그
4. 567915. spring 테스트 시 hibenate 의 session 문제 가 적 혀 있 습 니 다.
AbstractTransactionalDataSource SpringContextTests 클래스 를 사용 합 니 다..
session 캐 시 문제.
조회 문제 가 이미 해결 되 었 다.
그러나 업데이트 와 삭제, 오늘 테스트 에서 데이터 베 이 스 를 제출 하지 않 은 것 을 발견 하 였 습 니 다.
어떤 사람 이 사용 을 제기 하 다
this.transactionManager.commit(this.transactionStatus); 

사 무 를 제출 하 였 으 나, 이렇게 해서 더러 운 데이터 에 문제 가 생 겼 다.
왜 조회 가 가능 하고 삽입 이 가능 하지만 업데이트 와 삭제 가 안 되 는 지 답답 합 니 다.
... 에 있다http://www.iteye.com/topic/70008?page = 1 에서 어떤 사람 이 두 세 션 이 같은 것 이 냐 고 물 었 다. LZ 문 제 는 긍정 적 인 것 이지 만 나 에 게 서 왜 문제 가 해결 되 지 않 는 지 스스로 테스트 해 보 았 다.
... 에 있다

public void update(T t) {
		// TODO Auto-generated method stub
		System.out.println("s22"+getHibernateTemplate().getSessionFactory().getCurrentSession());
		getHibernateTemplate().update(t);
		System.out.println("s2"+getHibernateTemplate().getSessionFactory().getCurrentSession());
	}

세 션 을 입력 합 니 다.
테스트 클래스 에서 도
protected void flushSession() {
SessionFactory sessionFactory = ((SessionFactory)applicationContext.getBean("sessionFactory"));
System.out.println("s1---"+sessionFactory.getCurrentSession());
sessionFactory.getCurrentSession().clear();
sessionFactory.getCurrentSession().flush();
System.out.println("s11---"+sessionFactory.getCurrentSession());
}
출력 도...

s1---SessionImpl(PersistenceContext[entityKeys=[],collectionKeys=[]];ActionQueue[insertions=[] updates=[] deletions=[] collectionCreations=[] collectionRemovals=[] collectionUpdates=[]])
s11---SessionImpl(PersistenceContext[entityKeys=[],collectionKeys=[]];ActionQueue[insertions=[] updates=[] deletions=[] collectionCreations=[] collectionRemovals=[] collectionUpdates=[]])
Hibernate: select article0_.id as id5_1_, article0_.cid as cid5_1_, article0_.title as title5_1_, article0_.content as content5_1_, article0_.hot as hot5_1_, article0_.author as author5_1_, article0_.loadtime as loadtime5_1_, article0_.srcfrom as srcfrom5_1_, article0_.staticHtml as staticHtml5_1_, article0_.displayTop as displayTop5_1_, columnmode1_.id as id10_0_, columnmode1_.name as name10_0_, columnmode1_.description as descript3_10_0_, columnmode1_.rightFlag as rightFlag10_0_, columnmode1_.leftFlag as leftFlag10_0_, columnmode1_.treeLevel as treeLevel10_0_ from a_article article0_ left outer join j_column columnmode1_ on article0_.cid=columnmode1_.id where article0_.id=?

s22SessionImpl(PersistenceContext[entityKeys=[EntityKey[cn.allobject.db.Article#543], EntityKey[org.java1995.model.ColumnModel#2], EntityKey[org.java1995.model.ColumnModel#1]],collectionKeys=[CollectionKey[org.java1995.model.ColumnModel.Articles#2], CollectionKey[org.java1995.model.ColumnModel.Articles#1], CollectionKey[cn.allobject.db.Article.AAttachments#543], CollectionKey[cn.allobject.db.Article.reviews#543]]];ActionQueue[insertions=[] updates=[] deletions=[] collectionCreations=[] collectionRemovals=[] collectionUpdates=[]])

s2SessionImpl(PersistenceContext[entityKeys=[EntityKey[cn.allobject.db.Article#543], EntityKey[org.java1995.model.ColumnModel#2], EntityKey[org.java1995.model.ColumnModel#1]],collectionKeys=[CollectionKey[org.java1995.model.ColumnModel.Articles#2], CollectionKey[org.java1995.model.ColumnModel.Articles#1], CollectionKey[cn.allobject.db.Article.AAttachments#543], CollectionKey[cn.allobject.db.Article.reviews#543]]];ActionQueue[insertions=[] updates=[] deletions=[] collectionCreations=[] collectionRemovals=[] collectionUpdates=[]])

두 곳 의 session 이 다르다 는 것 을 발견 했다.
한 곳 은 session 에 실체 가 없습니다. 한 곳 에는 실체 가 있 습 니 다.
그 LZ 가 잘못 알 고 있 는 것 같 지만 뒤에 있 는 댓 글 은 아무 도 제시 하지 않 았 고 LZ 는 문제 가 해결 되 었 다 고 계속 말 했다.
코드 를 다시 자세히 비교 해 보 세 요.

protected void flushSession() {
		SessionFactory sessionFactory = ((SessionFactory)applicationContext.getBean("sessionFactory"));
		System.out.println("s1---"+sessionFactory.getCurrentSession());
		sessionFactory.getCurrentSession().clear();
		sessionFactory.getCurrentSession().flush();
		System.out.println("s11---"+sessionFactory.getCurrentSession());
	}

짹짹.. flush 전에 clear 방법 을 썼 는데..
즉, session 의 실 체 를 비 웠 기 때문에 flush 도 실질 적 인 역할 을 하지 못 합 니 다.
clear 주석 이나 flush 뒤에 놓 고 테스트 성공...
콘 솔 에서 도 생 성 된 update delete sql 문 구 를 보 았 습 니 다.
문제 해결..

좋은 웹페이지 즐겨찾기