一.準備工做:導入jar包java
1.hibernate的jar包mysql
位置:sql
hibernate-release-5.0.2.Final\hibernate-release-5.0.2.Final\lib\required\
包名:數據庫
antlr-2.7.7.jar dom4j-1.6.1.jar hibernate-commons-annotations-5.0.0.Final.jar hibernate-core-5.0.2.Final.jar hibernate-jpa-2.0-api-1.0.1.Final.jar javassist-3.18.1-GA.jar jboss-logging-3.3.0.GA.jar jboss-transaction-api_1.1_spec-1.0.1.Final.jar
2.jdbc的jar包windows
mysql-connector-java-5.1.7.jar
3.新建數據庫:hibernate5api
hibernate5會根據關係映射文件自動建立你配置的數據表 但前提是你的數據庫必須存在 否則會拋異常session
二.編寫hibernate配置文件準備工app
1.建立hibernate配置文件:src -> new hibernate Configure XML -> next ->finish。 結束後配置文件的名字就是hibernate.cfg.xmldom
2.爲了開發方便,能夠關聯DTD 文件。這樣配置時會有相應的提示。 ide
a) windows -> preference -> XML-> XML Catalog -> Add
b) 把"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"(不帶雙引號複製到Add窗口的key這一項。
修改keyType爲URL
c) location: hibernate-release-5.0.2.Final\project\hibernate-core\src\main\resources\org\hibernate\
這個文件夾下就有 hibernate-configuration-3.0.dtd 和 hibernate-mapping-3.0.dtd 連個文件
d)點擊ok,關聯成功
三.開始編寫hibernate配置文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- 配置鏈接數據庫的基本信息 --> <property name="connection.username" >root</property> <property name="connection.password">000000</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql:///hibernate5</property> <!-- 配置hibernate的基本信息 --> <!-- hibernate所使用的數據庫方言 告訴hibernate使用的是那種數據庫,固然不告訴hibernate也能夠根據數據庫驅動去猜,可是版本也會所區別 --> <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> <!-- 是否在console打印sql語句 --> <property name= "show_sql">true</property> <!-- 是否格式化sql語句,意思就是遇到where order by 等語句會換行 控制檯打印出的sql語句讀起來就比較好讀 --> <property name="format_sql">true</property> <!-- 指定自動生成數據表的策略 --> <property name="hbm2ddl.auto">update</property> <!--指定關聯的 .hbm.xml 文件 是一個目錄結構 --> <mapping resource="com/hjj/hibernate/helloword/News.hbm.xml"/> </session-factory> </hibernate-configuration>
備註:在這裏配置hibernate所使用的數據庫方言
hibernate-release-5.0.2.Final\project\etc 裏的文件hibernate.properties 的mysql數據庫方言對應的屬性值,一共有三個:
hibernate.dialect org.hibernate.dialect.MySQLDialect
hibernate.dialect org.hibernate.dialect.MySQLInnoDBDialect
hibernate.dialect org.hibernate.dialect.MySQLMyISAMDia
原本我用的是MySQLInnoDBDialect,可是表格是沒法自動建立的,會拋出異常。
主要信息爲: org.hibernate.tool.schema.spi.SchemaManagementException:
Unable to execute schema management to JDBC target [create table NEWS (ID integer not null auto_increment, TITLE varchar(255), AUTHOR varchar(255), DATE date, primary key (ID)) type=InnoDB]
而後改了這個值爲org.hibernate.dialect.MySQL5InnoDBDialect就能夠了
四 . 建立持久化類
1 package com.hjj.hibernate.helloword; 2 import java.sql.Date; 3 //通常的 javabean 4 public class News { 5 private Integer id; 6 private String title; 7 private String author; 8 private Date date; 9 10 public News(){ 11 12 } 13 14 public News(String title, String author, Date date) { 15 super(); 16 this.title = title; 17 this.author = author; 18 this.date = date; 19 } 20 21 public Integer getId() { 22 return id; 23 } 24 25 public void setId(Integer id) { 26 this.id = id; 27 } 28 29 public String getTitle() { 30 return title; 31 } 32 public void setTitle(String title) { 33 this.title = title; 34 } 35 36 public String getAuthor() { 37 return author; 38 } 39 public void setAuthor(String author) { 40 this.author = author; 41 } 42 43 public Date getDate() { 44 return date; 45 } 46 public void setDate(Date date) { 47 this.date = date; 48 } 49 50 @Override 51 public String toString() { 52 return "News [id=" + id + ", title=" + title + ", author=" + author + ", date=" + date + "]"; 53 } 54 55 }
五.建立對象關係映射文件
位置:和持久化類(News)位於一個包底下 com.hjj.hibernate.helloworld.News.hbm.xml
建立方法:右鍵->New ->Other ->hiberante XML Mapping file,而後選擇News類,映射文件就成功了.
這個方法是自動生成映射文件,也能夠本身寫.
具體代碼以下:
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Generated 2016-3-7 19:05:44 by Hibernate Tools 3.4.0.CR1 --> <hibernate-mapping> <class name="com.hjj.hibernate.helloword.News" table="NEWS"> <!-- name :類的屬性名 --> <id name="id" type="java.lang.Integer"> <!-- column:數據庫字段名 --> <column name="ID" /> <!-- 指定主鍵的生成方式,native:使用數據庫本地的生成方式 不一樣數據庫自動主鍵的方式不一樣 native 能夠根據數據庫的不一樣選擇合適的方式 --> <generator class="native" /> </id> <property name="title" type="java.lang.String"> <column name="TITLE" /> </property> <property name="author" type="java.lang.String"> <column name="AUTHOR" /> </property> <property name="date" type="java.sql.Date"> <column name="DATE" /> </property> </class> </hibernate-mapping>
六.經過Hibernate API 編寫訪問數據庫的代碼
建立一個單元測試類
package com.hjj.hibernate.helloword; import static org.junit.Assert.*; import java.sql.Date; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.junit.Test; public class HibernateTest { @Test public void test() { //1. 建立一個 SessionFactory對象 SessionFactory 是一個接口 SessionFactory sessionFactory = null; //1)建立Configuration 對象 :對應 hibernate的基本配置信息和對象關係映射 Configuration configuration = new Configuration().configure(); sessionFactory = configuration.buildSessionFactory(); //2.建立一個 Session 對象 Session session = sessionFactory.openSession(); //3.開啓事務 Transaction transaction = session.beginTransaction(); //4.執行保存操做 News news = new News("java","HJJ",new Date(new java.util.Date().getTime())); session.save(news); //5.提交事務 transaction.commit(); //6.關閉session session.close(); //7.關閉SessionFactory對象 sessionFactory.close(); } }
七.運行單元測試類
控制檯:
Hibernate:
insert
into
NEWS
(TITLE, AUTHOR, DATE)
values
(?, ?, ?)
八.數據庫
自動建立news表格,而且成功插入一條記錄
news表格