hibernate 框架java
一、hibernate框架應用在javaee三層結構中的dao層框架mysql
二、好處就是不須要寫複雜jdbc代碼,不須要sql語句實現sql
三、是開源的輕量級框架數據庫
hibernate使用orm思想對數據庫進行crud操做, orm - object relational mapping, 對象關係映射,讓實體類和數據庫表一一對應,實體類屬性與表裏的字段一一對應。session
對數據庫表進行操做,不須要對數據庫操做,直接對實體類進行操做便可完成。它與jdbc的對比關係以下圖app
MAVEN導包配置框架
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.2.10.Final</version> </dependency>
搭建hibernate步驟ui
第一步,建立實體類this
public class LoginInfo { //對應數據庫的主鍵,值惟一 private String id; private String username; private String password; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
注意:若是實體類對應的表不存在,hibernate能夠自動建立數據表url
第二步 配置數據表與實體類的映射關係
新建一個配置文件loginInfo.hbm.xml. 文件名字與位置沒有固定,建議放在實體類所在包,名字樣式爲xxx.hbm.xml.在開始配置前,首先引入約束,約束文件爲 http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd 點擊下載MappingDTD文件
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
本例子中logininfo.hbm.xml內容以下
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <!--配置實體類與數據表對應關係 class 標籤 name : 實體類名 table :表名--> <class name="com.blueto.hibernate.LoginInfo" table="t_logininfo"> <id name="id" column="id"> <!--主鍵 自動增加--> <!--<generator class="native"></generator>--> <!--uuid方式生成主鍵--> <generator class="uuid"></generator> </id> <!--name 實體類屬性, column 表字段名--> <property name="username" column="username"></property> <property name="password" column="password"></property> </class> </hibernate-mapping>
第三步 建立hibernate的核心配置文件
與mapping文件不同,該配置文件名與位置必須固定,文件名只能爲hibernate.cfg.xml, 而且只能放在目錄src下面
配置分三小步驟
1)首先引入約束 http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd, 點擊下載DTD
2)配置數據庫信息
3)配置hibernate信息
4)把映射配置文件(上一節的xxx.hbm.xml)放到核心配置文件中
<?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> <!--1) 配置數據庫信息--> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql:///t_logininfo</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> <!--若是沒有表,則建立,有則更新--> <property name="hibernate.hbm2ddl.auto">update</property> <!--配置數據庫方言--> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 3) 把映射配置文件放到核心配置文件中--> <mapping resource="com/blueto/hibernate/logininfo.hbm.xml"></mapping> </session-factory> </hibernate-configuration>
若是從沒有接觸過hibernate, 那怎麼知道里面怎麼配置啊?若是記不住配置內容,能夠打開hibernate.properties文件查看裏面的配置屬性,找到對應的數據庫按照properties裏定義配置就行了。方便理解,上一張它們間的關係圖
我使用的是mysql數據庫,其餘數據庫配置一樣能夠參考hibernate.properties文件配置(點擊下載hibernate.properties)
第四步 數據庫的CRUD操做
public class HiberDemo { @Test public void testAdd(){ // step 1 : 加載hibernate核心配置文件
Configuration cfg = new Configuration(); cfg.configure(); //setp 2 : 建立SessionFactory
SessionFactory sessionFactory = cfg.buildSessionFactory(); //step 3 : 建立session對象
Session session = sessionFactory.openSession(); //step 4 開啓事務
Transaction tx = session.beginTransaction(); //step 5 crud
LoginInfo loginInfo = new LoginInfo(); loginInfo.setUsername("new name"); //寫入數據表中,若是表不存在,則建立表, // 前提是要在覈心配置文件中配置 : <property name="hibernate.hbm2ddl.auto">update</property>
session.save(loginInfo); //step 6 提交事務
tx.commit(); //step 7 關閉資源
session.close(); sessionFactory.close(); } }