標籤: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 進階配置