浏览 1747 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-10-16
<?xml version="1.0" encoding="utf-8"?> <something-else-entirely> <proxool> <alias>proxool</alias> <driver-url> jdbc:oracle:thin:@localhost:1521:carddb </driver-url> <driver-class>oracle.jdbc.driver.OracleDriver</driver-class> <driver-properties> <property name="user" value="" /> <property name="password" value="" /> </driver-properties> <house-keeping-sleep-time>3000</house-keeping-sleep-time> <maximum-new-connections>20</maximum-new-connections> <prototype-count>10</prototype-count> <maximum-connection-count>1000</maximum-connection-count> <minimum-connection-count>100</minimum-connection-count> <house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql> <trace>true</trace> <statistics>15m,1h,1d</statistics> </proxool> </something-else-entirely> hibernate.cfg.xml <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-configuration> <session-factory> <property name="proxool.pool_alias">proxool</property> <property name="proxool.xml">proxoolConfig.xml</property> <property name="hibernate.connection.release_mode">auto</property> <property name="hibernate.cglib.use_reflection_optimizer">true</property> <property name="connection.provider_class"> org.hibernate.connection.ProxoolConnectionProvider </property> <property name="connection.autoReconnect">true</property> <property name="connection.autoReconnectForPools">true</property> <property name="hibernate.proxool.existing_pool">false</property> <property name="show_sql">false</property> <property name="statement_cache.size">25</property> <property name="jdbc.fetch_size">50</property> <property name="jdbc.batch_size">50</property> <!-- <property name="connection.autocommit">false</property> --> <mapping resource="com/watchdata/db/hibernate/table/Load.hbm.xml" /> <mapping resource="com/db/hibernate/table/LoadResult.hbm.xml" /> </session-factory> </hibernate-configuration> HibernateSessionFactory import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.cfg.Configuration; /** * Configures and provides access to Hibernate sessions, tied to the * current thread of execution. Follows the Thread Local Session * pattern, see {@link http://hibernate.org/42.html }. */ public class HibernateSessionFactory { /** * Location of hibernate.cfg.xml file. * Location should be on the classpath as Hibernate uses * #resourceAsStream style lookup for its configuration file. * The default classpath location of the hibernate config file is * in the default package. Use #setConfigFile() to update * the location of the configuration file for the current session. */ private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml"; private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>(); private static Configuration configuration = new Configuration(); private static org.hibernate.SessionFactory sessionFactory; private static String configFile = CONFIG_FILE_LOCATION; private HibernateSessionFactory() { } /** * Returns the ThreadLocal Session instance. Lazy initialize * the <code>SessionFactory</code> if needed. * * @return Session * @throws HibernateException */ public static Session getSession() throws HibernateException { Session session = (Session) threadLocal.get(); if (session == null || !session.isOpen()) { if (sessionFactory == null) { rebuildSessionFactory(); } session = (sessionFactory != null) ? sessionFactory.openSession() : null; threadLocal.set(session); } return session; } /** * Rebuild hibernate session factory * */ public static void rebuildSessionFactory() { try { configuration.configure(configFile); sessionFactory = configuration.buildSessionFactory(); } catch (Exception e) { System.err .println("%%%% Error Creating SessionFactory %%%%"); e.printStackTrace(); } } /** * Close the single hibernate session instance. * * @throws HibernateException */ public static void closeSession() throws HibernateException { Session session = (Session) threadLocal.get(); threadLocal.set(null); if (session != null) { session.close(); } } /** * return session factory * */ public static org.hibernate.SessionFactory getSessionFactory() { return sessionFactory; } /** * return session factory * * session factory will be rebuilded in the next call */ public static void setConfigFile(String configFile) { HibernateSessionFactory.configFile = configFile; sessionFactory = null; } /** * return hibernate configuration * */ public static Configuration getConfiguration() { return configuration; } } HibernateFilter import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.HibernateException; public class HibernateFilter implements Filter { private static final Log log = LogFactory.getLog(HibernateFilter.class); public void destroy() { // TODO Auto-generated method stub } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { try { chain.doFilter(request, response); } finally { try { HibernateSessionFactory.closeSession(); } catch (HibernateException e) { log.error("catch exception:", e); } } } public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |