第一节:配置数据库连接池                                      

这里配置c3p0连接池,需要的jar包:

jar包位于hibernate压缩包的:hibernate-release-4.3.5.Final\lib\optional\c3p0

文档中介绍了两种配置方式:

1)在hibernate.properties中配置:

2)在hibernate.cfg.xml中配置:

  1. <hibernate-configuration>
  2.  
  3. <session-factory>
  4.  
  5. <!--数据库连接设置 -->
  6. <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
  7. <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
  8. <property name="connection.username">root</property>
  9. <property name="connection.password">root</property>
  10.  
  11. <!-- 方言 -->
  12. <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
  13.  
  14. <!-- 控制台显示SQL -->
  15. <property name="show_sql">true</property>
  16.  
  17. <!-- 自动更新表结构 -->
  18. <property name="hbm2ddl.auto">update</property>
  19.  
  20. <!-- 最小连接数 -->
  21. <property name="c3p0.min_size">7</property>
  22. <!-- 最大连接数 -->
  23. <property name="c3p0.max_size">42</property>
  24. <!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位毫秒 -->
  25. <property name="c3p0.timeout">1800</property>
  26. <!-- 最大的PreparedStatement的数量 -->
  27. <property name="c3p0.max_statements">50</property>
  28.  
  29. <mapping resource="com/cy/model/Student.hbm.xml"/>
  30. </session-factory>
  31.  
  32. </hibernate-configuration>

测试代码:

StudentTest.java:

  1. @Test
  2. public void testSQLQuery(){
  3. String sql = "select * from t_student";
  4. Query query = session.createSQLQuery(sql).addEntity(Student.class); //查询student,绑定Student实体
  5. List<Student> studentList = query.list();
  6. for(Student s: studentList){
  7. System.out.println(s);
  8. }
  9. }

hibernate.cfg.xml:

  1. <?xml version='1.0' encoding='utf-8'?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
  5.  
  6. <hibernate-configuration>
  7.  
  8. <session-factory>
  9.  
  10. <!--数据库连接设置 -->
  11. <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
  12. <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
  13. <property name="connection.username">root</property>
  14. <property name="connection.password">root</property>
  15.  
  16. <!-- 方言 -->
  17. <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
  18.  
  19. <!-- 控制台显示SQL -->
  20. <property name="show_sql">true</property>
  21.  
  22. <!-- 自动更新表结构 -->
  23. <property name="hbm2ddl.auto">update</property>
  24.  
  25. <!-- 最小连接数 -->
  26. <property name="c3p0.min_size">7</property>
  27. <!-- 最大连接数 -->
  28. <property name="c3p0.max_size">42</property>
  29. <!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位毫秒 -->
  30. <property name="c3p0.timeout">1800</property>
  31. <!-- 最大的PreparedStatement的数量 -->
  32. <property name="c3p0.max_statements">50</property>
  33.  
  34. <mapping resource="com/cy/model/Student.hbm.xml"/>
  35. </session-factory>
  36.  
  37. </hibernate-configuration>

执行testSQLQuery,看到console启动打印c3p0相关信息:

如果没有c3p0-0.9.2.1.jar,就会报错;
 
 
第二节:配置日志框架Log4J                                              

hibernate默认使用的是简单日志框架;
简单日志框架里面也有使用log4j的整合包,这里使用log4j;

需要的jar包:

下面是项目中的简单使用:

src/log4j.properties:

  1. log4j.rootLogger=debug,appender1,appender2
  2.  
  3. log4j.appender.appender1=org.apache.log4j.ConsoleAppender
  4.  
  5. log4j.appender.appender2=org.apache.log4j.FileAppender
  6. log4j.appender.appender2.File=D:/logFile.txt
  7.  
  8. log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout
  9. log4j.appender.appender2.layout=org.apache.log4j.TTCCLayout

StudentTest.java:

  1. package com.cy.service;
  2.  
  3. import java.util.List;
  4. import org.apache.log4j.Logger;
  5. import org.hibernate.Query;
  6. import org.hibernate.Session;
  7. import org.hibernate.SessionFactory;
  8. import org.junit.After;
  9. import org.junit.Before;
  10. import org.junit.Test;
  11.  
  12. import com.cy.model.Student;
  13. import com.cy.util.HibernateUtil;
  14.  
  15. public class StudentTest {
  16.  
  17. private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
  18. private Session session;
  19. private Logger logger = Logger.getLogger(StudentTest.class);
  20.  
  21. @Before
  22. public void setUp() throws Exception {
  23. session=sessionFactory.openSession();
  24. session.beginTransaction();
  25. }
  26.  
  27. @After
  28. public void tearDown() throws Exception {
  29. session.getTransaction().commit();
  30. session.close();
  31. }
  32.  
  33. @Test
  34. public void testSQLQuery(){
  35. String sql = "select * from t_student";
  36. Query query = session.createSQLQuery(sql).addEntity(Student.class); //查询student,绑定Student实体
  37. List<Student> studentList = query.list();
  38. for(Student s: studentList){
  39. System.out.println(s);
  40. }
  41.  
  42. logger.debug("这是一个debug信息");
  43. logger.info("这是一个info信息");
  44. logger.error("这是一个error信息");
  45. }
  46.  
  47. }

执行testSQLQuery后,可以看到console:

同时D:\logFile.txt也记录了相关的日志;

Hibernate学习11——Hibernate 高级配置(连接池、log4j)的更多相关文章

  1. hibernate 查询、二级缓存、连接池

    hibernate 查询.二级缓存.连接池 查询: 1) 主键查询 Dept dept =  (Dept) session.get(Dept.class, 12); Dept dept =  (Dep ...

  2. Tomcat上配置连接池{ connect error=Name [jdbc/OracleDB] is not bound in this Context. Unable to find [jdbc]}

    . 在学习期间,从未实践过在tomcat上配置连接池,今天终于实现一次,在tomcat玩了一把,不知道你是否现在有和我一样的困境.废话少说直接上代码   java  public static Con ...

  3. 转!数据库连接池概念、种类、配置(DBCP\C3P0\JndI与Tomact配置连接池)

    数据库连接池概念.种类.配置(DBCP\C3P0\JndI与Tomact配置连接池) 一.DBCP 连接:DBCP 连接池是 Apache 软件基金组织下的一个开源连接池实现. 需要的 java 包c ...

  4. springboot2.0配置连接池(hikari、druid)

    springboot2.0配置连接池(hikari.druid) 原文链接:https://www.cnblogs.com/blog5277/p/10660689.html 原文作者:博客园--曲高终 ...

  5. Java 学习使用常见的开源连接池

    目录 连接池介绍 自定义连接池 JDBC Tomcat Pool DBCP(DataBase Connection Pool) 使用配置文件来设置DBCP C3P0 Druid 连接池介绍 在说连接池 ...

  6. Spring配置连接池

    ---------------------siwuxie095                                 Spring 配置连接池         1.Spring 配置内置连接 ...

  7. spring配置连接池和dao使用jdbcTemplate

    1 spring配置c3p0连接池 第一步 导入jar包 第二步 创建spring配置文件,配置连接池 (1)把代码中的实现在配置文件中实现 2 dao使用jdbcTemplate (1) 创建ser ...

  8. Tomcat 配置连接池

    1. Tomcat 配置 JNDI 资源 JNDI(Java Naming and Directory Interface), Java 命名和目录接口; JNDI 作用: 在服务器上配置资源, 然后 ...

  9. Tomcat配置连接池

    Tomcat配置DBCP连接池 配置tomcat服务器的时候,使用到jndi;通过Context配置文件实现配置池对象,通过new initialConext()对象的lookup()获取到数据池对象 ...

随机推荐

  1. mysql5.6与mysql5.5不同

    1.编译阶段 要明白with与without的区别,选项值分1和0,或者对应为on或off,代表支持与不支持:with的1(on)与without的0(off)是同样的,with的0(off)与wit ...

  2. PHP实现登录功能DEMO

    PHP实现登录的原理是什么呢?就是利用Session实现的,用户访问网站,系统会自动在服务器生成一个Session文件,这个Session可以用来存储用户的登录信息.好了,这是基本储备,我们下面来实现 ...

  3. New Concept English three(10)

    The great ship, Titanic, sailed for New York from Southampton on April 10th, 1912. She was carrying ...

  4. java集合运算:求交集,并集,集合差

    今天突然想用Java实现如何用集合实现交集,并集和差集的运算了!主要是看Python语言的时候想起来的. 实现主要使用的Set集合,Set集合的特点是集合内的元素不可重复. 具体代码如何: packa ...

  5. JVM的理解

    1.Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分.在讨论JVM内存区域划分之前,先来看一下Java程序具体执行的过程: 也相当与 注:JVM(ja ...

  6. EXC_BAD_ACCESS(code...)坏内存访问 调试

    一般很多人遇到这个 都会崩溃 断点一般 找不到 原因 :  只能按照一步一步走readView的模式 : 一般是问题是  相互包含 比如  view2 在view1 上  但是在view2 又创建了一 ...

  7. Linux下iptables介绍

    ptables简介 iptables是基于内核的防火墙,功能非常强大,iptables内置了filter,nat和mangle三张表. filter负责过滤数据包,包括的规则链有,input,outp ...

  8. java小知识点 2015/10/6

    java中length,length(),size()区别: 1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度 2 java中的length()方法是针对字 ...

  9. Yahoo关于性能优化的N条规则

    本来这是个老生常谈的问题,上周自成又分享了一些性能优化的建议,我这里再做一个全面的Tips整理,谨作为查阅型的文档,不妥之处,还请指正: 一. Yahoo的规则条例: 谨记:80%-90%的终端响应时 ...

  10. python(六):面型对象--类的特殊方法

    一.跟实例创建和执行有关的 __new__.__init__.__call__. 类加括号调用了__init__方法来创建一个实例对象.这一过程分成了两步: 类调用__new__来创建实例对象,__n ...