hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd" >
<hibernate-configuration>
<session-factory>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
<property name="current_session_context_class">thread</property>
<property name="hibernate.connection.pool.size">20</property>
<property name="hibernate.hbm2ddl.auto">update</property>
</session-factory>
</hibernate-configuration>
HibernateSessionFactory
public class HibernateSessionFactory {
private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
private static final ThreadLocal<Session> sessionThreadLocal = new ThreadLocal<Session>();
private static Configuration configuration = new Configuration();
private static SessionFactory sessionFactory;
private static String configFile = CONFIG_FILE_LOCATION;
static {
try {
StandardServiceRegistry standardServiceRegistry = new StandardServiceRegistryBuilder().configure().build();
Metadata metadata = new MetadataSources(standardServiceRegistry).getMetadataBuilder()
.applyImplicitNamingStrategy(ImplicitNamingStrategyComponentPathImpl.INSTANCE).build();
sessionFactory = metadata.getSessionFactoryBuilder().build();
} catch (HibernateException e) {
e.printStackTrace();
}
}
private HibernateSessionFactory() {
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
public static void rebuildSessionFactory() {
synchronized (sessionFactory) {
try {
StandardServiceRegistry standardServiceRegistry = new StandardServiceRegistryBuilder()
.configure(configFile).build();
Metadata metadata = new MetadataSources(standardServiceRegistry).getMetadataBuilder()
.applyImplicitNamingStrategy(ImplicitNamingStrategyComponentPathImpl.INSTANCE).build();
sessionFactory = metadata.getSessionFactoryBuilder().build();
} catch (HibernateException e) {
e.printStackTrace();
}
}
}
public static Session getSession() {
Session session = sessionThreadLocal.get();
try {
if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession() : null;
sessionThreadLocal.set(session);
}
} catch (HibernateException e) {
e.printStackTrace();
}
return session;
}
public static void closeSession() {
Session session = sessionThreadLocal.get();
sessionThreadLocal.set(null);
try {
if (session != null && session.isOpen()) {
session.close();
}
} catch (HibernateException e) {
e.printStackTrace();
}
}
public static void setConfigFile(String configFile) {
HibernateSessionFactory.configFile = configFile;
sessionFactory = null;
}
public static Configuration getConfiguration() {
return configuration;
}
}