從零打造線上網盤系統之Hibernate框架起步
阿新 • • 發佈:2018-11-10
歡迎瀏覽Java工程師SSH教程從零打造線上網盤系統系列教程,本系列教程將會使用SSH(Struts2+Spring+Hibernate)打造一個線上網盤系統,本系列教程是從零開始,所以會詳細以及著重地闡述SSH三個框架的基礎知識,第四部分將會進入專案實戰,如果您已經對SSH框架有所掌握,那麼可以直接瀏覽第四章
本章的學習目標
- 明白什麼是Hibernate
- 掌握XML配置Hibernate
- 掌握註解配置Hibernate
- Hibernate的基本增刪改查的使用
Hibernate概述
Hibernate是一個物件關係對映框架,可以通過XML配置檔案或者註解將資料庫與實體Bean進行對映
Hibernate常規配置步驟
- 配置Hibernate
- 建立實體Bean及其對映檔案
- 建立會話(Session)工廠
- 通過會話(Sessioon)工廠操作會話
配置Hibernate
對於配置Hibernate我們有很多種方法,例如XML配置,屬性檔案配置,程式設計方式配置,註解配置等.
XML配置 小節完整示例程式碼下載
編寫名為Hibernate.cfg.xml的xml檔案放入資源目錄,根據下面形式對Hibernate進行配置
<?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 元素用於配置Hibernate中的屬性 鍵:值 --> <!-- hibernate.connection.driver_class : 連線資料庫的驅動 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <!-- hibernate.connection.username : 連線資料庫的使用者名稱 --> <property name="hibernate.connection.username">root</property> <!-- hibernate.connection.password : 連線資料庫的密碼 --> <property name="hibernate.connection.password">jimisun</property> <!-- hibernate.connection.url : 連線資料庫的地址,路徑 --> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property> <!-- show_sql: 操作資料庫時,會 向控制檯列印sql語句 --> <property name="show_sql">true</property> <!-- format_sql: 列印sql語句前,會將sql語句先格式化 --> <property name="format_sql">true</property> <!-- hbm2ddl.auto: 生成表結構的策略配置 update(最常用的取值): 如果當前資料庫中不存在表結構,那麼自動建立表結構. 如果存在表結構,並且表結構與實體一致,那麼不做修改 如果存在表結構,並且表結構與實體不一致,那麼會修改表結構.會保留原有列. create(很少):無論是否存在表結構.每次啟動Hibernate都會重新建立表結構.(資料會丟失) create-drop(極少): 無論是否存在表結構.每次啟動Hibernate都會重新建立表結構.每次Hibernate執行結束時,刪除表結構. validate(很少):不會自動建立表結構.也不會自動維護表結構.Hibernate只校驗表結構. 如果表結構不一致將會丟擲異常. --> <property name="hbm2ddl.auto">update</property> <!-- 資料庫方言配置 org.hibernate.dialect.MySQLDialect (選擇最短的) --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- hibernate.connection.autocommit: 事務自動提交 --> <property name="hibernate.connection.autocommit">true</property> <!-- 將Session與執行緒繫結=> 只有配置了該配置,才能使用getCurrentSession --> <property name="hibernate.current_session_context_class">thread</property> <!-- 引入ORM 對映檔案 填寫src之後的路徑 --> <mapping resource="com/jimisun/domain/User.hbm.xml"/> </session-factory> </hibernate-configuration>
屬性檔案配置 小節完整示例程式碼下載
編寫hibernate.properties的properties配置檔案放入資源目錄,配置形式如下
hibernate.dialect=org.hibernate.dialect.MySQLDialect hibernate.connection.driver_class=com.mysql.jdbc.Driver hibernate.connection.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8 hibernate.connection.username=root hibernate.connection.password=root hibernate.show_sql=true hibernate.format_sql=true hibernate.hbm2ddl.auto=update
程式設計配置
程式設計配置hibernate在實際開發中使用較少,瞭解即可
Configuration configuration = new Configuration();
configuration.addResource("mapping.xml")
.setProperty("connection.username", "root")
.setProperty("connection.password", "jimisun")
.setProperty("dialect", "org.hibernate.dialect.MySWLDialect")
.setProperty("connection.url", "jdbc:mysql://localhost:3306/test")
.setProperty("connection.driver_class", "com.mysql.jdbc.Driver");
註解配置 小節完整示例程式碼下載
註解配置嚴格上來說並不是一種配置方式,仍然需要使用XML或者properties將Hibernate進行配置,在Bean實體和表之間的對映關係我們就可以使用註解進行配置,就不需要編寫Bean對應的對映XML檔案
首先使用XML或者properties配置hibernate
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String username;
private String password;
}
Session增刪改查示例 小節完整示例程式碼下載
/**
* 儲存&更新User
*/
static void addUser() {
Transaction transaction = session.beginTransaction();
User user = new User();
user.setUsername("jimisunl");
user.setPassword("jimisun");
session.saveOrUpdate(user);
transaction.commit();
}
/**
* 查詢User
*
* @param theClass
* @param id
* @return
*/
static User getUser(Class theClass, Serializable id) {
return (User) session.find(theClass, id);
}
/**
* 刪除User
* @param object
*/
static void deleteUser(Object object) {
Transaction transaction = session.beginTransaction();
session.delete(object);
transaction.commit();
}
本篇總結
掌握Hibernate的配置方式,能使用的HibernateSessionFactory的Session進行增刪改查操作