Hibernate框架介紹以及入門 【二】
Hibernate的常見配置
一、關於XML提示的配置
1、配置hibernate-mapping-3.0.dtd - XML
配置這三個地方
第一個;location
第二個:URL
第三個:
2、配置hibernate-configuration-3.0.dtd - XML
第二個:URL
第三個:
其它步驟與上面類似
完整代碼:
二、關於hibernate映射的配置
映射
1、【class標籤的配置】
這個標籤是來建立類與表(數據庫)的映射關係
屬性:
name:類的一個全路徑
table: 表名(類名如果和表名一致那麼table可以省略)
catalog:數據庫名
2、【id標籤的配置】
標籤用來建立類中的屬性
name:類當中的屬性名
column:表中的字段(類當中的屬性名和表當中的字段名如果一致則column省略)
length:長度
type:類型
3、【property標籤的配置】
標籤用來建立類中的普通屬性與表的字段的對應關係:
屬性:
name:類當中的屬性名
column:表中的字段
length:長度(建表的時候指定長度)
type: 類型 type=“string”
或者可以添加一個子標籤
一般情況下都可以自動轉換
not-null: 設置是否允許爲空
unique:設置是否是唯一的
Hibernate的核心配置方式
一種方式:屬性文件的方式:hibernate.properties
—》hibernate.connection.driver_class=com.mysql.jdbc.Driver
—》hibernate.show_sql=true
與下面的第二種方式效果一樣
以上屬性文件的方式不能引入映射文件的方式(手動編寫代碼去加載映射文件)
二種方式:XML文件的方式:hibernate.cfg.xml
如下
三、核心的配置hibernate.cfg.xml
配置
配置的詳細分解:
(1)必須的配置
鏈接數據庫的基本參數
a、驅動類
b、URL路徑
c、用戶名
d、密碼
e、方言
(2)可選的配置
a、顯示SQL語句:hibernate.show_sql
b、格式化SQL語句:hibernate.format_sql
c、自動建表:hibernate.hbm2ddl.auto
none:不使用hibernate的自動建表
create:如果數據庫當中已經有表了會刪除已有表,重新創建,如果沒有表那麼就新建表
create-drop:數據庫當中已經有表了會刪除已有表,執行操作,執行完之後會刪除這個表,如果沒有表,會新建一個,使用完了刪除該表。
設置好該項的時候需要關閉工廠sessionFactory.close();
在java代碼當中
update:如果數據庫當中有表,使用原有的表,如果沒有表,創建一個新表(更新表結構)
java當中的變量和表當中的相同如果不同時不會報錯會創建新的列
validate:如果沒有表,不會創建表。只會使用數據庫當中原有的表。(校驗映射和表的結構)
java當中的變量必須和表當中的相同如果不同則會報錯
(3)映射文件的引入
引入映射文件的位置
hibernate.cfg.xml
測試代碼:
/*
* Hibernate入門案例
*/
public class HibernateDemo01 {
@Test
// 保存客戶的案例
public void demo01() {
// 1、加載Hibernate核心配置文件
Configuration configuration = new Configuration().configure();// 該方法加載了Customer.hbm.xml
// 2、創建SessionFactory對象:類似於JDBC中的鏈接池
SessionFactory sessionFactory = configuration.buildSessionFactory();// sessionFactory工廠
// 3、通過SessionFactory獲取到Session對象:類似於我們JDBC中的Connection
Session session = sessionFactory.openSession();// Hibernate以及和mysql數據庫建立起鏈接
// 4、手動開啓事務:
Transaction transaction = session.beginTransaction();
// 5、編寫代碼
Customer customer = new Customer();
customer.setCust_name("張三");
session.save(customer);
// 6、事務提交
transaction.commit();
// 7、資源釋放
session.close();
}
}