Skip to content

Commit 94235d7

Browse files
committed
Introduced HibernateUtil.
1 parent 885ec87 commit 94235d7

File tree

2 files changed

+33
-18
lines changed

2 files changed

+33
-18
lines changed

dao/src/main/java/com/iluwatar/DaoBaseImpl.java

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,8 @@ public abstract class DaoBaseImpl<E extends BaseEntity> implements Dao<E> {
1616
protected Class<E> persistentClass = (Class<E>) ((ParameterizedType) getClass()
1717
.getGenericSuperclass()).getActualTypeArguments()[0];
1818

19-
protected final SessionFactory sessionFactory = createSessionFactory();
20-
21-
private SessionFactory createSessionFactory() {
22-
SessionFactory sessionFactory = new Configuration()
23-
.addAnnotatedClass(Wizard.class)
24-
.addAnnotatedClass(Spellbook.class)
25-
.addAnnotatedClass(Spell.class)
26-
.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect")
27-
.setProperty("hibernate.connection.url", "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1")
28-
.setProperty("hibernate.current_session_context_class", "thread")
29-
.setProperty("hibernate.show_sql", "true")
30-
.setProperty("hibernate.hbm2ddl.auto", "create-drop")
31-
.buildSessionFactory();
32-
return sessionFactory;
33-
}
34-
3519
private Session getSession() {
36-
return sessionFactory.openSession();
20+
return HibernateUtil.getSessionFactory().openSession();
3721
}
3822

3923
@Override
@@ -43,7 +27,7 @@ public E find(Long id) {
4327
E result = null;
4428
try {
4529
tx = session.beginTransaction();
46-
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(persistentClass);
30+
Criteria criteria = session.createCriteria(persistentClass);
4731
criteria.add(Restrictions.idEq(id));
4832
result = (E) criteria.uniqueResult();
4933
tx.commit();
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.iluwatar;
2+
3+
import org.hibernate.SessionFactory;
4+
import org.hibernate.cfg.Configuration;
5+
6+
public class HibernateUtil {
7+
8+
private static final SessionFactory sessionFactory;
9+
10+
static {
11+
try {
12+
sessionFactory = new Configuration()
13+
.addAnnotatedClass(Wizard.class)
14+
.addAnnotatedClass(Spellbook.class)
15+
.addAnnotatedClass(Spell.class)
16+
.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect")
17+
.setProperty("hibernate.connection.url", "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1")
18+
.setProperty("hibernate.current_session_context_class", "thread")
19+
.setProperty("hibernate.show_sql", "true")
20+
.setProperty("hibernate.hbm2ddl.auto", "create-drop")
21+
.buildSessionFactory();
22+
} catch (Throwable ex) {
23+
System.err.println("Initial SessionFactory creation failed." + ex);
24+
throw new ExceptionInInitializerError(ex);
25+
}
26+
}
27+
28+
public static SessionFactory getSessionFactory() {
29+
return sessionFactory;
30+
}
31+
}

0 commit comments

Comments
 (0)