一身轉戰三千裡,一劍曾當百萬師
如果你在之前沒有學過SSH三大框架,那麼你之前肯定是通過JDBC來對數據庫進行操作.現在,你完全可以把跟數據庫交互的操作直接交給Hibernate.
Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,它將POJO與數據庫表建立映射關系,是一個全自動的 orm框架,hibernate可以自動生成SQL語句,自動執行,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用,最具革命 意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。
Hibernate是一個持久層的ORM框架。(ORM:Object Relational Mapping。對象關系映射。開發語言用的是Java,面向對象的(Object)。使用的數據庫是關系型數據庫(Relational)。就是將對象與數據庫中的表建立一種映射關系,操作對象就可以操作這個表。)
了解了hibernate之後,是不是很期待呢?OK,我們來做一個Hibernate入門案例.
第一步:下載Hibernate開發包.下載地址:https://sourceforge.net/projects/hibernate/files/hibernate-orm/5.0.7.Final/
第二步:下載完成並解壓後你可以看到如下目錄:
第三步:接下來,進入eclipse創建web項目,並且引入必要的jar包,jar包在上面的lib/required目錄下
同時,還需要 數據庫驅動包 和 日志記錄的包 ,一個入門案例的完整項目的jar包如下圖:
第四步:然後就是創建數據庫和表了,
建庫:
CREATE DATABASE hibernate
建表:
CREATE TABLE `cst_customer` (
`cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客戶編號(主鍵)',
`cust_name` varchar(32) NOT NULL COMMENT '客戶名稱(公司名稱)',
`cust_source` varchar(32) DEFAULT NULL COMMENT '客戶信息來源',
`cust_industry` varchar(32) DEFAULT NULL COMMENT '客戶所屬行業',
`cust_level` varchar(32) DEFAULT NULL COMMENT '客戶級別',
`cust_phone` varchar(64) DEFAULT NULL COMMENT '固定電話',
`cust_mobile` varchar(16) DEFAULT NULL COMMENT '移動電話',
PRIMARY KEY (`cust_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
第五步:根據數據庫的表建實體類並生成get和set方法
public class Customer {
private Long cust_id;
private String cust_name;
private String cust_source;
private String cust_industry;
private String cust_level;
private String cust_phone;
private String cust_mobile;
//生成對應的get和set方法
}
第六步:創建映射,映射文件通常有一個命名規則:類名.hbm.xml,映射文件放在和實體類同一個目錄下.創建映射文件首先要引入約束,這段代碼不用寫,到如下圖的位置復制過來:
打開Java Resources/Libraries/Web App Libraries
打開hibernate-core-5.0.7.Final.jar/org.hibernate
在最下面找到並打開hibernate-configuration-3.0.dtd
復制如下面這段
接下來的配置看圖:
如果在寫配置文件的時沒網並且沒有提示的時候,那需要配置相關文件:
復制約束中的最後一段到浏覽器打開,就會自動下載一個dtd文件.
然後在eclipse中首選項裡找到如下圖:key是約束最後的一段,location是你剛下載的dtd文件的路徑,配置好了之後在沒網的情況下就會有提示了,如果還沒有就重啟一下.
第七步:在src的目錄下創建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 name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///hibernate</property>
<!-- 配置連接數據庫的用戶名和密碼-->
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123</property>
<!-- 數據庫的方言:根據底層的數據庫生成不同的SQL -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 配置顯示SQL -->
<property name="hibernate.show_sql">true</property>
<!-- 配置格式化SQL -->
<property name="hibernate.format_sql">true</property>
<!-- 配置hbm2ddl
hibernate.hbm2ddl.auto有幾個取值
* none :不使用映射轉成DDL。
* create :如果原來有表將原有的表刪除。每次都會新創建一個表。測試的時候使用。
* create-drop :如果原來有表將原有的表刪除。每次都會新創建一個表。執行完操作以後會將表刪除掉。測試的時候使用。
* update :如果數據庫中有表使用原來的表。如果沒有表會創建一個表。而且可以更新原有表結構。
* validate :不會創建表。校驗映射和表結構是否正確
-->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 加載映射文件 -->
<mapping resource="com/hibernate/domain/Customer.hbm.xml"/>
</session-factory>
</hibernate-configuration>
第八步:編寫測試方法
public class HibernateDemo1 {
@Test
/**
* 保存操作
*/
public void demo1(){
// 加載Hibernate的核心配置文件.
Configuration configuration = new Configuration().configure();
// 創建一個SessionFactory的對象.
SessionFactory sessionFactory = configuration.buildSessionFactory();
// 創建Session(相當於JDBC中的Connection)
Session session = sessionFactory.openSession();
// 開啟事務:
Transaction transaction = session.beginTransaction();
// 完成操作:
Customer customer = new Customer();
customer.setCust_name("某某某");
//保存的方法
session.save(customer);
// 提交事務
transaction.commit();
// 釋放資源
session.close();
}
}
執行方法,就可以在數據庫添加記錄了.......
到此為止,你已經入門了hibernate.加油吧.明天會更好.