Hibernate学习11——Hibernate 高级配置(连接池、log4j)
第一节:配置数据库连接池
这里配置c3p0连接池,需要的jar包:
jar包位于hibernate压缩包的:hibernate-release-4.3.5.Final\lib\optional\c3p0
文档中介绍了两种配置方式:
1)在hibernate.properties中配置:
2)在hibernate.cfg.xml中配置:
- <hibernate-configuration>
- <session-factory>
- <!--数据库连接设置 -->
- <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
- <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
- <property name="connection.username">root</property>
- <property name="connection.password">root</property>
- <!-- 方言 -->
- <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
- <!-- 控制台显示SQL -->
- <property name="show_sql">true</property>
- <!-- 自动更新表结构 -->
- <property name="hbm2ddl.auto">update</property>
- <!-- 最小连接数 -->
- <property name="c3p0.min_size">7</property>
- <!-- 最大连接数 -->
- <property name="c3p0.max_size">42</property>
- <!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位毫秒 -->
- <property name="c3p0.timeout">1800</property>
- <!-- 最大的PreparedStatement的数量 -->
- <property name="c3p0.max_statements">50</property>
- <mapping resource="com/cy/model/Student.hbm.xml"/>
- </session-factory>
- </hibernate-configuration>
测试代码:
StudentTest.java:
- @Test
- public void testSQLQuery(){
- String sql = "select * from t_student";
- Query query = session.createSQLQuery(sql).addEntity(Student.class); //查询student,绑定Student实体
- List<Student> studentList = query.list();
- for(Student s: studentList){
- System.out.println(s);
- }
- }
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="connection.driver_class">com.mysql.jdbc.Driver</property>
- <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
- <property name="connection.username">root</property>
- <property name="connection.password">root</property>
- <!-- 方言 -->
- <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
- <!-- 控制台显示SQL -->
- <property name="show_sql">true</property>
- <!-- 自动更新表结构 -->
- <property name="hbm2ddl.auto">update</property>
- <!-- 最小连接数 -->
- <property name="c3p0.min_size">7</property>
- <!-- 最大连接数 -->
- <property name="c3p0.max_size">42</property>
- <!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位毫秒 -->
- <property name="c3p0.timeout">1800</property>
- <!-- 最大的PreparedStatement的数量 -->
- <property name="c3p0.max_statements">50</property>
- <mapping resource="com/cy/model/Student.hbm.xml"/>
- </session-factory>
- </hibernate-configuration>
执行testSQLQuery,看到console启动打印c3p0相关信息:
需要的jar包:
下面是项目中的简单使用:
src/log4j.properties:
- log4j.rootLogger=debug,appender1,appender2
- log4j.appender.appender1=org.apache.log4j.ConsoleAppender
- log4j.appender.appender2=org.apache.log4j.FileAppender
- log4j.appender.appender2.File=D:/logFile.txt
- log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout
- log4j.appender.appender2.layout=org.apache.log4j.TTCCLayout
StudentTest.java:
- package com.cy.service;
- import java.util.List;
- import org.apache.log4j.Logger;
- import org.hibernate.Query;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.junit.After;
- import org.junit.Before;
- import org.junit.Test;
- import com.cy.model.Student;
- import com.cy.util.HibernateUtil;
- public class StudentTest {
- private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
- private Session session;
- private Logger logger = Logger.getLogger(StudentTest.class);
- @Before
- public void setUp() throws Exception {
- session=sessionFactory.openSession();
- session.beginTransaction();
- }
- @After
- public void tearDown() throws Exception {
- session.getTransaction().commit();
- session.close();
- }
- @Test
- public void testSQLQuery(){
- String sql = "select * from t_student";
- Query query = session.createSQLQuery(sql).addEntity(Student.class); //查询student,绑定Student实体
- List<Student> studentList = query.list();
- for(Student s: studentList){
- System.out.println(s);
- }
- logger.debug("这是一个debug信息");
- logger.info("这是一个info信息");
- logger.error("这是一个error信息");
- }
- }
执行testSQLQuery后,可以看到console:
同时D:\logFile.txt也记录了相关的日志;
Hibernate学习11——Hibernate 高级配置(连接池、log4j)的更多相关文章
- hibernate 查询、二级缓存、连接池
hibernate 查询.二级缓存.连接池 查询: 1) 主键查询 Dept dept = (Dept) session.get(Dept.class, 12); Dept dept = (Dep ...
- Tomcat上配置连接池{ connect error=Name [jdbc/OracleDB] is not bound in this Context. Unable to find [jdbc]}
. 在学习期间,从未实践过在tomcat上配置连接池,今天终于实现一次,在tomcat玩了一把,不知道你是否现在有和我一样的困境.废话少说直接上代码 java public static Con ...
- 转!数据库连接池概念、种类、配置(DBCP\C3P0\JndI与Tomact配置连接池)
数据库连接池概念.种类.配置(DBCP\C3P0\JndI与Tomact配置连接池) 一.DBCP 连接:DBCP 连接池是 Apache 软件基金组织下的一个开源连接池实现. 需要的 java 包c ...
- springboot2.0配置连接池(hikari、druid)
springboot2.0配置连接池(hikari.druid) 原文链接:https://www.cnblogs.com/blog5277/p/10660689.html 原文作者:博客园--曲高终 ...
- Java 学习使用常见的开源连接池
目录 连接池介绍 自定义连接池 JDBC Tomcat Pool DBCP(DataBase Connection Pool) 使用配置文件来设置DBCP C3P0 Druid 连接池介绍 在说连接池 ...
- Spring配置连接池
---------------------siwuxie095 Spring 配置连接池 1.Spring 配置内置连接 ...
- spring配置连接池和dao使用jdbcTemplate
1 spring配置c3p0连接池 第一步 导入jar包 第二步 创建spring配置文件,配置连接池 (1)把代码中的实现在配置文件中实现 2 dao使用jdbcTemplate (1) 创建ser ...
- Tomcat 配置连接池
1. Tomcat 配置 JNDI 资源 JNDI(Java Naming and Directory Interface), Java 命名和目录接口; JNDI 作用: 在服务器上配置资源, 然后 ...
- Tomcat配置连接池
Tomcat配置DBCP连接池 配置tomcat服务器的时候,使用到jndi;通过Context配置文件实现配置池对象,通过new initialConext()对象的lookup()获取到数据池对象 ...
随机推荐
- mysql5.6与mysql5.5不同
1.编译阶段 要明白with与without的区别,选项值分1和0,或者对应为on或off,代表支持与不支持:with的1(on)与without的0(off)是同样的,with的0(off)与wit ...
- PHP实现登录功能DEMO
PHP实现登录的原理是什么呢?就是利用Session实现的,用户访问网站,系统会自动在服务器生成一个Session文件,这个Session可以用来存储用户的登录信息.好了,这是基本储备,我们下面来实现 ...
- New Concept English three(10)
The great ship, Titanic, sailed for New York from Southampton on April 10th, 1912. She was carrying ...
- java集合运算:求交集,并集,集合差
今天突然想用Java实现如何用集合实现交集,并集和差集的运算了!主要是看Python语言的时候想起来的. 实现主要使用的Set集合,Set集合的特点是集合内的元素不可重复. 具体代码如何: packa ...
- JVM的理解
1.Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分.在讨论JVM内存区域划分之前,先来看一下Java程序具体执行的过程: 也相当与 注:JVM(ja ...
- EXC_BAD_ACCESS(code...)坏内存访问 调试
一般很多人遇到这个 都会崩溃 断点一般 找不到 原因 : 只能按照一步一步走readView的模式 : 一般是问题是 相互包含 比如 view2 在view1 上 但是在view2 又创建了一 ...
- Linux下iptables介绍
ptables简介 iptables是基于内核的防火墙,功能非常强大,iptables内置了filter,nat和mangle三张表. filter负责过滤数据包,包括的规则链有,input,outp ...
- java小知识点 2015/10/6
java中length,length(),size()区别: 1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度 2 java中的length()方法是针对字 ...
- Yahoo关于性能优化的N条规则
本来这是个老生常谈的问题,上周自成又分享了一些性能优化的建议,我这里再做一个全面的Tips整理,谨作为查阅型的文档,不妥之处,还请指正: 一. Yahoo的规则条例: 谨记:80%-90%的终端响应时 ...
- python(六):面型对象--类的特殊方法
一.跟实例创建和执行有关的 __new__.__init__.__call__. 类加括号调用了__init__方法来创建一个实例对象.这一过程分成了两步: 类调用__new__来创建实例对象,__n ...