1.導包
- Hibernate開發包
-
- 數據庫的驅動包
2.核心配置文件
核心配置文件(賦值到src下)
1.核心配置文件
對於hibernate的核心配置文件它有兩種方式(選其中一種即可):
- hibernate.cfg.xml
- hibernate.properties
我們在開發中使用比較多的是hibernate.cfg.xml這種方式,原因它的配置能力更強,易於修改
我們主要講解的是hibernate.cfg.xml配置
1.可以加載數據庫相關信息
<!-- 配置關於數據庫連接的四個項 driverClass url username password -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///hibernateTest</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123</property>
2.hibernate相關配置
<!-- 可以將向數據庫發送的sql顯示出來 -->
<property name="hibernate.show_sql">true</property>
<!-- 格式化sql -->
<property name="hibernate.format_sql">true</property>
<!-- hibernate的方言(告知鏈接的數據庫類型MySQL為例) -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
3.加載映射配置文件
<!-- 配置hibernate的映射文件所在位置 -->
<mapping resource="cn/itheima/domain/Customer.hbm.xml" />
對於hibernate.cfg.xml配置文件中的內容可以參考hibernate/project/etc/hibernate.properties的配置
配置下面這些屬性后,我們可以進行表的自動創建
#hibernate.hbm2ddl.auto create-drop
#hibernate.hbm2ddl.auto create
#hibernate.hbm2ddl.auto update
#hibernate.hbm2ddl.auto validate
Create-drop 每次都會創建一個新的表,執行完成后刪除。一般在測試中使用
Create 每次都會創建一個新的表,一般是在測試中使用
update 如果數據庫中有表,不創建,沒有表創建,如果映射不匹配,會自動更新表結構(只能添加)
validate 只會使用存在的表,並且會對映射關系進行校驗.
3.映射配置文件
它一般放置在實體類所在的包下。
這個配置文件的主要作用是建立表與類的映射關系。
1.統一聲明包名,這樣在<class>中就不需要寫類的全名.
2.關於<class>標簽配置
2.關於<class>標簽配置
<class name="cn.itcast.domain.Customer" table="t_coustomer" catalog="hibernateTest">
<id></id>
</class>
name屬性:類的全名稱
table 表的名稱,可以省略,這時表的名稱就與類名一致
catalog屬性:數據庫名稱 可以省略.如果省略,參考核心配置文件中url路徑中的庫名稱
3.關於<id>標簽
<!-- id用於描述主鍵 -->
<id name="id" column="id">
<!-- 主鍵生成策略 -->
<generator class="native"></generator>
</id>
首先它必須存在。<id>是用於建立類中的屬性與表中的主鍵映射。
name 類中的屬性名稱
column 表中的主鍵名稱 column它也可以省略,這時列名就與類中屬性名稱一致
length 字段長度
type屬性 指定類型
<generator>它主要是描述主鍵生成策略.
4.關於<property>標簽
<!-- 使用property來描述屬性與字段的對應關系 -->
<property name="name" column="name" length="20"></property>
<property name="address" column="address" length="50"></property>
關於hibernate的映射文件中類型問題
對於type屬性它的取值,可以有三種:
1.java中的數據類型
2.hibernate中的數據類型
3.SQL的數據類型

默認是
hibernate
中數據類型
4.獲取session的工具類編寫(可選)
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
/**
* HibernateUtils工具類
*
* @author TGV5
*
*/
public class HibernateUtils {
private static Configuration config;
private static SessionFactory sessionFactory;
static {
config = new Configuration().configure();
sessionFactory = config.buildSessionFactory();
}
/**
* 獲取SessionFactory
*
* @return
*/
public static Session openSession() {
return sessionFactory.openSession();
}
public static Session getCurrentSession() {
return sessionFactory.getCurrentSession();
}
}
5.c3p0連接池的配置(雖然HIbernate帶有默認的連接池,但是性能不如C3P0連接池)
1.導入Hibernate提供的3個C3p0的jar包

2.在核心配置文件hibernate.cfg.xml中添加提供者配置
c3p0的配置的可以不進行配置,會有默認的配置
<!-- 設置連接提供者 -->
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<!-- c3p0連接池的配置 -->
<property name="hibernate.c3p0.max_size">20</property><!-- 最大連接池 -->
<property name="hibernate.c3p0.min_size">5</property><!-- 最小連接數 -->
<property name="hibernate.c3p0.timeout">120</property> <!-- 超時 -->
<property name="hibernate.c3p0.idle_test_period">3000</property> <!-- 空閑連接 -->
附件列表