版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報(bào)參考:健康老齡化背景下社區(qū)老年運(yùn)動(dòng)健康促進(jìn)典型案例與創(chuàng)新模式研究
- 2025版大型商業(yè)綜合體水電安裝工程分包合同范本2篇
- 二零二五年度生物醫(yī)藥創(chuàng)新平臺(tái)建設(shè)合同:地方政府與生物醫(yī)藥企業(yè)的合作3篇
- 2025版學(xué)校食堂承包合同包含食品安全培訓(xùn)與監(jiān)督3篇
- 2025版微信公眾號(hào)與電商平臺(tái)跨界合作服務(wù)合同3篇
- 二零二五版綠化苗木培育與種植服務(wù)合同3篇
- 二零二五年度城市基礎(chǔ)設(shè)施大數(shù)據(jù)信息服務(wù)與維護(hù)合同4篇
- 二零二五年度便利店便利店加盟店員勞動(dòng)合同3篇
- 2025年二手車買賣廣告宣傳合作協(xié)議4篇
- 二零二五年度便利店品牌授權(quán)及區(qū)域保護(hù)合同3篇
- 銷售與銷售目標(biāo)管理制度
- 人教版(2025新版)七年級下冊英語:寒假課內(nèi)預(yù)習(xí)重點(diǎn)知識(shí)默寫練習(xí)
- 2024年食品行業(yè)員工勞動(dòng)合同標(biāo)準(zhǔn)文本
- 全屋整裝售后保修合同模板
- 高中生物學(xué)科學(xué)推理能力測試
- GB/T 44423-2024近紅外腦功能康復(fù)評估設(shè)備通用要求
- 2024-2030年中國減肥行業(yè)市場發(fā)展分析及發(fā)展趨勢與投資研究報(bào)告
- 運(yùn)動(dòng)技能學(xué)習(xí)
- 2024年中考英語專項(xiàng)復(fù)習(xí):傳統(tǒng)文化的魅力(閱讀理解+完型填空+書面表達(dá))(含答案)
- 公轉(zhuǎn)私人轉(zhuǎn)賬協(xié)議
- 液壓阻尼器工作原理
評論
0/150
提交評論