Java EE輕量級框架應(yīng)用開發(fā)第5章 Hibernate的基礎(chǔ)相關(guān)知識(shí)_第1頁
Java EE輕量級框架應(yīng)用開發(fā)第5章 Hibernate的基礎(chǔ)相關(guān)知識(shí)_第2頁
Java EE輕量級框架應(yīng)用開發(fā)第5章 Hibernate的基礎(chǔ)相關(guān)知識(shí)_第3頁
Java EE輕量級框架應(yīng)用開發(fā)第5章 Hibernate的基礎(chǔ)相關(guān)知識(shí)_第4頁
Java EE輕量級框架應(yīng)用開發(fā)第5章 Hibernate的基礎(chǔ)相關(guān)知識(shí)_第5頁
已閱讀5頁,還剩50頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第五章Hibernate的基礎(chǔ)知識(shí)本章要點(diǎn)·持久化概述·

ORM基本概念·Hibernate的體系結(jié)構(gòu)·Hibernate執(zhí)行流程·使用MyEclipse工具進(jìn)行Hibernate開發(fā)·Hibernate的數(shù)據(jù)庫操作持久化概述有時(shí)可以看到在JSP的頁面代碼中混雜了很多連接數(shù)據(jù)庫、操作數(shù)據(jù)庫的語句,使得代碼的編寫和維護(hù)都很困難,程序結(jié)構(gòu)不清晰,對于大型應(yīng)用,這個(gè)問題尤為突出,對系統(tǒng)結(jié)構(gòu)進(jìn)行分層,是解決這種問題的保障在軟件的分層體系結(jié)構(gòu)中,持久化層就是與數(shù)據(jù)庫打交道的邏輯層實(shí)體對象在內(nèi)存中創(chuàng)建后,不能永久存在,將實(shí)體域?qū)ο笥谰帽4嫫饋恚褪浅志没倪^程持久(Persistence),即把數(shù)據(jù)(如內(nèi)存中的對象)保存到可永久保存的存儲(chǔ)設(shè)備中(如磁盤)持久化主要是將內(nèi)存中的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫中,當(dāng)然也可以存儲(chǔ)在磁盤文件、XML數(shù)據(jù)文件中實(shí)際上,使用JDBC對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行增加、刪除、修改的操作就是持久化的過程,然而直接使用

JDBC作為持久層有非常不方便·持久化概述·

ORM基本概念·Hibernate的體系結(jié)構(gòu)·Hibernate執(zhí)行流程·使用MyEclipse工具進(jìn)行Hibernate開發(fā)·Hibernate的數(shù)據(jù)庫操作ORM最大的優(yōu)勢是隱藏了數(shù)據(jù)訪問細(xì)節(jié),使得對數(shù)據(jù)庫的操作變得簡單易行,并且完全不用考慮

SQL語句現(xiàn)在,基本上所有的ORM框架都提供了通過對象模型構(gòu)造關(guān)系數(shù)據(jù)庫結(jié)構(gòu)的功能ORM的不足之處是,因?yàn)槭亲詣?dòng)化映射和關(guān)聯(lián),犧牲了性能。同時(shí)對于復(fù)雜查詢,ORM仍然力不從心,雖然可以實(shí)現(xiàn),但是不值的·目前眾多廠商和開源社區(qū)都提供了持久層框架的實(shí)現(xiàn),比較流行的ORM產(chǎn)品如下表產(chǎn)品名網(wǎng)站支持Apache

OJB/ojb/Cayenne/cayenne/Jaxor/Hibernate/iBatis/jRelationalFramework/Mirage/en/oss/mirage/toon/SMYLEhttp://www.drjava.de/smyle/TopLink/products/ias/toplink·持久化概述·

ORM基本概念·Hibernate的體系結(jié)構(gòu)·Hibernate執(zhí)行流程·使用MyEclipse工具進(jìn)行Hibernate開發(fā)·Hibernate的數(shù)據(jù)庫操作Hibernate的體系結(jié)構(gòu)Hibernate是個(gè)開放源代碼的ORM框架,它對

JDBC進(jìn)行了非常輕量級的對象封裝,使Java程序員可以方便地使用對象編程思想來操縱數(shù)據(jù)庫Hibernate可以應(yīng)用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在

Serverlet/JSP的Web應(yīng)用程序中使用Hibernate可以和多種Web服務(wù)器或者應(yīng)用服務(wù)器良好集成,支持幾乎所有流行的數(shù)據(jù)庫服務(wù)器·Hibernate處于數(shù)據(jù)庫和應(yīng)用程序之間,為應(yīng)用程序提供了可操作的持久化對象。從上層的角度看,數(shù)據(jù)庫是透明地利用映射操作數(shù)據(jù),使用

Hibernate配置文件配置相關(guān)信息·會(huì)話工廠SessionFactory·會(huì)它話是SSeessssioino的n工廠,是ConnectionProvider的客戶。可能持有一個(gè)可選的(第二級)數(shù)據(jù)緩存,可以在進(jìn)程級別或集群級別保存可·持單以久線在化程事,物對生中象命重期用(短的P數(shù)暫er據(jù)的s對i象st,e代nt表O應(yīng)b用j程ec序t和)持及久化其層集之間合的(一次對話。封裝了一個(gè)JDBC連接。保存有必需的(第一級)持久Co化ll對e象ct的i緩o存n),用于遍歷對象圖,或者通過標(biāo)識(shí)符查找對象臨生時(shí)命對周期象短(暫的Tr單a線ns程i的en對t象O,b包je含c了t持)久及化其狀態(tài)集。合它們(可C能o是llection普通的JavaBeans/POJOs,唯一特別的是他們從屬于且僅從屬于事一它務(wù)個(gè)們TS可res能asni是osn剛a。c剛一t被i旦o程Sne序ss實(shí)io例n被化關(guān),閉還,沒他有們來都得將及從被S持es久si化on,中或取者消是聯(lián)系,可被以一在個(gè)任已何經(jīng)程關(guān)序閉層的自Se由ss使io用n所(實(shí)比例如化,的直接作為傳送到表現(xiàn)層的CoD單nTnO線(e程c數(shù)t,據(jù)i生o傳命n輸P期對r短o象v暫)i的d)e對r象,應(yīng)用程序用它來表示一批不可分割的操作,是底層的JDBC,JTA或者CORBA事務(wù)的抽象。一個(gè)TrJSaDenBsCssi連aocn接某t的i些工o情n廠F況和a下c池可t。o能r從跨y底越層多的個(gè)DaTtrasnosuarccteio或n者事D務(wù)riverManager抽象而來。對應(yīng)用程序不可見,但可以被開發(fā)者擴(kuò)展/實(shí)現(xiàn)事務(wù)實(shí)例的工廠。對應(yīng)用程序不可見,但可以被開發(fā)者擴(kuò)展/實(shí)現(xiàn)·持久化概述·

ORM基本概念·Hibernate的體系結(jié)構(gòu)·Hibernate執(zhí)行流程·使用MyEclipse工具進(jìn)行Hibernate開發(fā)·Hibernate的數(shù)據(jù)庫操作Hibernate執(zhí)行流程Hibernate的運(yùn)行過程·應(yīng)用程序先調(diào)用Configuration類,該類讀取

Hibernate配置文件及映射文件中的信息用這些信息生成一個(gè)SessionFactory對象然后從SessionFactory對象生成一個(gè)Session對象用Session對象生成Transaction對象可通過Session對象的get(),load(),save(),update(),delsaveOrUpdate()等方法對PO進(jìn)行加載、保存、更新、刪除、等操作在查詢的情況下,可通過Session對象生成一個(gè)Query對象,然后利用Query對象執(zhí)行查詢操作;如果沒有異常,Transaction對象將提交這些操作到數(shù)據(jù)庫中Hibernate的核心接口Configuration接口負(fù)責(zé)管理Hibernate的配置信息,Hibernate運(yùn)行時(shí)需要一些底層實(shí)現(xiàn)的基本信息,這些信息包括:數(shù)據(jù)庫URL、數(shù)據(jù)庫用戶名、數(shù)據(jù)庫用戶密碼、數(shù)據(jù)庫JDBC驅(qū)動(dòng)類、數(shù)據(jù)庫dialect等使用Hibernate必須首先提供這些基礎(chǔ)信息以完成初始化工作,為后續(xù)操作做好準(zhǔn)備,這些屬性在Hibernate配置文件hibernate.cfg.xml中加以設(shè)定當(dāng)調(diào)用:Configuration

config=newConfiguration().configure();時(shí),Hibernate會(huì)自動(dòng)在目錄搜索hibernate.cfg.xml文件,并將其讀取到內(nèi)存中作為后

續(xù)操作的基礎(chǔ)配置·SessionFactory

(org.hibernate.SessionFactory)充當(dāng)數(shù)據(jù)存儲(chǔ)源的代理,創(chuàng)建Session對象。一個(gè)

SessionFactory實(shí)例對應(yīng)著一個(gè)數(shù)據(jù)存儲(chǔ)源一個(gè)數(shù)據(jù)庫只創(chuàng)建一個(gè)SessionFactory實(shí)例,它需要一個(gè)很大的緩存,用來存放預(yù)定義的SQL語句及映射的元數(shù)據(jù)等可以通過Configuration實(shí)例構(gòu)建SessionFactoryConfiguration

config=new

Configuration().configure();SessionFactorysessionFactory=config.buildSessionFactoSessionFactory一旦構(gòu)造完畢,即被賦予特定的配置信息SessionFactory保存了對應(yīng)當(dāng)前數(shù)據(jù)庫配置的所有映射關(guān)系,同時(shí)也負(fù)責(zé)維護(hù)當(dāng)前的二級數(shù)據(jù)緩存和Statement

Pool·

Session(org.hibernate.Session)Hibernate持久化操作的基礎(chǔ),提供了眾多持久化方法,如save、update、delete等。通過這些方法,透明地完成對象的增加、刪除、修改、查找等操作當(dāng)Session執(zhí)行sql時(shí)候,Session會(huì)針對上面生成的對象和關(guān)系映射,動(dòng)態(tài)組成sql語句Session實(shí)例由SessionFactory構(gòu)建Configuration

config=new

Configuration().configure();SessionFactorysessionFactory=config.buldSessionFactory();Session

session=sessionFactory.openSession();HibernateSession的設(shè)計(jì)是非線程安全的,即一個(gè)Session實(shí)例同時(shí)只可由一個(gè)線程使用。同一個(gè)Session實(shí)例的多線程并發(fā)

調(diào)用將導(dǎo)致難以預(yù)知的錯(cuò)誤·Transaction(org.hibernate.Transaction)Hibernate中進(jìn)行事務(wù)操作的接口,Transaction接口是對實(shí)際事務(wù)實(shí)現(xiàn)的一個(gè)抽象,這些實(shí)現(xiàn)包括JDBC的事務(wù)、JTA中的UserTransaction,甚至可以是CORBA事務(wù)事務(wù)對象通過Session創(chuàng)建Transaction

ts=session.beginTransaction();·Query執(zhí)行數(shù)據(jù)庫查詢。Query實(shí)例封裝了一個(gè)HQL語句,

HQL語句是面向?qū)ο蟮?,它引用類名和類的屬性Query

query=session.createQuery(“fromtable

whereid=1”);·持久化概述·

ORM基本概念·Hibernate的體系結(jié)構(gòu)·Hibernate執(zhí)行流程·使用MyEclipse工具進(jìn)行Hibernate開發(fā)·Hibernate的數(shù)據(jù)庫操作使用MyEclipse工具進(jìn)行Hibernate開發(fā)使用Hibernate開發(fā)項(xiàng)目,需要完成下面幾步準(zhǔn)備開發(fā)環(huán)境,創(chuàng)建Hibernate項(xiàng)目在數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)表創(chuàng)建持久化類設(shè)計(jì)映射文件,使用Hibernate映射文件將POJO對象映射到數(shù)據(jù)庫創(chuàng)建Hibernate的配置文件Hibernate.cfg.xmlHibernate所用到的jar包可以到Hibernate的官方網(wǎng)站(/)上下載,如果是使用MyEclipse進(jìn)行配置環(huán)境,MyEclipse會(huì)自動(dòng)導(dǎo)入相應(yīng)的jar包通過MyEclipse可以大大簡化Hibernate項(xiàng)目的開發(fā)MyEclipse中配置Hibernate·

配置數(shù)據(jù)庫·

打開MyEclipse,選擇視圖·選中第二行的“MyEclipse

Database

Explorer”,進(jìn)入數(shù)據(jù)庫視圖·在左邊“DB

Browser”里點(diǎn)擊右鍵,在快捷菜單中選擇“New”·進(jìn)入新建數(shù)據(jù)庫連接瀏覽器頁面·

在“Driver

template”中選擇使用的數(shù)據(jù)庫類型,在

“Driver

name”中設(shè)定這個(gè)數(shù)據(jù)庫的名稱,在

“Connection

URL”中設(shè)定連接URL:如MySQL中連接shop這個(gè)數(shù)據(jù)庫URL為jdbc:mysql://localhost:3306/test,其中l(wèi)ocalhost是主機(jī)址,3306為MySQL端口號(hào),主機(jī)地址和端口號(hào)視實(shí)際情況而定;在“UserName和“Password”中輸入數(shù)據(jù)庫的登陸名與密碼;而在“DriverJARS”中加入數(shù)據(jù)庫驅(qū)動(dòng)包·點(diǎn)擊“Next”,出現(xiàn)“chema

Details”頁面為項(xiàng)目添加Hibernate支持·新建一個(gè)“Web

Project”,然后在項(xiàng)目上點(diǎn)擊右鍵·在菜單上選擇“MyEclipse”-“Add

HibernateCapabilities”,在這個(gè)窗口中可以選擇Hibernate的版本等信息·點(diǎn)擊“Next”,選擇配置文件所在的文件夾·點(diǎn)擊“Next”,數(shù)據(jù)庫連接信息配置頁面,在

“DB

Driver”中選擇前面已經(jīng)配置好的數(shù)據(jù)庫連接信息的連接名·

點(diǎn)擊“Next”,出現(xiàn)“SessionFactory”配置頁面·

在“Java

Package”中,選擇一個(gè)包(無法存放在默認(rèn)包中)。點(diǎn)擊“Finish”將會(huì)生成一個(gè)配置文件,順便也生成一個(gè)工廠方法生成Hibernate映射文件·切換到“MyEclipse

Database

Explorer”視圖,在剛配置的數(shù)據(jù)庫連接上點(diǎn)擊右鍵,選擇“Openconnection”,然后選擇需要訪問的數(shù)據(jù)庫,在選擇需要訪問的數(shù)據(jù)表,在上面點(diǎn)擊右鍵·點(diǎn)擊“Hibernate

Reverse

Engineering”·

在“Java

src

folder”中選擇你要映射到的文件夾,并且選中“Hibernate

mapping

file(*,hbm.xml)for

eachdatabase

table”與“Java

Data

Object”這2個(gè)選擇框,前一個(gè)是生成映射文件,后一個(gè)生成類實(shí)體。然后一直“Next”,最后生成映射文件·持久化概述·

ORM基本概念·Hibernate的體系結(jié)構(gòu)·Hibernate執(zhí)行流程·使用MyEclipse工具進(jìn)行Hibernate開發(fā)·Hibernate的數(shù)據(jù)庫操作Hibernate相關(guān)文件·Hibernate在實(shí)現(xiàn)ORM功能的時(shí)候主要用到的文件有:映射類(*.java)、映射文件(*.hbm.xml)和數(shù)據(jù)庫配置文件(*.properties/*.cfg.xml)數(shù)據(jù)庫配置文件(*.properties/*.cfg.xml)·在項(xiàng)目的src包的根目錄下,它是指定與數(shù)據(jù)庫連接時(shí)需要的連接信息,比如連接哪種數(shù)據(jù)庫、登錄數(shù)據(jù)庫的用戶名、登錄密碼以及連接字符串等。當(dāng)然還可以存放映射類的地址映射信息<Hibernate-configuration><session-factory><!—-表示要鏈接的數(shù)據(jù)庫的驅(qū)動(dòng)類-->com.mysql.jdbc.Driver<!--表示要鏈接的數(shù)據(jù)庫地址--><property

name="connection.url">jdbc:mysql://localhost:3306/test</property><!—-要連接的數(shù)據(jù)庫的用戶名--><property

name="connection.username">root</property><!—-要連接的數(shù)據(jù)庫的密碼--><property

name="connection.password">root</property><!—-是否顯示Hibernate執(zhí)行的SQL語句--><property

name="show_sql">true</property>針對建表的操作update如果有表,檢查表的結(jié)構(gòu),如果沒有則創(chuàng)建create-drop啟動(dòng)Hibernate創(chuàng)建表,結(jié)束Hibernate刪除表create每次啟動(dòng)都重新創(chuàng)建表validate每次啟動(dòng)都檢查表的結(jié)構(gòu)<property

name="connection.driver_class">--></property><property

name="hbm2ddl.auto">update</property><!--表示要使用的數(shù)據(jù)庫的類型org.Hibernate.dialect.MySQL5Dialect

mysql數(shù)據(jù)庫org.Hibernate.dialect.Oracle9Dialect

oracle數(shù)據(jù)庫org.Hibernate.dialect.SQLServerDialect

SQLServer數(shù)據(jù)庫--><property

name="dialect">org.Hibernate.dialect.MySQLDialect</property><!--事務(wù)管理類--><property

name="Hibernate.transaction.factory_class">net.sf.Hibernate.transaction.JDBCTransactionFactory<!--</property><!--用到的映射文件的位置和名稱--><mapping

resource="entity/Customer.hbm.xml"

/></session-factory></Hibernate-configuration>持久化類(*.java)·描述數(shù)據(jù)庫表的結(jié)構(gòu),表中的字段在類中被描述成屬性,就可以實(shí)現(xiàn)把表中的記錄映射成為該類的對象public

class

Customer

implements

java.io.Serializable

{private

Integer

id;private

String

name;private

Integer

age;public

Customer()

{}public

Customer(String

name,

Integer

age)

{

=

name;this.age

=

age;}public

Integer

getId()

{return

this.id;}public

void

setId(Integer

id)

{this.id

=

id;}public

String

getName()

{return

;}public

void

setName(String

name)

{

=

name;}public

Integer

getAge()

{return

this.age;}public

void

setAge(Integer

age)

{this.age

=

age;}}映射文件(*.hbm.xml)在Hibernate中,數(shù)據(jù)庫中的每張表和持久化類之間都有映射文件,映射文件和持久化類在同一目錄下,名字為:持久化類.hbm.xml指定數(shù)據(jù)庫表和映射類之間的關(guān)系,包括映射類和數(shù)據(jù)庫表的對應(yīng)關(guān)系、表字段和類屬性類型的對應(yīng)關(guān)系以及表字段和類屬性名稱的對應(yīng)關(guān)系等<?xml

version="1.0"

encoding="UTF-8"?><!DOCTYPE

Hibernate-mapping

PUBLIC"-//Hibernate/Hibernate

Mapping

DTD

3.0//EN""http://H/Hibernate-mapping-3.0.dtd"

><Hibernate-mapping

package="包名"><class

name="類名"table="表名"><!--配置數(shù)據(jù)庫主鍵--><id

name="主鍵在java類中的字段名"column="對應(yīng)表中字段"type="類型"><!--設(shè)置主鍵的自動(dòng)增長class="native/uuid/identity/sequence"native----Hibernate完成的數(shù)字自增1,2,3...uuid----生成一個(gè)32位的字符串identity----sqlserver的自增sequence----oracle的自增(1,2,...)assigned----手動(dòng)分配主鍵--><generator

class="主鍵生成策略"/></id><property

name="java類中的字段名"column="對應(yīng)表中字段"type="類型"/>…</class></Hibernate-mapping>·Hibernate的映射類型是Java類型于SQL類型之間的橋梁,通過id和property中的type屬性來設(shè)置Hibernate映射類型Java類型標(biāo)準(zhǔn)SQL類型大小和取值范圍integer或intint或IntegerINTEGER4字節(jié)longlong或LongBIGINT8字節(jié)shortshort或ShortSMALLINT2字節(jié)bytebyte或ByteTINYINT1字節(jié)floatfloat或FloatFLOAT4字節(jié)doubledouble或DoubleDOUBLE8字節(jié)big_decimalBigDecimalNUMBERICNUMBERIC(8,2)characterchar或StringCHAR(1)定長字符stringStringVARCHAR變長字符串booleanboolean或BooleanBIT布爾類型yes_noboolean或BooleanCHAR(1)(yes或no)布爾類型true_falseboolean或BooleanCHAR(1)(T或F)布爾類型dateDate)DATEYYYY-MM-DDtimeDate(util)或Time(sql)TIMEHH:MM:SStimestampDate(util)或Timestamp(sql)TIMESTAMPYYYYMMDDHHMMSScalendarjava.util.CalendarTIMESTAMP同上calendar_datejava.util.CalendarDATEYYYY-MM-DD一個(gè)映射文件的示例<Hibernate-mapping><class

name="entity.Customer"

table="customer"><id

name="id"

type="java.lang.Integer"

column="ID"><generator

class="increment"

/></id><property

name="name"

column="name"

type="string"

/><property

name="age"

column="age"

type="integer"

/></class></Hibernate-mapping>Hibernate的數(shù)據(jù)庫操作HibernateSessionFactory類使用MyEclipse配置環(huán)境時(shí)會(huì)生成HibernateSessionFactor類,用來初始化Hibernate的,一個(gè)程序如果只連接一個(gè)

數(shù)據(jù)庫,那么有一個(gè)HibernateSessionFactory類就足夠了創(chuàng)建Configuration的對象有兩種方式屬性文件(Hperties)Configuration

cfg=new

Configuration();Xml文件(Hibernate.cfg.xml)Configuration

cfg

=

new

Configuration().configure();Session介紹Session是Java應(yīng)用程序與Hibernate之間的主要運(yùn)行時(shí)接口。它是抽象了持久化服務(wù)概念的核心抽象API類。Session的主要功能是提供對映射的實(shí)體類實(shí)例的創(chuàng)建,讀取和刪除操作

Session的save()和persist()將會(huì)引發(fā)SQL的INSERT操作,

delete()會(huì)引發(fā)SQL的DELETE操作,而update()或merge()會(huì)引發(fā)SQL的UPDATE操作

對持久化實(shí)例的修改在刷新提交的時(shí)候會(huì)被檢測到,它也會(huì)引起SQL的UPDATE。saveOrUpdate()或者replicate()會(huì)引發(fā)SQL的INSERT或者UPDATE。每個(gè)線程/事務(wù)應(yīng)該從一個(gè)SessionFactory獲取自己的Session實(shí)例·Session的操作一般以事務(wù)的形式進(jìn)行Session

session

=

factory.openSession();Transaction

tx;try

{tx=session.beginTransaction();//開始事務(wù)//do

some

work...mit();

//提交事務(wù)//回滾事務(wù)}catch

(Exception

e)

{if

(tx!=null)

tx.rollback();throw

e;}finally

{sess.close();}·如果Session拋出了異常,事務(wù)必須回滾而Session會(huì)被廢棄返回值

方法名TransactionbeginTransaction()開始一個(gè)工作單元并且返回相關(guān)聯(lián)的事務(wù)(Transaction)對象。voiddelete(Objectobject)從數(shù)據(jù)庫中移除持久化(persistent)對象的實(shí)例。voiddelete(StringentityName,Objectobject)從數(shù)據(jù)庫中移除持久化(persistent)對象的實(shí)例。Objectget(Classclazz,Serializableid)根據(jù)給定標(biāo)識(shí)和實(shí)體類返回持久化對象的實(shí)例,如果沒有符合條件的持久化對象實(shí)例則返回null。Objectget(Classclazz,Serializableid,LockModelockMode)根據(jù)給定標(biāo)識(shí)和實(shí)體類返回持久化對象的實(shí)例,如果沒有符合條件的持久化對象實(shí)例則返回null。Objectget(StringentityName,Serializableid)返回與給定的實(shí)體命名和標(biāo)識(shí)匹配的持久化實(shí)例,如果沒有對應(yīng)的持久化實(shí)例則返回null。Objectget(StringentityName,Serializableid,LockModelockMode)返回與給定的實(shí)體類和標(biāo)識(shí)所匹配的持久化實(shí)例,如果沒有對應(yīng)的持久化實(shí)例則返回null。Objectload(ClasstheClass,Serializableid)在符合條件的實(shí)例存在的情況下,根據(jù)給定的實(shí)體類和標(biāo)識(shí)返回持久化狀態(tài)的實(shí)例。Objectload(ClasstheClass,Serializableid,LockModelockMode)在符合條件的實(shí)例存在的情況下,根據(jù)給定的實(shí)體類、標(biāo)識(shí)及指定的鎖定等級返回持久化狀態(tài)的實(shí)例。voidload(Objectobject,Serializableid)將與給定的標(biāo)示對應(yīng)的持久化狀態(tài)(值)復(fù)制到給定的自由狀態(tài)(trasient)實(shí)例上。Objectload(StringentityName,Serializableid)在符合條件的實(shí)例存在的情況下,根據(jù)給定的實(shí)體類和標(biāo)識(shí)返回持久化狀態(tài)的實(shí)例。Objectload(StringentityName,Serializableid,LockModelockMode)在符合條件的實(shí)例存在的情況下,根據(jù)給定的實(shí)體類、標(biāo)識(shí)及指定的鎖定等級返回持久化狀態(tài)的實(shí)例。Serializablesave(Objectobject)首先為給定的自由狀態(tài)(Transient)的對象(根據(jù)配置)生成一個(gè)標(biāo)識(shí)并賦值,然后將其持久化。Serializablesave(StringentityName,Objectobject)首先為給定的自由狀態(tài)(Transient)的對象(根據(jù)配置)生成一個(gè)標(biāo)識(shí)并賦值,然后將其持久化。voidsaveOrUpdate(Objectobject)根據(jù)給定的實(shí)例的標(biāo)識(shí)屬性的值(注:可以指定unsaved-value。一般默認(rèn)null。)來決定執(zhí)行save()或update()操作。voidsaveOrUpdate(StringentityName,Objectobject)根據(jù)給定的實(shí)例的標(biāo)識(shí)屬性的值來決定執(zhí)行save()或update()操作。voidupdate(Objectobject)根據(jù)給定的detached(游離狀態(tài))對象實(shí)例的標(biāo)識(shí)更新對應(yīng)的持久化實(shí)例。使用Session操作數(shù)據(jù)·通過Session提供的方法可以對數(shù)據(jù)庫進(jìn)行操作,以對前面建立的customer數(shù)據(jù)表的增刪改查操作為例進(jìn)行說明·

增加數(shù)據(jù)public

void

insertCustomer(){Session

session=sessionFactor

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論