私はHibernate4.1.2で実験しています。
新しいServiceRegistryアプローチを使用してセッションを取得できるように、次のクラスを作成しました
================================================== ===
package com.debaself.samples;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
public class SessionFetch {
private static SessionFactory sessionFactory = null;
public SessionFactory getSessionFactory(){
if(sessionFactory == null){
Configuration cfg = new AnnotationConfiguration().addResource("hibernate.cfg.xml").configure();
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();
sessionFactory = cfg.buildSessionFactory(serviceRegistry);
}
return sessionFactory ;
}
public Session getSession(){
return getSessionFactory().openSession();
}
}
===============================================
今、私はテストを書きました
===============================================
public class SessionFetchTest {
@Test
public void getSessionFactoryTest(){
SessionFetch fetch = new SessionFetch();
SessionFactory factory = fetch.getSessionFactory();
assertNotNull(factory);
assert(!factory.isClosed());
factory.close();
}
@Test
public void getSessionTest(){
SessionFetch fetch = new SessionFetch();
Session session = fetch.getSession();
assert(session.isOpen());
assert(session.isConnected());
}
}
==================================================
奇妙さは
テストメソッドを個別に実行すると、両方のテストが成功します。しかし、一度に実行すると、getSessionTest()は必ず失敗し、UnknownServiceExceptionがスローされます。
誰かがこの振る舞いを説明できますか?