2023年JPA學(xué)習(xí)筆記大全_第1頁
2023年JPA學(xué)習(xí)筆記大全_第2頁
2023年JPA學(xué)習(xí)筆記大全_第3頁
2023年JPA學(xué)習(xí)筆記大全_第4頁
2023年JPA學(xué)習(xí)筆記大全_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

目錄

目錄10

——、JPA基礎(chǔ)02

1.1JPA基礎(chǔ)2°

1.2JPA開發(fā)過程........................................................3

1.3實(shí)體的生命周期及實(shí)體管理器常用方法。4

二、環(huán)境搭建5°

2.1添加JPA支持........................................................6

2.2添加配置文獻(xiàn)06

2.3測(cè)試配置6°

2.4環(huán)境搭建附表........................................錯(cuò)誤!未定義書簽。

三、常用注解.................................................................12

3.1批注完全參考120

3.2工D相關(guān)的..........................................錯(cuò)誤!未定義書簽。

3.3主鍵生成策略.......................................................13

3.4字段、添加字段、添加表關(guān)聯(lián)........................錯(cuò)誤!未定義書簽。

3.5映射相關(guān)14°

3.6其他14o

四、JPA映射.................................................................14

4.1一對(duì)一映射15°

4.1.1共享主鍵映射。15

4.1.2關(guān)聯(lián)外鍵映射...............................................17

4.1.3添加表關(guān)聯(lián)..................................................17

4.2—對(duì)多關(guān)聯(lián)18o

4.2.1添加字段的一對(duì)多、多對(duì)一關(guān)聯(lián)...............................18

4.2.2添加表的一對(duì)多、多對(duì)一關(guān)聯(lián)...................................19

4.3多對(duì)多關(guān)聯(lián).........................................................20

4.4繼承映射..............................................錯(cuò)誤!未定義書簽。

五、JPQL210

六、常見異常22。

一、JPA基礎(chǔ)

1.loJPA基礎(chǔ)

JPA:javapersisteneeapi0支持XML、JDK5.0注解倆種元數(shù)據(jù)的形式,是

SUN公司引入的JPAORM規(guī)范

元數(shù)據(jù):對(duì)象和表之間的映射關(guān)系

實(shí)體:entity,需要使用Javax.persistence.Entity注解或xmI映射,

需要無參構(gòu)造函數(shù),類和相關(guān)字段不能使用final關(guān)鍵字

。游離狀態(tài)實(shí)體以值方式進(jìn)行傳遞,需要serializable

JPA是一套規(guī)范、有很多框架支持(如Hibernate3.2以上、Top1ink,一般用H

ibernate就彳亍oracIe可以用toplink)

0

oJPQL

1、與數(shù)據(jù)庫無關(guān)的,基于實(shí)體的查詢語言

2、操作的是抽象持久化模型

。3、JPQL是一種強(qiáng)類型語言,一個(gè)JPQL語句中每個(gè)表達(dá)式都有類型,

。4、EJBQL的擴(kuò)展

。5、支持projection(可以查詢某個(gè)實(shí)體的字段而不需要查詢整個(gè)實(shí)體)、批量操作

(update\delete)、子查詢、join、groupbyhaving(groupby

聚合后having聚合函數(shù)比較條件)

弱類型語言:沒有明顯的類型、根據(jù)情況變化、容易犯錯(cuò)

。強(qiáng)類型語言:沒個(gè)變量都有固定的類型。不容易犯錯(cuò)

。雖然JPA規(guī)范中明確表達(dá)無法訪問一個(gè)集合關(guān)系字段

。抽象模型類型:JPQL規(guī)范將一個(gè)實(shí)體(屬性)中所飲食的各種類型稱為抽象模型類型

。。狀態(tài)字段

。。關(guān)聯(lián)字段

查詢多個(gè)字段查出來的是個(gè)對(duì)象值數(shù)組

1.2JPA開發(fā)過程

oJPA配置文獻(xiàn)聲明持久化單元>0配置文獻(xiàn)persistence.xml

編寫帶標(biāo)注的實(shí)體類

。編寫Dao類

xmI配置

0

事務(wù)類型分為:RESOURCE_LOCAL

本地事務(wù)、JTA(java事務(wù)AP工)

。注解

o@Entity將JavaBean標(biāo)注為一個(gè)實(shí)體name屬性

000Tableo數(shù)據(jù)庫中的表,name名稱、cataIog數(shù)據(jù)庫名@Sec。ndary

Table/?SecondaryTabies多個(gè)表

@Id定義了實(shí)體的主鍵信息

oo@GeneratedValue逐漸省城策略

oo@GeneratedValue(Strategy=Gene

rationType.SEQUENCE)

oo@SequenceGenerator(name="SEQ_TES

T”,sequenceName="User_SEQ”,allocationSize=25)

@coIumn°屬性、字段相應(yīng)的表字段

@Temp。ral0屬性是時(shí)間類型的話可以細(xì)分

0ooDATEoojava.sqI.Date

0TIMEojava.sql.Timeo

TIMESTAMPjava.sql.Timestamp

o@Lobo標(biāo)注CLOB、BLOB

@Base是否延遲加載@Base(fetch=FETCHTYPE.LAZY/F

ETCHTYPE.EAGER)

o@Transiento實(shí)體bean中,所有非static、非transient狀態(tài)變量、

字段都要被持久化

假如有字段、變量在數(shù)據(jù)庫中沒有相應(yīng),標(biāo)注為t

ransient就可以不被持久化

,標(biāo)注方式:標(biāo)注在字段上

°0°標(biāo)注在變量上

實(shí)體類寫法:

…1、必須有無參的構(gòu)造函數(shù)

°2、沒有final類型的變量或方法

°3、不可以是public類型的,只能通過get、set方法讀寫

0

管理實(shí)體

oPersistence

ooEntityManagerFactory

oEntityManager

ooPersistence.createEntityManagerFactory(persistenee.xml

中酉己置的persistenceunit').createEntityManager()獲取EntityMa

nager

1.3實(shí)體的生命周期及實(shí)體管理器常用方法

ooEntityManager聲明周期°Java對(duì)象。實(shí)體管理器

0oo數(shù)據(jù)庫

ooel、e新實(shí)體(new)oooe存在不存在

不存在OO0

o?2v持久化實(shí)體(managed)存在0o。存在000

存在

o3、分離的實(shí)體(detached)°不存在°o不存在e

o£>存在

oo4v刪除的實(shí)體(removed)o存在o0存在00

不存在

DOonew。0

oooo1persist()o

oofind()ooXocommit()、cIear()

oDBTTTTtomanagedoTTTTT

Tdetached

oooo1—merge()

000X000

oooooo1remove()

ooooremoved

常用方法

ool\persist(Object)oo0°持久化

0o2\remove(Object)ooooo?刪除對(duì)象

ot>3\find(ClassentityClass,Objectkey)o根據(jù)主鍵查詢

4xf1ush()oo

實(shí)體與底層同步,執(zhí)行sqI

oo?5%createQuery()°°創(chuàng)建JPQL查詢對(duì)象

oO5KCreateNativeQuery()°°°o根據(jù)普通SQL查詢

5\createNamedQuery()oooo命名查詢@NamedQ

uerie標(biāo)注°

oo5\merge(Object)oo將一個(gè)detached的實(shí)體持久化到

EntityManager中

oo5\close()oooo關(guān)閉管理器

javax.persistence.Queryooo

intexecuteUpdate()°執(zhí)行更新、冊(cè)U除、添力口

ObjectgetSingleResult()°執(zhí)行查詢(返回一條記錄)0

ListgetResultList()0°執(zhí)行查詢(返回結(jié)果鏈表)

QuerysetParameter(intposition,objectvalue)給Query

對(duì)象設(shè)立參數(shù)

QuerysetMaxResults(intmaxResuIt)oo給Query對(duì)象設(shè)立返回

數(shù)

QuerysetFirstResult(intfirstResuIt)o給Query對(duì)象設(shè)立返回偏

00

參數(shù)查詢(只能用一種)

oo命名參數(shù)查詢selectufromUserwhereid

=:uidn;oosetParameter("uid”,value);

000位置參數(shù)查詢

Personperson=em.find(Person.class,1);

//相稱于Hibernate的get

Personperson=em.getReference(Person.cIassf1);oo

//相稱于Hibernate的load返回一個(gè)代理對(duì)象

//注意延遲加載時(shí)的事務(wù)沒關(guān)閉的時(shí)候才好用

find假如找不到返回的是個(gè)nu11,這時(shí)候下面在調(diào)用null的方法報(bào)nuIIpoint

異常

reference相稱于延遲加載假如找不到,會(huì)在第一次使用就報(bào)EntityNotFound

異常

000

。?;卣{(diào)函數(shù)(相稱于攔截器,下面的方法執(zhí)行前后調(diào)用指定的方法)°°

oo@Prepersistoooo

oooo@PostPersist

oo@PreRemove

oo@PostRemove

oooo@PreUpdate

o?oo@PostUpdate

oooo@PostLoado0°載入實(shí)體時(shí)(find、查詢、refresh)

二、環(huán)境搭建

2.1添加JPA支持

1'準(zhǔn)備JPA用到的jar包(JPA支持包)

2、windowoTpreferencesTJava—BuildPath—UserL

ibraries

ooo->newUserLibrary

oTAddJars

3、項(xiàng)目o右鍵Tproperties(alt+Enter)

TJavaBuildPathTLibraries

ooTAddLibraryUserLibraryT自己定義的JPA支

持包

2.2添加配置文獻(xiàn)

01、項(xiàng)目中SRC目錄下添加META—INF目錄(與Web項(xiàng)目下META-INF同名)

o2v在新添力口的META—INF中添力口配置文獻(xiàn)persistences.xml

opersistence.xml配置信息(Hibernate)

。數(shù)據(jù)庫連接信息查詢

。重要配置信息:

0事務(wù)類型:本地事務(wù)、JTA事務(wù)

JPA供應(yīng)商

數(shù)據(jù)庫驅(qū)動(dòng)、URL、User、Password

3、在SRC目錄下添加log4j.properties文獻(xiàn)(顯示數(shù)據(jù)庫操作信息的)

2.3測(cè)試配置

I、MySQL測(cè)試數(shù)據(jù)庫

。2、實(shí)體注解

03、JUNIT測(cè)試方法

2.4環(huán)境搭建附表

persistence.xmI配置信息

<?xmlversion=nl.0"encoding=UUTF-8,r?>

<persistenceversion="1.0uxmlns=〃"xmlns:xsi=""xsi:sche

maLocation="://java.sun.com/xml/ns/persistence/persiste

nce_l_0.xsd”>

o<!--name="持久化單元命名"transaction-type="本地事務(wù)/JTA”-->

o<persistence—unitname=nJPA"transaction—type="RESOURC

E_LOCAL”〉

—供應(yīng)商-->

<provider>org.hibernate.ejb.HibernatePersisten

ce</provider>

0

0

o<properties>

°.<!—參數(shù):數(shù)據(jù)庫驅(qū)動(dòng)名、地址、用戶、密碼、方言、顯示執(zhí)行SQL語句

o<Propertyname="hibemate.connection,driver_clas

s"value=〃〃/〉

oo<propertyname=lfhibernate.connection.driver_class”val

ue=uorg.gJt.mm.mysQ1.Driver,r/>

oo<propertyname="hibemate,connection.url”va1ue="

jdbc:mysql://127.0.0,1:3306/JPAf1/>

oo<propertyname="hibernate.connection.username"

value="root"/>

oo<propertyname="hibernate.connection.password"value="

123456”/>

oo<propertyname=r,hibernate.dialect"value=,rorg.hibernat

e,dialect.MySQLDia1ectn/>

00<propertyname=nibemate.show_sql"value=,rtrue"/>

00

0a<!--其他設(shè)立一>

00Vpropertyname="minPoolSize"value="5"/>

oo<propertyname="initiaIPooISize"value="10"/>

oo<propertyname=nidleConnectionTestPeriod"value="120"/

>

oo<propertyname=ncquireIncrement"value="10"/>

ooo<propertyname=ncheckoutTimeoutvalue="3600n/>

oo<propertyname="numHelperThreads〃value="4,r/>

oo<Propertyname="maxStatements"value="400"/>

oo<Propertyname="maxStatementsPerConnection"va1ue=

"20u/>

o<propertyname="maxldleTime"value=n180"/>

oo<propertyname="3cquireRetryAttempts"va1ue=n30"/>

o<propertyname="maxPoolSize"value="200"/>

00

</properties>

</persistence-unit>

</persistence>

自動(dòng)創(chuàng)建I更新I驗(yàn)證數(shù)據(jù)庫表結(jié)構(gòu)。假如不是此方面的需求建議setvalue="none

HO

容易導(dǎo)致數(shù)據(jù)丟失,一般在測(cè)試的時(shí)候才用

<propertyname="hibernate.hbm2ddi.auto"value="create"〉</p

roperty>>validateo驗(yàn)證數(shù)據(jù)庫表結(jié)構(gòu)

create0°每次加載Hib一rnate都會(huì)刪除上一次的表結(jié)構(gòu),根據(jù)model重新生成

create—drop每次加載創(chuàng)建,sessionFactory關(guān)閉表就自動(dòng)刪除

update力口載Hibernate就更想你表結(jié)構(gòu)

環(huán)境測(cè)試代碼

實(shí)體注解

?Entity

@Table(name=nPersonn)

publieclassPerson(

o@Id

o@Co1umn(name=npid")

privateIntegerid;

o@Column(name=npname**)

oprivateStringname;

publicIntegergetld(){

oreturnid;

O}

publicvoidsetId(Integerid){

othis.id=id;

o)

publicStringgetName(){

oreturnname;

o}

opublievoidsetName(Stringname){

oothis.name=name;

0)

}

JUNIT測(cè)試方法

publicEntityManagertestGetEM(){

ooEntityManagerFactoryemf=Persistence.createEntityManag

erFactory(”JPAn);

oEntityManagerem=emf.createEntityManager();

ooreturnem;

o)

publicvoidtestAddPerson(){

oPersonp=newPerson();

op.setId(1);

op.setName("ader");

ooEntityManagerem=testGetEM();

EntityTransactionet=em.getTransaction();

ootry{

oet.begin();

oooem.persist(p);

et.commit();

oo}catch(Exceptione){

oooe.printStackTrace();

。)

o)

MySQL測(cè)試數(shù)據(jù)庫

dropdatabaseifexistsjpa;

createdatabasejPa;

usejpa;

droptableifexistsperson;

droptableifexistsident;

droptabieifexistsrel;

createtableperson(

opidintprimarykeyauto_increment,

opnamevarchar(50)

)

r

createtableident(

oiidintprimarykeyauto_increment,

oinamevarchar(50)

createtablerel(

opersonidint,

oidentidint

JPA支持包

antIr_2.7.6.jar

cglib-2.1.3.jar

classesl2.jar

commons-collections-3.1.Jar

dom4j-1.6.1.jar

ehcache_1.2.3.jar

ejb3-persistence.jar

hibernate3.jar

hibernate-annotations.jar

hibernate-cglib-repack_2.1_3.jar

hibernate-commons-annotations.jar

hibernate-entitymanager.Jar

javassist-3.4.GA.jar

jta-1.1.jar

log4j-1.2.15.jar

persistence-api-1.0.jar

slf4j-api-1.5.2.jar

sIf4j-1og4j12.jar

Hibernate核心包(8個(gè)文獻(xiàn)):hibernate-distribution-3.3.1.GA.ZIP

hibernate3.jar

1ib\bytecode\cglib\hibernate-cglib-repack-2.1_3.jar(CGLI

B庫,Hibernate用它來實(shí)現(xiàn)PO字節(jié)碼的動(dòng)態(tài)

生成,非常核心的庫,必須使用的jar包)

lib\requiredX*?jar

Hibernate注解包(3個(gè)文獻(xiàn)):hibemate-annotations-3.4.0.GA.ZIP

hibernate-annotations.jar

lib\ejb3—persistence.jar,hibernate-commons-annotatio

ns.jar

Hibernate針對(duì)JPA的實(shí)現(xiàn)包(3個(gè)文獻(xiàn)):hibernate—entitymanager-

3.4.0.GA.ZIP

hibernate-entitymanager.jar

lib\test\log4j.jarzslf4j-Iog4j12.jar

數(shù)據(jù)庫連接信息查詢

1\HibernateJDBC屬性

屬性名用途

hibernate.connection.driver_cIas

jdbc驅(qū)動(dòng)類

s

hibernate.connection.ur1jdbcURL

hibernate.connection.username數(shù)據(jù)庫用戶

hibernate,connection.password放據(jù)庫用戶密碼

hibernate.dia1ect數(shù)據(jù)庫方言

2、驅(qū)動(dòng)包

Db2:db2java.jar(JDBC直連)

:db2jcc.jar(Hibernate要用到此驅(qū)動(dòng)jar文獻(xiàn)和上面的驅(qū)動(dòng)jar

文獻(xiàn))

Sybase:jconn3d.jar

MSSQL:msbase.jar+mssqlserver.jar+msutiI.jar

MySQL:mysq1-connector-java-3.1.12—bin.Jar

Oracle1Og:ojdbc14.jar

3、連接字符串(可以先添加驅(qū)動(dòng)包然后到包里找Driver.class)

a、MSSQL

馬區(qū)動(dòng):com?mic「。soft?jdbc.sqlserver.SQLServerDriver

地址:jdbc:microsoft:sqlserver://127.0.0.1:1433;Dat

abaseName=數(shù)據(jù)庫

b\Oracle10g

馬區(qū)動(dòng):oracIe.jdbc.driver.OracleDriver

地址:jdbc:oracle:thin:@127.0.0.1:1521:全局標(biāo)記符

CxMySQL

馬區(qū)動(dòng):org.gjt.mm.mysql.Driver

地址:jdbc:mysql://127.0.0.1:3306/數(shù)據(jù)庫

Access

驅(qū)動(dòng):sun.jdbc.odbc.JdbcOdbcDriver

地址:jdbc:odbc:Driver={MicroSoftAccessDriver(*.m

db)};DBQ=c:\\demodb.mdb

e、DB2

馬區(qū)動(dòng):COM.ibm.db2.jdbe.net.DB2Driver

地址:jdbc:db2://127.0.0.1:6789/demodb

4、HibernateSQL方言(hibernate.dialect)

RDBMS方言

DB2org.hibernate.dialect.DB2Dialect

DB2AS/400org.hibernate.dialect.DB2400Dialect

DB2OS390org.hibernate.dialect.DB2390Dialect

PostgreSQLorg.hibernate.dialect.PostgreSQLDia1ect

MySQLorg.hibernate.dialect.MySQLDialect

org.hibernate.dia1ect.MySQLInnoDBDia

MySQLwithInnoDB

lect

org.hibernate.dialect.MySQLMylSAMDia

MySQLwithMylSAM

1ect

0rac1e(any

org.hibernate.dialect.OracleDialect

version)

0rac1e9i/10gorg.hibernate.dialect.0racle9Dialect

Sybaseorg.hibernate.dialect.SybaseDialect

org.hibernate.dialect.SybaseAnywhereDi

SybaseAnywhere

alect

MicrosoftSQLSer

org.hibernate.dialect.SQLServerDia1ect

ver

SAPDBorg.hibernate.dialect.SAPDBDialect

Informixorg.hibemate,dialect.1nformixDia1ect

HypersonicSQLorg.hibernate.dialect.HSQLDia1ect

Ingresorg.hibernate.dialect.IngresDialect

Progressorg.hibernate.dia1ect.ProgressDia1ect

RDBMS方言

MekoiSQLorg.hibernate.dialect.MckoiDialect

org.hibernate.dia1ect.1nterbaseDia

Interbase

lect

org.hibernate.dialect.PointbaseDialec

Pointbase

t

FrontBaseorg.hibernate.dialect.FrontbaseDialect

Firebirdorg,hibernate.dialect.FirebirdDialect

三、常用注解

3.1批注完全參考

?Entity要將Java類指定為JPA實(shí)體,請(qǐng)使用批注

具體信息

1JPA批注參考htm

3.2ID相關(guān)的

復(fù)合主鍵需要

1、實(shí)現(xiàn)序列話

2、重寫hascode、equal方法

3、有構(gòu)造方法

@EmbeddabIe復(fù)合主鍵設(shè)立可以被引用

@EmbeddedId引用獨(dú)立復(fù)合主鍵ID

3.3主鍵生成策略

使用Hibernate的主鍵生成策略生成字符串主鍵

@Id

@GenericGenerator(name=ngenerator",strategy=nuuidn)

@GeneratedVa1ue(generator="generator")

@Column(name=nidH)

使用Hibernate的主鍵生成策略與其他類共享主鍵

@Id

@GenericGenerator(name="generator”,

ostrategy="foreign”,

oparameters={

@Parameter(name="property",value="

person1')

})

@GeneratedVa1ue(generator=ngenerator*')

?Column(name=ncid”)

3.4字段'添加字段、添加表關(guān)聯(lián)

@Column。持久化字段

可添加、可更新、可為空

長度、表名、字段名、119口1^是否唯一

@JoinColvunn

name列名

referencedColumnName指向?qū)ο蟮拇鮨j名

unique約束唯一

@JoinColumns多個(gè)連接的列

@JoinColumns({

@JoinCoIumn(name="ADDR_ID*',referencedCol

umnName=nIDH),

@JoinCoIumn(name=HADDR_ZIP”,referenee

dColumnName="ZIP")

})

@JoinTable

@JoinTab1e(

name=nEJB_PROJ_EMPH,

Hn

joinColumns=@JoinColumn(name=EMP_IDfreferenc

edColumnName="工D"),

Hn

inverseJoinColumns=@JoinColumn(name=PROJ_IDr

referencedColumnName=HIDH)

)

3.5映射相關(guān)

@OneToOne

@ManyToOne

@ManyToMany

cascade級(jí)聯(lián)、CURD

fetch一次性所有讀取相關(guān)對(duì)象,還是lazy加載

optional關(guān)聯(lián)對(duì)象是否允許為空

targetEntity關(guān)聯(lián)對(duì)象

3.6其他

。排序

@OrderBy("lastnameASC","seniorityDESC")

共享主鍵

@PrimaryKeyJoinColumn

標(biāo)注為非持久話對(duì)象

@Transient

時(shí)間類型

@Temporal(TemporalType..........)

枚舉類型

@Enumerated(EnumType..........)

@Lob//聲明屬性相應(yīng)的是一個(gè)大文獻(xiàn)數(shù)據(jù)字段。

?Basic(feteh=FetchType.LAZY)//設(shè)立為延遲加載,當(dāng)我們?cè)跀?shù)據(jù)庫

中取這條記錄的時(shí)候,不會(huì)去取

四、JPA映射

4.1一對(duì)一映射

4.1.1共享主鍵映射

。1、一端提供主鍵、一端共享主鍵

o設(shè)立生成策略generator,主鍵值gereratedVaIue(generator=〃〃)

oouuid字符串ID

oforeign引用別人ID作為自己的主鍵(需要設(shè)立引用對(duì)象參數(shù))

2、oneToOne

otargetEntity關(guān)聯(lián)的目的對(duì)象,是類名.cIass形式

fetch抓去策略,有關(guān)聯(lián)的一起抓去、還是lazy加載

cascade。級(jí)聯(lián)

mappedBy0本對(duì)象被映射為*(在PrimaryKeyJoinCo1umn的另…端)

o3\PrimaryKeyJoinCoIumn設(shè)立在一端即可

t>name0自身子段

ooreferenceColumnName指向?qū)ο蟮淖侄?/p>

注意:

只要一個(gè)PrimaryKeyJoinColumn,另一端的oneToOne設(shè)立map

pedBy

都只有一個(gè)

注意:

1>向共享主鍵的對(duì)象設(shè)立提供主鍵的對(duì)象,然后持久化共享主鍵對(duì)象

2、需要設(shè)立級(jí)聯(lián)

3、共享主鍵端維護(hù)關(guān)系、提供主鍵端被維護(hù)使用mappedBy

Person提供主鍵

o@Id

nnn

@GenericGenerator(name=generatorrstrategy=*'uuid)

@GeneratedVaiue(generator="generator")

@Co1umn(name=,,pid")

oprivateStringid;

Hn

o0CoIumn(name=pnamezlength=2)

privateStringname;

00neToOne(mappedBy=,,person**,fetch=FetchType.EAGER,t

argetEntity=Idcar,class)

oprivatedeardidcard;

Ideard共享主鍵

QGenericGenerator(namegenerator”,

strategy=*'foreign”,

parameters={

@Parameter(name="propertyn,value=nperso

@GeneratedValue(generator="generator")

o@Column(name=ncid")

oprivateStringid;

o@Co1umn(name=ncnon)

oprivateStringno;

@OneTo0ne(targetEntity=^erson.c1ass,fetch=FetchType.EAG

ER,cascade=caseadeType.ALL)

nH

@PrimaryKeyJoinColumn(name=id'*frefereneedColumnName=i

d”)

oprivatePersonperson;

o@Id

o@GenericGenerator(name="generator",

strategy="foreign"r

parameters={

@Parameter(name=nproperty”,va1ue="personH)

})

@GeneratedValue(generator="generatorn)

@Column(name=ucid”)

privateStringid;

@Co1umn(name="eno")

privateStringno;

o00neToOne(mappedBy=nidcard",fetch=FetchType.EAGER,targetEnt

ity=Person.class)

?privatePersonperson;

使用共享主鍵關(guān)聯(lián)

Personp=newPerson();

op.setName(nadern);

ooldcardidcard=newIdeard();

oidcard.setNo(“321321n);

idcard,setPerson(p);

4.1.2關(guān)聯(lián)外鍵映射

關(guān)系的維護(hù)端

@OneToOne(級(jí)聯(lián))

@JoinColumn(name="本表中關(guān)聯(lián)字段

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論