hibernate--异常和c3p0连接池
事务异常处理
//关于事务回滚问题 @Test public void saveTest(){ Customer customer = new Customer("文丑", "吃喝"); //1.使用工具获取Session Session session = null; Transaction tx = null; try { session = HibernateUtils.getSession(); tx = session.beginTransaction(); session.save(customer); tx.commit(); //事务提交 }catch (Exception e){ tx.rollback(); //事务回滚 }finally { session.close(); } }
C3P0连接池
1.导入依赖
<!-- 配置hibernate的c3p0数据库连接池 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-c3p0</artifactId> <version>3.6.10.Final</version> </dependency>
2.在hibernate.cmd.xml文件配置连接池
<!-- c3p0的配置 --> <!-- hibernate.connection.provider_class使用c3p0数据库连接池的一个配置 --> <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> <!--当具体连接不够用时,申请连接的个数 --> <property name="hibernate.c3p0.acquire_increment">20</property> <!-- 设置多久扫描一次连接是否超时 --> <property name="hibernate.c3p0.idle_test_period">2000</property> <!-- 指定连接池最大里最大连接数 --> <property name="hibernate.c3p0.max_size">20</property> <!-- 指定连接池最大缓存多少个statements对象 --> <property name="hibernate.c3p0.max_statements">10</property> <!-- 指定连接池最大里最小连接数 --> <property name="hibernate.c3p0.min_size">5</property> <!-- 指定连接池连接的超时时长 --> <property name="hibernate.c3p0.timeout">2000</property>
3.获取Connection测试
//获取Connection对象,测试 @Test public void saveTest(){ //1.使用工具获取Session Session s= HibernateUtils.getSession(); s.doWork(new Work() { public void execute(Connection connection) throws SQLException { System.out.println(connection); } }); s.close(); }
测试结果:com.mchange.v2.c3p0.impl.NewProxyConnection@4a668b6e