发生此问题是由于
time_outmysql服务器上的var 值较小。
在我的情况下,time_out设置为1分钟。使用C3PO池机制,我们可以优化JDBC。
下载 c3p0- >
http://sourceforge.net/projects/c3p0/
我正在使用 hibernate3.0 。
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"><hibernate-configuration> <session-factory> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://databasehost:3306/databasename</property> <property name="connection.username">user</property> <property name="connection.password">psw</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.hbm2ddl.auto">update</property> <property name="show_sql">false</property> <!-- hibernate c3p0 settings --> <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> <property name="hibernate.c3p0.acquire_increment">3</property> <property name="hibernate.c3p0.idle_test_period">10</property> <property name="hibernate.c3p0.min_size">5</property> <property name="hibernate.c3p0.max_size">75</property> <property name="hibernate.c3p0.max_statements">10</property> <property name="hibernate.c3p0.timeout">50</property> <property name="hibernate.c3p0.preferredTestQuery">select 1</property> <property name="hibernate.c3p0.testConnectionOnCheckout">true</property> <!-- Mapping files --> <mapping /> <mapping /> <mapping /> <mapping /> </session-factory></hibernate-configuration>
PersistenceManager.java
import java.io.PrintStream;import org.hibernate.SessionFactory;import org.hibernate.cfg.AnnotationConfiguration;import org.hibernate.cfg.Configuration;public class PersistenceManager{ private static SessionFactory sessionFactory = null; private static PersistenceManager singleton = null; public static PersistenceManager getInstance() { if (singleton == null) { singleton = new PersistenceManager(); } return singleton; } public SessionFactory getSessionFactory() { if (sessionFactory == null) createSessionFactory(); return sessionFactory; } protected void createSessionFactory() { sessionFactory = new AnnotationConfiguration().configure() .buildSessionFactory(); } public void destroySessionFactory() { if (sessionFactory != null) { sessionFactory.close(); sessionFactory = null; } }}范例1:
import org.hibernate.HibernateException;import org.hibernate.Query;import org.hibernate.Session;public Users Login( String username, String password) { Session session = null; try { String hql = "select u from Users u where u.username like :p1 and u.password like :p2"; session = PersistenceManager.getInstance().getSessionFactory().openSession(); Query q = session.createQuery(hql) .setParameter("p1", username) .setParameter("p2", password); if (q.list().size() == 0) { session.close(); return new Users(); } Users user = (Users)q.list().get(0); session.close(); return user; } catch (Exception e) { session.close(); } }范例2:
import org.hibernate.HibernateException;import org.hibernate.Query;import org.hibernate.Session; public String Registration(Users u) { Session session = null; try { String hql = "select u from Users u where u.username like :p1"; session = PersistenceManager.getInstance().getSessionFactory().openSession(); Query q = session.createQuery(hql).setParameter("p1", u.getUsername()); if (q.list().size() == 0) { session.beginTransaction(); session.persist(u); session.getTransaction().commit(); session.close(); return new Boolean(true).toString(); } session.close(); return new Boolean(false).toString(); } catch (Exception e) { return e.toString(); } }


