diff --git a/src/main/java/com/example/cosmos_serversb/models/SessionManager.java b/src/main/java/com/example/cosmos_serversb/models/SessionManager.java new file mode 100644 index 0000000..d0595c1 --- /dev/null +++ b/src/main/java/com/example/cosmos_serversb/models/SessionManager.java @@ -0,0 +1,73 @@ +package com.example.cosmos_serversb.models; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.boot.MetadataSources; +import org.hibernate.boot.registry.StandardServiceRegistry; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; + +import javax.inject.Singleton; + + +@Singleton +public class SessionManager { + private static SessionManager theInstance = null; + private static SessionFactory sessionFactory; + private static Session session = null; + + private SessionManager(){ + setUp(); + } + + public static SessionManager getInstance(){ + if(theInstance == null){ + theInstance = new SessionManager(); + } + return theInstance; + } + + public static Session getSession(){ + if(session == null){ + session = sessionFactory.openSession(); + session.beginTransaction(); + } + return session; + } + + public static void closeSession(){ + session.getTransaction().commit(); + session.close(); + session = null; + } + + + public static void setUp() { + // A SessionFactory is set up once for an application! + final StandardServiceRegistry registry = new StandardServiceRegistryBuilder() + .configure() // configures settings from hibernate.cfg.xml + .build(); + try { + sessionFactory = new MetadataSources( registry ).buildMetadata().buildSessionFactory(); + } + catch (Exception e) { + // The registry would be destroyed by the SessionFactory, but we had trouble building the SessionFactory + // so destroy it manually. + StandardServiceRegistryBuilder.destroy( registry ); + } + } + + public static void tearDown() { + try { + if ( sessionFactory != null ) { + sessionFactory.close(); + } + } catch (Exception e) { + System.out.println("Exception!"); + } + } + + public static SessionFactory getSessionFactory(){ + return sessionFactory; + } + +} diff --git a/src/test/java/hibernateTest/entities/Group.java b/src/test/java/hibernateTest/entities/Group.java index c90b14e..b14a4d5 100644 --- a/src/test/java/hibernateTest/entities/Group.java +++ b/src/test/java/hibernateTest/entities/Group.java @@ -86,8 +86,8 @@ public void addMember(String uId){ //test用 -// User user = new User(uId, uId, "http:test", "sa", "hogehoge"); - User user = Users.getInstance().getUserById(uId); + User user = new User(uId, uId, "http:test", "sa", "hogehoge"); +// User user = Users.getInstance().getUserById(uId); members.add(user); user.addGroups(this); } diff --git a/src/test/java/hibernateTest/models/Main.java b/src/test/java/hibernateTest/models/Main.java index 8f2a16a..f1ba112 100644 --- a/src/test/java/hibernateTest/models/Main.java +++ b/src/test/java/hibernateTest/models/Main.java @@ -6,9 +6,9 @@ public class Main { public static void main(String args[]){ NativeApiIllustrationTest test = new NativeApiIllustrationTest(); -// test.setUp(); -// test.testBasicUsage();//Hibernate全般のテストが行えます。 + test.setUp(); + test.testBasicUsage();//Hibernate全般のテストが行えます。 // test.GroupMemberTest();//Group-Memberテーブルに関するテストが行えます。 -// test.tearDown(); + test.tearDown(); } } diff --git a/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java b/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java index 2cfd078..c997103 100644 --- a/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java +++ b/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java @@ -264,7 +264,7 @@ /*リレーションを持たせた分の出力*/ //Setは要素の順番に意味がないため、出力の順番はrId順ではありません。 Group outGroup = session.load(Group.class, "111"); - Set set = outGroup.getRequests();//Listとして取り出す。 + Set set = outGroup.getRequests(); System.out.println("グループID111のリクエスト一覧"); for ( Request request : (Set) set ) { System.out.println( "rId: " + request.getrId() + " " + request.getUri() + " " + request.getProduct());