1. 對象關系映射(英語:(Object Relational Mapping,簡稱ORM,或O/RM,或O/R mapping)
是一種程序技術,用於實現面向對象編程語言里不同類型系統的數據之間的轉換。從效果上說,它其實是創建了一個可在編程語言里使用的--“虛擬對象數據庫”。
其中 HIBERNATE的輕量級 ORM 模型逐步確立了在 JAVA ORM 架構中領導地位,甚至取代復雜而又繁瑣的 EJB 模型而成為事實上的 JAVA ORM 工業標准。而且其中的許多設計均被 J2EE 標准組織吸納而成為最新 EJB 3.0 規范的標准,這也是開源項目影響工業領域標准的有力見證。
2. Hibernate是一個開放源代碼的對象關系映射框架
它對JDBC進行了非常輕量級的對象封裝,它將POJO與數據庫表建立映射關系,是一個全自動的orm框架,hibernate可以自動生成SQL語句,自動執行,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。
語言特點
● 將對數據庫的操作轉換為對Java對象的操作,從而簡化開發。通過修改一個“持久化”對象的屬性從而修改數據庫表
中對應的記錄數據。 ● 提供線程和進程兩個級別的緩存提升應用程序性能。 ● 有豐富的映射方式將Java對象之間的關系轉換為數據庫表之間的關系。 ● 屏蔽不同數據庫實現之間的差異。在Hibernate中只需要通過“方言”的形式指定當前使用的數據庫,就可以根據底
層數據庫的實際情況生成適合的SQL語句。 ● 非侵入式:Hibernate不要求持久化類實現任何接口或繼承任何類,POJO即可。
核心API Hibernate的API一共有6個,
分別為:Session、SessionFactory、Transaction、Query、Criteria和Configuration。
通過這些接口,可以對持久化對象進行存取、事務控 制。
Hibernate的創建步驟
第一步:java project項目
再導包,即hibernate4和mysql

第二步:
2.創建 hibernate.cfg.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>
<!--數據庫連接設置 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hib_demo01</property> //hib_demo01 SQLyog數據庫名
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<!-- 方言 -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> //連接的數據庫類型
<!-- 控制台顯示SQL -->
<property name="show_sql">true</property>
<!-- 自動更新表結構 -->
<property name="hbm2ddl.auto">update</property>
<mapping resource="com/oracle/model/Product.hbm.xml"/> // mapping映射Product類(class注解時"/"用".")
</session-factory>
</hibernate-configuration>
3.創建包和類, 連接model層的Product.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.oracle.model">
<class name="Product" table="t_product"> //把Product類映射成t_product表
<id name="id" column="product_id"> //column代表數據庫的字段
<generator class="native"></generator>
//1.native跨數據庫時使用,由底層方言產生;2.hibernate默認查找oracle中的hibernate_sequence,如果oracle
//中沒有hibernate_sequence該序列,連oracle會報錯
</id>
<property name="name" column="product_name"></property>
<property name="price" column="price"></property>
<property name="num" column="num"></property>
</class>
</hibernate-mapping>
4.再連接util層
HibernateUtil.java
package com.oracle.util; import org.hibernate.SessionFactory; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; public class HibernateUtil { private static final SessionFactory sessionFactory=buildSessionFactory(); private static SessionFactory buildSessionFactory(){ Configuration configuration=new Configuration().configure(); //實例化配置文件 ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilde().applySettings(configuration.getProperties()).build();
//實例化服務登記
return configuration.buildSessionFactory(serviceRegistry); //獲取Session工廠 } public static SessionFactory getSessionFactory(){ return sessionFactory; } }
5.轉向service中的 Demo.java 生成表並往表中添加數據,並對其進行增刪改查
Demo.java
package com.oracle.service; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import com.oracle.model.Product; public class Demo { public static void main(String[] args) { Configuration configuration=new Configuration().configure(); //實例化配置文件 ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build(); //實例化服務登記 SessionFactory sessionFactory=configuration.buildSessionFactory(serviceRegistry); //獲取Session工廠 Session session=sessionFactory.openSession(); //生成一個session session.beginTransaction(); //開啟事務
//先運行程序,生產數據庫表 Product product=new Product(); product.setName("鍵鼠套裝");
product.setPrice(56.98); product.setNum(20); session.save(product); //觀察控制台的輸出 session.getTransaction().commit(); //提交事務 session.close(); //關閉session sessionFactory.close(); //關閉session工廠 } }
Add.java
package com.oracle.service;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import com.oracle.model.Product;
import com.oracle.util.HibernateUtil;
public class AddDemo {
private static SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
public static void main(String[] args) {
Session session=sessionFactory.openSession(); //生成一個session
session.beginTransaction(); //開啟事務
Product product=new Product();
product.setName("鍵鼠套裝2");
product.setPrice(56.00);
product.setNum(20);
session.save(product); //觀察控制台的輸出
session.getTransaction().commit(); //提交事務
session.close(); //關閉session
sessionFactory.close();
}
}
FindDemo.java
package com.oracle.service;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import com.oracle.model.Product;
import com.oracle.util.HibernateUtil;
public class FindDemo {
private static SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
public static void main(String[] args) {
Session session=sessionFactory.openSession(); //生成一個session
session.beginTransaction(); //開啟事務
String hql = "from Product";
Query query = session.createQuery(hql);
@SuppressWarnings("unchecked") //壓制警告
List<Product> productList = query.list();
for(Product product: productList){
System.out.println(product.getId()+" "+product.getName()+" "+product.getPrice()+" "+product.getNum());
}
session.getTransaction().commit(); //提交事務
session.close(); //關閉session
sessionFactory.close();
}
}
DelDemo.java
package com.oracle.service;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import com.oracle.model.Product;
import com.oracle.util.HibernateUtil;
public class DelDemo {
private static SessionFactory sessionFactory=HibernateUtil.getSessionFactory(); public static void main(String[] args) {
Session session=sessionFactory.openSession(); //生成一個session
session.beginTransaction(); //開啟事務
Product product=(Product)session.get(Product.class, Integer.valueOf(1));
session.delete(product); //刪除
session.getTransaction().commit(); //提交事務
session.close(); //關閉session
sessionFactory.close();
}
}
ModifyDemo.java
package com.oracle.service;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import com.oracle.model.Product;
import com.oracle.util.HibernateUtil;
public class ModifyDemo {
private static SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
public static void main(String[] args) {
Session session=sessionFactory.openSession(); //生成一個session
session.beginTransaction(); //開啟事務
Product product=(Product)session.get(Product.class, Integer.valueOf(1));
product.setName("機械鍵盤");
product.setPrice(34.5);
product.setNum(109);
session.save(product);
session.getTransaction().commit(); //提交事務
session.close(); //關閉session
sessionFactory.close();
}
}