Hibernate學習11——Hibernate 進階配置

來源:互聯網
上載者:User

標籤:dia   學習   更新   串連數   hbm   upd   property   ddl   啟動   

第一節:設定資料庫串連池                                      

這裡配置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);        }    }
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,appender2log4j.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.TTCCLayoutlog4j.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實體        List<Student> 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 進階配置

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.