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实体
        ListStudent studentList = query.list();
        for(Student s: studentList){
            System.out.println(s);
        }
    }

View Code

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

View Code

执行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  

View Code

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实体
        ListStudent studentList = query.list();
        for(Student s: studentList){
            System.out.println(s);
        }
        
        logger.debug("这是一个debug信息");
        logger.info("这是一个info信息");
        logger.error("这是一个error信息");
    }

}

View Code

执行testSQLQuery后,可以看到console:

技术分享

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

Hibernate学习11——Hibernate 高级配置

原文地址:http://www.cnblogs.com/tenWood/p/7259364.html


最新回复(0)
/jishuiyXfkiOOJOX11p40J96L_2FuPbVccdVyWXmXlUiw_3D_3D4719361
8 简首页