Hibernate是一個開放源代碼的對象關係映射框架,它對JDBC進行了很是輕量級的對象封裝,它將POJO與數據庫表創建映射關係,是一個全自動的orm框架,hibernate能夠自動生成SQL語句,自動執行,使得Java程序員能夠爲所欲爲的使用對象編程思惟來操縱數據庫。 Hibernate能夠應用在任何使用JDBC的場合,既能夠在Java的客戶端程序使用,也能夠在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate能夠在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任mysql
Hiberante 很重要的一個思想是ORM ——(Object Relation Mapping) .顧名思義程序員
那麼HIbernate是怎麼實現對數據庫創建映射的呢? sql
XML : 經過配置Xml 文件來實現對數據庫表創建映射。數據庫
1、 創建映射配置文件(文件名稱跟位置不限): 編程
引入約束: (DTD or Schema) 這裏引入DTD 約束, 約束連接: http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtdsession
<hibernate-mapping> <!--1 配置類和表對應 class 標籤 name 屬性 實體類全路徑 table 屬性 數據庫表名稱 --> <class name="com.daxiong.entity.User" table="t_user"> <!-- 2 配置實體類的id 跟表的id 對應 hibernate 要求實體類有一個屬性惟一值 hibernate 要求表有字段做爲惟一值 --> <!-- id 標籤 name 屬性實體類裏面id 屬性名稱 column 生成表字段名稱 --> <id name="id" column="id"> <!-- 生成的增加策略 native :生成表自動增加 --> <generator class="native"></generator> </id> <!-- 配置其餘屬性和表字段對應 --> <property name="username" column="username"></property> <property name="password" column="password"></property> </class> </hibernate-mapping>
二 、 創建核心配置文件(位置名稱限制(在src 文件下,名稱爲hibernate.cfg.xml)):架構
引入約束連接:http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd app
<hibernate-configuration> <session-factory> <!-- 配置數據庫信息 --> <property name="hibernate.connection.driver_class"></property> <property name="hibernate.connection.url"></property> <property name="hibernate.connection.username"></property> <property name="hibernate.connection.password"></property> <!-- hibernate配置 (非必須)--> <!-- 輸出底層的sql語句 --> <property name="hibernate.show_sql">true</property> <!-- 對sql語句進行格式化 --> <property name="hibernate.format_sql">true</property> <!-- hibernate配置後自動建立表 若是已經有表更新 沒有建立 --> <property name="hibernate.hbm2ddl.auto">update</property> <!-- 配置數據庫方言 在 mysql 裏實現分頁關鍵字limit 只能在MySQL中使用 在Oracle中 實現分頁rownum 在hibernate 中識別不一樣數據的特有語言 --> <property name="hibernate.dialec">org.hibernate.dialect.MckoiDialect</property> <!-- 引入映射文件 --> <mapping resource="com/daxiong/entity/Userhtb.xml" /> </session-factory> </hibernate-configuration>
注意引入映射文件的路徑。框架
4、在hibernate 向數據庫寫入數據的時候會發生亂碼的狀況下做以下處理: url
jdbc:mysql:///hibernate?useUnicode=true&characterEncoding=utf-8