歡迎瀏覽Java工程師SSH教程從零打造在線網盤系統系列教程,本系列教程將會使用SSH(Struts2+Spring+Hibernate)打造一個在線網盤系統,本系列教程是從零開始,因此會詳細以及着重地闡述SSH三個框架的基礎知識,第四部分將會進入項目實戰,若是您已經對SSH框架有所掌握,那麼能夠直接瀏覽第四章,源碼均提供在GitHub/ssh-network-hard-disk上供你們參閱html
Hibernate是一個對象關係映射框架,能夠經過XML配置文件或者註解將數據庫與實體Bean進行映射mysql
對於配置Hibernate咱們有不少種方法,例如XML配置,屬性文件配置,編程方式配置,註解配置等.git
XML配置 小節完整示例代碼下載github
編寫名爲Hibernate.cfg.xml的xml文件放入資源目錄,根據下面形式對Hibernate進行配置sql
<?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
編程配置session
編程配置hibernate在實際開發中使用較少,瞭解便可app
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; }
/** * 保存&更新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進行增刪改查操做