從零打造在線網盤系統之Hibernate框架起步
阿新 • • 發佈:2018-11-10
https ram 刪除 odin 1.0 ssh框架 mat doc 並且
歡迎瀏覽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進行增刪改查操作
從零打造在線網盤系統之Hibernate框架起步