Hibernate基礎入門實例

我們總共需要做五件事

   1:製造數據

       1.1 在數據庫中創建一個名爲test的數據庫

create database test

      1.2創建數據表

create TABLE product(
   int id(10) NOT NULL  AUTO_INCREMENT,
   name char(10),
   price float(10),
   primary key (id)
)DEFAULT CHARSET utf8;
  

  2:創建一個project工程(你們應該也會用eclipse吧,應該會)

     2.1創建一個java工程


      2.2:幹活,把jar包乾進去,我們先把jar包放到lib文件夾中,然後把加到路徑中去(別忘了)

     

      2.3:創建實體類Product,和數據庫中的一一對應

package com.ccut.pojo;

public class Product {
	private int id;
	private String name;
	private float price;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public float getPrice() {
		return price;
	}

	public void setPrice(float price) {
		this.price = price;
	}

}

    2.4:配置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.ccut.pojo">
    <class name="Product" table="product_">
      <!--儘量避免使用複雜的物理主鍵,應該爲數據庫增加一列,作爲邏輯主鍵,hibernate爲這種邏輯主鍵提供了主鍵生成器,用<generator>元素來指定主鍵的生成器
                 該元素的作用是指定主鍵的生成器  -->
        <id name="id" column="id">
        <!--native是Hibernate主鍵生成器的實現算法之一,由Hibernate根據底層數據庫自行判斷採用identity、hilo、sequence其中一種作爲主鍵生成方式。 -->
           <generator class="native">
            </generator>
        </id>
        <!--普通屬性用<property>元素來表示持久化類的屬性與數據庫表字段之間的映射 -->
        <property name="name" column="names" />
        <property name="price" />
    </class>
     
</hibernate-mapping>

     2.5配置hiberante.config.xml文件(我們一般把它放到src文件目錄下面,)

<?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>
        <!-- Database connection settings -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8</property>
        <property name="connection.characterEncoding">utf-8</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>
        <!--上面的不用解釋了,應該能看動-->
        <!--dialect mysql方言  這個傢伙又什麼用呢  ,在代碼層面,開發人員不用關心底層到底用Oracle還是Mysql,
                             寫的代碼都是一樣的。 可是Oracle和Mysql所用的sql語句的語法是有所區別的,那麼這件事就交給Hibernate來做了。這個時候就需要告訴Hibernate底層用的是什麼數據庫,
                                          它才知道應該用什麼樣的“方言” 去對話。  -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <!--hibrnate事物管理,一個線程事物  -->
        <property name="current_session_context_class">thread</property>
        <!--控制檯下面是否打印我們的sql語句  -->
        <property name="show_sql">true</property>
        <!-- 這表示是否會自動更新數據庫的表結構,有這句話,其實是不需要創建表的,因爲Hibernate會自動去創建表結構 (博客第一大步其實可以跳過,不好意思給你們埋個坑)-->
        <property name="hbm2ddl.auto">update</property>
        <!--我感覺是找配置文件去了  -->
        <mapping resource="com/ccut/pojo/Product.hbm.xml" />
    </session-factory>
 
</hibernate-configuration>

2.6:是時候來波測試是否好使不好使了(測試類)(代碼安1,2,3.4步看)(1.1,1.2,1.3是另外一種得到sessionFactory的方法)

package com.ccut.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

import com.ccut.pojo.Product;

public class TestHibernate {
	public static void main(String[] args) {
//      //1  是4 版本得到 獲得sessionfactor (默認加載src下的hibernate.cfg.xml文件) 
//		SessionFactory sf = new Configuration().configure().buildSessionFactory();
        
		 //1.1:讀取hibernate配置文件
		 Configuration cfg = new Configuration().configure("com/ccut/conf/hibernate.cfg.xml");
		
		 //1.2和1.1是 hibernate 5版本得到sessionfactory
		 ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();
		 //1.3 從ServiceRegistry得到sessionfactor
		 SessionFactory sf=cfg.buildSessionFactory(serviceRegistry);
		 
		 //2:得到一個session
		Session s = sf.openSession();
		//3:得到一個事物
		s.beginTransaction();

		Product p = new Product();
		p.setName("iphone飛");
		p.setPrice(7000);
		
		//4:通過調用session中的save方法把對象保存到數據中
		s.save(p);
        //5:事物提交
		s.getTransaction().commit();
		//6:關閉session
		s.close();
		//7:關閉sessionfactor
		sf.close();
	}

}

3:結果,收工

2


原代碼下載地址


   

 

發佈了39 篇原創文章 · 獲贊 14 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章