Hibernate学习11——Hibernate 高级配置
Posted 有点懒惰的大青年
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hibernate学习11——Hibernate 高级配置相关的知识,希望对你有一定的参考价值。
第一节:配置数据库连接池
这里配置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相关信息:
如果没有c3p0-0.9.2.1.jar,就会报错;
第二节:配置日志框架Log4J
hibernate默认使用的是简单日志框架;
简单日志框架里面也有使用log4j的整合包,这里使用log4j;
需要的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 高级配置的主要内容,如果未能解决你的问题,请参考以下文章
hibernate框架学习笔记11:Criteria查询详解
免费下载全套最新012Hibernate视频教程+教学资料+学习课件+源代码+软件开发工具
Spring+Hibernate配置中获取EntityManager