欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

(01)Hibernate入門

1、Hibernate在SSH中的地位

(01)Hibernate入門

創(chuàng)新互聯(lián)公司是一家以成都網(wǎng)站建設(shè)公司、網(wǎng)頁設(shè)計、品牌設(shè)計、軟件運維、seo優(yōu)化排名、小程序App開發(fā)等移動開發(fā)為一體互聯(lián)網(wǎng)公司。已累計為隧道混凝土攪拌車等眾行業(yè)中小客戶提供優(yōu)質(zhì)的互聯(lián)網(wǎng)建站和軟件開發(fā)服務(wù)。

SSH
序號技術(shù)作用
1Struts基于mvc模式的應(yīng)用層框架技術(shù)!
2Spring創(chuàng)建對象、處理對象的依賴關(guān)系以及框架整合!
3Hibernate基于持久層的框架(數(shù)據(jù)訪問層使用)!

2、DAO層的代碼是如何編寫的?

(1)操作XML數(shù)據(jù)

(2)使用Jdbc技術(shù)

a)原始的jdbc操作, Connection/Statement/ResultSet

b)自定義一個持久層框架, 封裝了dao的通用方法

c)DbUtils組件, 輕量級的dao的組件;

d)Hibernate技術(shù)【hibernate最終執(zhí)行的也是jdbc代碼!】

3、ORM和Hibernate

3.1、ORM的概念

O,  Object  對象

R, Realtion 關(guān)系  (關(guān)系型數(shù)據(jù)庫: MySQL, Oracle…)

M,Mapping  映射

ORM, 對象關(guān)系映射!

 

ORM, 解決什么問題?

存儲:  把對象的數(shù)據(jù)直接保存到數(shù)據(jù)庫

獲取:  直接從數(shù)據(jù)庫拿到一個對象

想做到上面2點,必須要有映射

3.2、Hibernate和ORM的關(guān)系

Hibernate是ORM的實現(xiàn)!

4、組件學(xué)習(xí)的三方面

1、源碼,引入jar文件

2、配置(.xml or .properties)

3、API

5、Hibernate入門

Hibernate開發(fā)步驟

(1)下載源碼

版本:hibernate-distribution-3.6.0.Final,下載地址如下:

https://sourceforge.net/projects/hibernate/files/hibernate3/3.6.0.Final/

(01)Hibernate入門

選擇141.0MB的文件,它的文件格式是.zip格式的,而下面的文件是.gz格式的。

解壓之后,它的源碼位于hibernate-distribution-3.6.0.Final\project\core\src目錄下

(2)引入jar文件

a)hibernate3.jar (核心文件)

    位于hibernate-distribution-3.6.0.Final目錄下

(01)Hibernate入門

b)required (必須引入的jar,共6個)

    位于hibernate-distribution-3.6.0.Final\lib\required目錄下

(01)Hibernate入門

c)jpa 目錄

    位于hibernate-distribution-3.6.0.Final\lib\jpa目錄

(01)Hibernate入門

d)數(shù)據(jù)庫驅(qū)動包(我用的是mysql的驅(qū)動包)

(01)Hibernate入門

(3)寫對象以及對象的映射

a)Employee.java            對象

import java.util.Date;

public class Employee
{
	private int empId;
	private String empName;
	private Date workDate;
	public int getEmpId()
	{
		return empId;
	}
	public void setEmpId(int empId)
	{
		this.empId = empId;
	}
	public String getEmpName()
	{
		return empName;
	}
	public void setEmpName(String empName)
	{
		this.empName = empName;
	}
	public Date getWorkDate()
	{
		return workDate;
	}
	public void setWorkDate(Date workDate)
	{
		this.workDate = workDate;
	}
}

b)Employee.hbm.xml        對象的映射 (映射文件)

(.hbm可能是hibernate mapping的縮寫)

<?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">

<!-- 

  This mapping demonstrates content-based discrimination for the
  table-per-hierarchy mapping strategy, using a formula
  discriminator.

-->

<hibernate-mapping package="com.rk.hibernate.a_hello">
	
	<class name="Employee" table="employee">
		
		<!-- 主鍵,映射 -->
		<id name="empId" column="id">
			<generator class="native"/>
		</id>

		<!-- 非主鍵,映射 -->
		<property name="empName" column="empName"></property>
		<property name="workDate" column="workDate"></property>

	</class>
	
</hibernate-mapping>

(4)主配置文件 src/hibernate.cfg.xml

a)數(shù)據(jù)庫連接配置

b)加載所用的映射(*.hbm.xml)

<!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節(jié)點代表一個數(shù)據(jù)庫 -->
    <session-factory>
        <!-- 1. 數(shù)據(jù)庫連接配置 -->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql:///test</property>	<!-- 等同于jdbc:mysql://localhost:3306/test -->
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root</property>
		<!-- 
			數(shù)據(jù)庫方言配置, hibernate在運行的時候,會根據(jù)不同的方言生成符合當(dāng)前數(shù)據(jù)庫語法的sql
		 -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
        
        <!-- 2. 其他相關(guān)配置 -->
		<!-- 2.1 顯示hibernate在運行時候執(zhí)行的sql語句 -->
		<property name="hibernate.show_sql">true</property>
		<!-- 2.2 格式化sql -->
		<property name="hibernate.format_sql">true</property>
		<!-- 2.3 自動建表  -->
		<property name="hibernate.hbm2ddl.auto">update</property>
		
		
		<!-- 3. 加載所有映射 -->
		<mapping resource="com/rk/hibernate/a_hello/Employee.hbm.xml"/>
		
    </session-factory>
</hibernate-configuration>

(5)測試

package com.rk.hibernate.a_hello;

import java.util.Date;

import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

public class App
{
	public static void main(String[] args)
	{
		// 對象
		Employee emp = new Employee();
		emp.setEmpName("張三");
		emp.setWorkDate(new Date());
		
		/*
		 * 主體思路:Configuration-->SessionFactory-->Session
		 * 細節(jié):Session-->Transaction,必須由session創(chuàng)建transaction,否則無法保存。
		 */
		// 獲取加載配置文件的管理類對象
		Configuration config = new Configuration();
		config.configure();
		// 創(chuàng)建session的工廠對象
		SessionFactory sessionFactory = config.buildSessionFactory();
		// 創(chuàng)建session (代表一個會話,與數(shù)據(jù)庫連接的會話)
		Session session = sessionFactory.openSession();
		// 開啟事務(wù)
		Transaction transaction = session.beginTransaction();
		//保存數(shù)據(jù)
		session.save(emp);
		// 提交事務(wù)
		transaction.commit();
		// 關(guān)閉
		session.close();
		sessionFactory.close();
		System.out.println("Over");
	}
}

名稱欄目:(01)Hibernate入門
本文路徑:http://www.chinadenli.net/article12/peisdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航小程序開發(fā)網(wǎng)站收錄網(wǎng)站排名網(wǎng)站策劃微信公眾號

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站