java的hibernate創建步驟


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

 

 
Bulid Path
     第一步:

 

第二步:

 

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();
	}
}

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM