|
该用户从未签到
|
基于理论,注重实践。避免了大量的理论罗列,先使读者有了一定的感性认识,再继续深入,上升到理性,符合学习知识的客观过程。
; p( |' v* g- L: e) D 内容翔实,实例丰富。不仅对JPA的理论进行了详细的讲解,而且辅以大量实例,使读者可以边学技术,边进行实践。, o3 D. e$ f: d/ S3 d8 g
注重实际,应用为王。精心挑选的大量示例程序都是作者在实际开发中的经验总结,涵盖了实际开发中可能遇到的各种问题。
& O5 P# v% K, H 取材广泛,内容充实。覆盖JPA技术的各个方面,从最基本的简单概念到JPA高级应用的相关技术,再到JPA结合各种框架的使用,是对JPA内容体系的整体总结。$ a5 b, o5 ` w
注重基础,高于基础。不仅对基础知识进行详解,还大量讲述了其基本实现原理。使读者不仅知道如何应用,而且能理解最本质的内容,从而便于以后更深入地学习。7 L2 @# D6 e" r0 R3 X* t
本书全面介绍了JPA(java Persistence API)的相关知识。全书共分4篇,第1篇介绍了JPA产生的背景及JPA的运行环境、流行的开发工具IDE等;第2篇介绍了 JPA基本知识,包括映射实体、映射实体关系、实体管理器及JPQL的相关知识;第3篇进一步介绍了关于JPA的高级应用,包括持久化上下文、XML映射文件、打包和部署、JPA实现框架和与spring集成等;第4篇介绍了三个完整案例,分别是学生成绩管理系统(Servlet+JPA)、宠物商店(Swing+JPA)、博客系统(struts2+Spring2+JPA)。
! K G0 F! [0 J) Q( @$ X 本书结构清晰,注重实战,深入浅出,非常适合JPA开发人员学习使用,同时也可用做高校相关专业师生和社会培训班的教材。 A' @( V9 B1 l$ x: q# T
1 r/ j8 \3 ?3 z$ o/ y
( F& o* a% j; {" y" X第一篇 初识JPA+ q, e- O1 A' y
第1章 JPA概述
- B2 }7 |" m& p" a( a 1.1 什么是数据持久化
, u% I) R! Y4 I3 x3 E) ^0 [+ O4 \ 1.2 Java持久化技术
) Q! |' o: A, d/ C- c; Y- n" \ 1.2.1 序列化(Serialization)
1 e+ U, d: e' F+ U. T 1.2.2 JDBC ! h$ C# o" ~: R6 I# q
1.2.3 关系对象映射(ORM) : Z2 y* Q$ G; b; c+ @5 ?; M
1.2.4 对象数据库(ODB)
5 ?0 q1 n8 M6 k- j# N- X! i+ @ 1.2.5 Java数据对象(JDO) y2 A/ N& g$ k( ^* l+ E
1.2.6 EJB 2.X s0 j' I- w) J% w' j& f
1.3 JPA(Java Persistence API)概述 3 K$ T3 U% C! c: N( }. h
1.3.1 什么是JPA
, W) C3 b8 |; h: a: c1 S 1.3.2 JPA的历史
* r( |& e+ r9 y 1.3.3 下载JPA规范 % P- _0 \! M0 H
1.3.4 JPA的优势 % j" ^* z( V' q2 \3 \% \' v
1.3.5 EJB 3与JPA的关系 ) `0 i% @* f+ Z
1.3.6 常见的实现JPA的框架
3 ]' c) H) D7 t4 n$ f* ?! E# _3 G0 R 1.4 对象关系映射(ORM)
. \1 m2 a6 X, x# A- v& d/ W8 t; t/ A/ ^ 1.4.1 什么是对象关系映射 ) p5 y3 ~* g5 I. j% W
1.4.2 对象关系映射模式
- B' Z1 o6 w! B2 h, t 1.5 本章小结 6 l4 m9 n, D8 {7 s
第2章 搭建JPA开发和运行环境
- ]4 f7 d) R! O8 r+ `+ r a 2.1 JBoss概述 5 Z3 O0 c/ O/ Z, [( [
2.1.1 JBoss Application Server 4 i+ [$ D7 r6 x; M4 j* y3 `! O
2.1.2 JBoss IDE for Eclipse
0 ] N' g" Q; ~& X* q: T8 \5 I3 b( Y 2.2 JBoss应用服务器的搭建
& Z4 g3 Y; r9 }7 r 2.2.1 下载和安装JBoss服务器 7 _, o6 z( k4 C
2.2.2 启动JBoss服务器 + m6 _2 ^. `1 A) R' b
2.2.3 停止JBoss服务器
$ z4 F& s# U9 P) E- C 2.2.4 JBoss的文件目录结构
& w" E u% U4 v- p2 T' L 2.3 JBoss IDE开发环境的搭建3 D! _/ u+ T9 C8 L) d
2.3.1 下载JBoss IDE for Eclipse , K1 D7 o" t+ x9 R! A7 @' i
2.3.2 Eclipse中配置JBoss
* D$ f: H; v. X/ O 2.3.3 Eclipse中启动和停止JBoss
; `5 r" G7 Y+ e" s 2.4 MySQL数据库的下载和安装
$ q! O/ C0 Y5 \9 }* L6 a- ~ 2.4.1 MySQL数据库概述
c6 w3 r6 Q2 k& }8 m4 r 2.4.2 下载MySQL & Z: { B+ y& A X, a N9 I
2.4.3 安装MySQL - d& o0 ^ X& ?7 n
2.4.4 运行MySQL 1 o0 ^9 J3 V: k
2.4.5 下载MySQL客户端 9 E3 z, f4 A% Z. K/ V) S9 r
2.5 本章小结
7 S$ z/ a# O5 e7 ` V- b8 b 第3章 JPA之初体验 & f3 G1 Q& Q' r4 a9 f( {- C% ?0 d
3.1 第一个Entity实体类 4 G( {* u$ s& t4 k' [! V/ D
3.1.1 第一个POJO类 2 Z# B6 T% d% }# o+ j
3.1.2 数据库中对应的表 ) _* A1 c w( l) J7 b+ x
3.1.3 使用注释(Annotations)配置ORM映射
1 l1 j) i' `, [- z 3.1.4 配置persistence.xml
; B% O+ ]9 W+ @6 |$ s 3.2 第一个SessionBean
' j* B. v1 e$ O. l6 Z 3.2.1 定义Remote接口
4 u: z! E$ z, O. t 3.2.2 SessionBean类
( _/ `- m2 G d+ \( F: I& m' d( H 3.3 使用EntityManager操作实体
l/ ^ h% o0 i, O+ t 3.3.1 依赖注入EntityManager
. @% z, }9 I2 T4 E 3.3.2 添加Entity
# W2 I' C# b) l7 @) z# ^6 X2 [ 3.3.3 根据主键查找Entity : C" u4 w2 U' @+ L, v
3.3.4 更新Entity & O; E+ H; P% i! w r# g
3.3.5 删除Entity
5 t2 [; D& t* ` d* L" C& { 3.3.6 执行查询 * j' }# i" }9 c: H- u# `# t
3.4 部署EJB
4 K5 |* q! c) |$ u. o5 w 3.4.1 打EJB-JAR包 & a: U8 e- K4 W4 V* ~* i
3.4.2 部署EJB
! ?5 H9 N, b5 u) {5 q 3.4.3 配置DataSource数据源 6 D* {, k& w: P2 H4 Y
3.4.4 启动JBoss服务器 / [2 Y- D" V+ V# P
3.4.5 查看JBoss控制台JMX-Console
; m n/ t: ]& X9 L5 ] 3.5 调用EJB的Client
) T- }7 x: `( { 3.5.1 TestClient类( m3 z1 F2 y7 i' H
3.5.2 运行Client ; k/ |" D, a8 c5 b0 R/ O% C2 G; ^
3.6 本章小结
2 g. w0 g+ V- l# P5 l2 s 第4章 JPA开发工具
2 P2 F, i1 u% D% o7 Z1 Q9 {+ b 4.1 Eclipse Dali JPA 概述
& A8 M8 Y8 \2 E+ C( p0 V" ^ 4.1.1 什么是Dali JPA
' J- x2 P& e3 x- X9 K1 H 4.1.2 下载Dali JPA - G( o! ]* l& G
4.1.3 Dali JPA界面预览
) ~* ?3 h% P, y' s/ d5 A5 s 4.2 连接数据库
) o! j, h- U O0 E a& l# B* X6 h 4.3 开始JPA开发 3 L |! |7 D1 o b. _
4.3.1 创建JPA项目 * d8 K/ X, e/ B, y0 S
4.3.2 创建持久化类
6 Q( ~6 K$ K, e( W, l& n9 D% j& C 4.4 本章小结 $ @) W1 V( ?- B2 d
第二篇 JPA进阶
9 b0 h' M5 P: c% E# O5 R 第5章 映射持久化对象(Entity) " [7 W" `! r2 ?+ S
5.1 实体映射基础 9 X3 B" V5 s' Y% d$ j
5.1.1 简单的POJO类
5 W; c, M( K0 ~! B 5.1.2 映射实体(@Entity)
9 `" ?3 j% |; t3 }. L% g- f1 m. d) Y) p 5.1.3 无参的构造方法 ( }- ^! a7 K7 H$ y- W1 x1 I
5.1.4 实现Serializable接口
' ^- k) @) R" G. z* N* w 5.1.5 可继承性
4 J. d+ u; i" V- J5 t 5.1.6 标注主键(@Id)
3 @5 D! u$ U/ l 5.1.7 默认实体映射 - g3 I/ Q: m8 O2 {+ r" p3 V3 `
5.2 映射表和字段 ( f S2 \/ u: E' t: B
5.2.1 映射表(@Table)
8 i/ g/ J' d }* e/ m/ R 5.2.2 映射方法和属性(@Column) 2 @; D1 ^- q, K$ l. d0 q. `
5.2.3 可持久化的基本数据类型 , V# |: n/ a1 _# ^! P( i
5.2.4 映射优化一:基本数据类型VS封装类
/ }( i% d! ^( |" ~- t 5.2.5 映射优化二:@Basic设置加载方式 + c4 I% j6 F2 |! j$ j
5.3 主键映射
! S7 V4 J, O$ H1 A6 O2 v 5.3.1 主键标识(@Id) " B O- P# C* P% X r( H1 }
5.3.2 自增主键 # D8 n% c ?+ J& i- Z/ @
5.3.3 表生成器(@ TableGenerator) , P6 Y+ u+ E1 {0 i1 X$ g
5.3.4 Sequence生成器(@ Sequence)
5 y% b- d' K; ~' [" t! \' W 5.3.5 Identity生成器 # |, r& q: M, L. E2 }
5.3.6 复合主键(@IdClass)
U, `+ g- |8 F& r4 R: F/ l 5.3.7 嵌入式主键(@EmbeddedId)
7 u- L' i4 U$ a7 l& z/ Y 5.3.8 几种主键生成策略的比较 1 `5 e' f& X- r/ J) {
5.4 映射特殊类型 3 }% k2 _# V( }/ j, n) v
5.4.1 映射Blob和Clob类型(@Lob)
5 Z- h0 F+ p* g: m& V, @ 5.4.2 映射时间(Temporal)类型(@Temporal)
/ C9 n' |8 K/ u! c6 d8 g3 V& m 5.4.3 映射枚举(Enumerated)型
# H% ^9 ]5 c( U7 D" j 5.5 映射非持久化类型(@Transient) # s) s2 o' v! h8 N/ C3 x! N: b
5.6 本章小结 7 ^6 r) c {) V9 _% t7 t; W# b0 j
第6章 实体关系映射 # S; p+ A# l. w
6.1 实体关系概述
1 Y: @, K" D' \/ r/ c* z" I 6.1.1 实体关系的方向性
' I+ X9 `" K9 L# B1 w 6.1.2 实体关系的数量性
& J, x8 q5 T1 T& d: h5 J: @6 R 6.2 一对一(@OneToOne)
6 Y' ^# n+ y6 Z4 r3 A" V 6.2.1 单向关联(Unidirectional) 5 \) B: G7 _" s; f* j! v2 F+ n
6.2.2 一对一(@ OneToOne)
0 A6 ~$ f) U! I4 L4 C- c) f 6.2.3 关联指定列(@JoinColumn)
' Q- _0 ~1 r0 f4 y5 N3 { 6.2.4 双向关联(Bidirectional)
) _$ P( p) B/ d, [4 q% X! i% L' v! i- t 6.2.5 主键关联(@PrimaryKeyJoinColumn) . u8 y0 v: \9 E" G" U# N8 Z' V
6.2.6 默认关联 3 g8 a5 j: Z. _5 Z
6.2.7 一对一映射的一般步骤 : E6 g1 ~- x. e5 A- n+ Q! E
6.3 一对多(@OneToMany) b B; f; F1 b/ P2 C
6.3.1 一对多模型(单向) % ]) r1 h- F. z5 _
6.3.2 映射策略 89& `# M* v& z/ z2 Z- x
6.3.3 映射策略——外键关联
7 |# u- l8 a4 P! x 6.3.4 一对多(@OneToMany)
& o1 R0 Y; ?, G; L 6.3.5 映射策略——表关联
7 K/ E" Z3 p0 e; _/ N8 ] S W 6.3.6 表关联(@ JoinTable)
5 Y& ?. o" }% I1 l K ?) R( |4 F3 ^ 6.3.7 默认关联
7 E1 _. `$ e& R+ P) m3 v* ]7 G& H 6.4 多对一(@ManyToOne)
" {1 Y3 s: [$ {% Z5 A9 o 6.4.1 多对一 模型(单向)
4 S R) O- ]7 R" M 6.4.2 映射策略——外键关联
% b% z$ s% o6 L 6.4.3 多对一(@ManyToOne) ' P; e2 S$ V5 l! Y$ C# o- I4 o8 d9 s
6.4.4 默认关联 ' V c5 Z9 ]8 H5 h, S
6.5 高级一对多和多对一映射
, x, u/ y, ]; r' f6 t- k 6.5.1 双向关联模型
0 ?, S0 _# s2 s% [4 P5 i1 t9 j 6.5.2 双向关联
' Z3 W, r2 s/ l 6.5.3 一对多(多对一)映射的一般步骤 0 e& a: Q% r9 M& t5 M, Q7 {
6.6 多对多(@ManyToMany) # z8 J; k6 ^) A
6.6.1 多对多模型(单向) 6 N* A7 A# ^) z Z
6.6.2 映射策略——表关联
3 O* U E, [1 W 6.6.3 @ManyToMany & T1 X C9 v& C1 q) L0 v
6.6.4 双向关联模型 ) z7 Q$ T: d. K$ J3 l9 ?1 p' ]: N% h+ @
6.6.5 默认关联 ) L$ o8 k! l7 ]) j% ]! V
6.6.6 多对多映射的一般步骤 ) w2 q; k, a6 z2 X- F
6.7 集合类的选择
w0 N( Y: R0 a9 {: H5 O$ u. F 6.7.1 集合类的区别 1 `6 D6 ?$ K' D8 g9 r& g6 W
6.7.2 带排序的集合 6 Z+ u1 L0 d1 @5 B+ @- i7 F$ i
6.7.3 带Key值的集合 2 N$ Z. M* R" Q: z2 L
6.8 关系映射示例:客户关系管理系统
$ g9 y" l/ G5 j# n+ c: D 6.8.1 实体关系类图 ! O( [! d' M5 x' \4 Z. b) n
6.8.2 数据库表结构 ; T# `1 d# o& {' g- F: F
6.8.3 客户实体
; V) {$ v. X& ~1 \* s) q5 c8 c' z 6.8.4 地址实体 # _; p5 t$ p1 y: U
6.8.5 联系人实体
0 q* B3 R8 v( j4 r& \ 6.8.6 头像实体 ) A6 R2 g7 o% ^( g2 h
6.8.7 电话实体
- e* t0 x, g$ p 6.8.8 订单实体
) p3 M8 n% D# i8 ? 6.8.9 订单明细实体
1 \0 [4 ^# ~$ A" e R8 R 6.8.10 产品实体 % O" w* H3 D% I- {/ a4 O8 U; K
6.9 本章小结
" {( h/ C2 q4 p" f/ m 第7章 实体映射的高级应用 % o# b; U, v _; }
7.1 多表映射 : C4 c- @2 ^, V1 a9 r. N( c
7.1.1 两个表映射为一个实体 , m( }! S& g) C# N
7.1.2 从表注释(@ SecondaryTable)
: W7 l/ F8 ?- t4 p7 S- x. v 7.1.3 多个表映射为一个实体
( W; k, P9 j1 P$ T+ w# o 7.1.4 多个从表注释(@ SecondaryTables)
8 L2 c( o6 X- I* U& s ]" | 7.2 嵌入映射 8 R/ C* B j/ A+ Z( ?( L
7.2.1 嵌入映射表结构 / m7 q1 o4 ]- ]8 y+ K" q8 K
7.2.2 嵌入类
4 o3 @: a K3 B, C$ \ 7.2.3 嵌入到实体 ) S8 A% W: O7 S' x3 ^
7.2.4 映射属性(@AttributeOverride)
- g) |/ b5 r" t9 B4 |; C. t: U Q8 E 7.3 实体的继承策略 ' Q8 O2 X/ ~9 @7 M+ m3 _: m" I8 T
7.3.1 类结构关系图
3 t: z1 N" `1 G$ I 7.3.2 三种继承策略 * y- |( m5 g" i j, R5 c' s
7.3.3 继承关系的实体保存在一个表(SINGLE_TABLE)
) J. L1 W( \6 F$ R5 r 7.3.4 每个实体子类保存在一个表(JOINED)
- s2 P( b6 H+ T 7.3.5 每个实体类保存在一个表(TABLE_PER_CLASS)
o8 }# [% [( a$ e2 E' b 7.3.6 三种继承策略对比
# a7 l: \* o2 t 7.4 深入实体继承 1 q! |) o; z X& p3 H
7.4.1 继承自抽象(abstract)实体类
3 O+ m; }0 x0 z0 } 7.4.2 继承自非映射实体类(Mapped Superclasses) % V9 l9 p) H+ J
7.4.3 继承自非实体类
9 _) u! D) R- h. x' I7 U 7.4.4 继承的设计重构 9 J6 T3 U. K/ F8 `( y) A _1 g/ e: y
7.4.5 带继承关系的实体查询(多态) # i3 ]: V) s$ C6 c
7.5 本章小结
0 \1 Y3 N* J4 m% C) P1 ` 第8章 实体管理器(EntityManager)
! t) V7 f- s/ h% h! l) a: l! o8 D 8.1 实体管理器概述
4 ^" |) H- s8 R: m, W* n' o& V0 {/ ? 8.1.1 什么是实体管理器 & n, Y% v0 I! O. I
8.1.2 Entity Manager API
- L! f- Y. S/ j2 M, |3 ~3 n, _ 8.1.3 EntityManager方法详解
E6 p _; x/ b k2 A6 Q0 q& c1 r% \ 8.2 操作实体(CRUD)
" Z. x- j. ]1 E; ` 8.2.1 创建实体(持久化) 2 p( e! Y6 J; ?; A
8.2.2 持久化带关系的实体
* j, x" B" |! ~3 J* ^4 B 8.2.3 根据主键查找实体 # ~1 |& j1 E9 q) _
8.2.4 实体属性及实体的加载方式
2 h7 W) T* L4 b' N+ F- G) D: ` 8.2.5 更新实体
. _* x+ ]3 p. X 8.2.6 更新实体关系 2 e0 K: |# O" ~. M' x8 x: B
8.2.7 删除实体
* Z5 ]4 E. s% [* K* _ 8.2.8 删除关联的实体
4 l9 f5 w' k8 \7 Z, N! D 8.3 实体的生命周期 , d- P" {4 z/ N3 B; S. A6 C
8.3.1 实体的几种状态
. O4 s: U4 v+ X1 L: z) D 8.3.2 瞬时状态(Transient) 9 C( ~5 w% T% A. x+ {* B
8.3.3 持久化状态(Persisted) , a& M5 [9 O* b
8.3.4 托管状态(Attatched或Managed) 5 l! J1 l+ m3 c: J1 g
8.3.5 游离状态(Detached)
) }) p) `# \4 m6 l& E1 f: Y) w 8.3.6 销毁状态(Removed) " C, U3 Q+ u5 H! W' c# ]1 ?
8.3.7 分析实体状态实例
6 B6 `# R- K0 o0 N 8.4 实体的高级操作 + n. X: a/ V7 v+ f+ G
8.4.1 实体的联级操作
; b0 t' U- z1 `' U8 ] 8.4.2 获得实体的另一种方式 + B* E. ^: U! b( U& W: i |
8.4.3 同步数据库(flush与flushType)
# A- b+ {& U2 J9 W 8.4.4 refresh()和clear()方法
, P; P; q: J% ^$ E 8.5 实体监听器(Listener) , R4 H2 M! j6 ?2 n% N1 c
8.5.1 回调事件(Callback Events) . \$ O5 c. o: U5 N1 i/ l
8.5.2 监听器定义在实体中 5 k. j$ A( T: ~8 l& I& d; g
8.5.3 监听器定义在实体外 6 u4 R/ Z! @8 [: y |7 I8 Q
8.5.4 默认实体监听器
e8 @7 i: W# m3 `5 I+ K 8.5.5 继承中的实体监听器
# D1 v8 r( p# V 8.5.6 监听器的调用顺序
- X- z" G4 E( R0 R" O 8.5.7几种监听实体方式的比较
/ I5 k# a, q; ~9 _( u 8.6 本章小结 0 d* O% J6 F; t/ M- ~6 X
第9章 查询(Query)
1 J! p5 w( I) \2 _ 9.1 Query 概述 ( b/ K5 e$ O u: U
9.1.1 一个简单的查询示例 8 ?# V) F- ~) e% M" B+ P
9.1.2 Query API % K/ n- T: P8 a' I- g
9.1.3 Query 方法详解
) n4 u! h( T# M 9.1.4 Query的简化写法
! R( [( \8 p; V 9.2 JPQL入门
% l4 t/ k- x! D& S% E- k8 U2 ~ 9.2.1 查询实体
% p4 ~( c' v" e" y" b& K3 j' T 9.2.2 查询实体属性 : m% c& f2 P0 c S% Y% l
9.2.3 查询关联实体 . R2 S4 A3 D) b! w2 i
9.3 准备查询
9 v: s O% m/ o( m. ]. F 9.3.1 查询参数方法一——命名设置参数
8 h& i! I6 E0 d6 K 9.3.2 查询参数方法二——位置设置参数 ( w% J( U* C* |2 U
9.3.3 不带参数的查询
; s% x; T+ N; T/ C5 m! t, S7 _ 9.3.4 查询策略的选择 / m% H; {+ `' s! x
9.3.5 分页查询 / e# C% U. }# ?" U1 Z; Y/ f
9.3.6 设置提示(Hints) % E1 E/ N, K) Q. K7 t) n" u' D
9.3.7 设置提交模式(FlushMode) 9 j/ ~( G# E5 i* d
9.4 命名查询(Named Query)
& _$ O- i1 f( s$ f 9.4.1 命名查询示例
" D G" u# e3 i* k 9.4.2 定义查询命名
, e& {7 V; |5 M9 [7 E 9.4.3 @NamedQuery注释 ) j s' [0 m4 x
9.5 查询结果的处理 " p2 B }5 O0 x
9.5.1 执行查询 ; N K* j; A A! ?1 o8 A% j
9.5.2 查询结果的类型 % J- i1 _+ Y7 m: t1 N( j
9.5.3 查询结果为实体 ) Z9 u# r% p4 t/ G
9.5.4 查询结果为基本数据类型 + a* L' ^2 v" ^" t7 e
9.5.5 查询结果为数组
# Y7 a' F$ G2 S3 }3 _ 9.5.6 查询结果为自定义对象 7 o ?& s, {. W: S& @
9.6 本地查询(Native Query) + ]! x" j* j; A
9.6.1 本地查询概述
; `6 F( a% [& ]; y3 Q7 U 9.6.2 执行本地查询
' h# L' L. Y' Y4 ?: K; ~$ m; M 9.6.3 查询结果与实体映射
+ ]4 A+ \) ]% j3 p( U. E; T+ g 9.6.4 自定义查询映射 6 k; K, o3 u1 q4 }0 Y
9.6.5 @SqlResultSetMapping
$ F$ O! T' `, A- P+ n5 w! D3 F 9.6.6 @NamedNativeQuery本地命名查询
9 }8 W7 w% q# v( u8 \* H 9.7 查询技巧 9 c0 F2 C% Y4 c" P) y
9.7.1 日期类型的查询 ; b* p5 t8 I, s" u0 y3 L# {
9.7.2 动态查询 8 T/ _; d; D* C8 I! i/ q
9.8 本章小结
1 k+ }8 E8 L V5 m7 \ 第10章 查询语言(JPQL)
- t/ D6 p0 D9 |: Y" m 10.1 JPQL基础 ( `3 r7 j3 M1 X1 O
10.1.1 JPQL基本语法
) y+ P; R( R2 y+ h3 X" G 10.1.2 SELECT子句
, _: i: R3 }2 x$ T 10.1.3 继承实体的查询
2 F. n# P m5 S$ m2 X1 p" E 10.2 FROM语句
$ r! G) M) Z5 Q 10.2.1 FROM基本语法
- ]; L# X8 a. l4 D$ _) V 10.2.2 基于集合实体的查询(关联查询) ) c, H6 q/ \* z# B7 f% i
10.2.3 关联查询 - h" _; R- {+ X- E# B4 f
10.2.4 内连接(INNER JOIN)
0 R H. ^; Z$ q 10.2.5 左连接(LEFT JOIN) $ Y. _' Y; E. k- p1 c) }
10.2.6 抓取连接(FETCH JOIN) 0 \% \5 ~3 S8 j: |
10.2.7 唯一性查询(DISTINCT) . P' i q" T/ T4 I9 X9 Z! Z
10.3 WHERE语句 ) Q% F8 O6 ?* O9 s( z
10.3.1 WHERE基本语法
8 R7 H _& @4 Z8 W" Z# m2 t, X0 ^ 10.3.2 直接量(Literals) ( A. x1 `1 i# I9 {& f. j# A. T
10.3.3 查询条件操作符优先级 3 H8 I( {. U; c1 l3 p1 W4 J
10.3.4 算术操作符(Arithmetic Operators) ( f6 S, C" w4 K o8 s
10.3.5 逻辑操作符(Logic Operators)
8 f% S; N; Z1 t7 ~ 10.3.6 比较操作符(Comparison Operators)
|1 m: B! O. z1 o1 j- }, a, B! N 10.3.7 BETWEEN操作符
" }* C0 [% k( U1 U/ Y/ }6 I+ E5 _ 10.3.8 IN操作符
& ` H* J7 t# [0 _: F, K) f$ x$ b 10.3.9 LIKE操作符 , D/ |- e; `: I. m2 L
10.3.10 NULL操作符 + S; W& J' o; T
10.3.11 EMPTY操作符
- p# I, }1 T( ~ 10.3.12 MEMBER OF操作符
+ L! K' e4 m/ t 10.4 函数表达式
' `3 s- p$ h# P: T# p' i 10.4.1 字符串函数 & x2 z8 t5 r4 w2 E
10.4.2 数值函数
D/ ?) W* d" N 10.4.3 日期函数 + S, u7 l1 g8 ^: I& a! c2 @6 X5 \
10.5 子查询 5 S2 ?0 K6 ~* b; ^& u9 D' D8 `4 m
10.5.1 基本子查询
. C8 u, Z6 r! A3 \ 10.5.2 EXISTS表达式
' J7 W1 O* d' z& Y" X5 Z% y# m5 | 10.5.3 ALL和ANY表达式
" w' `5 m" J2 [. p' U 10.6 分组查询
0 P8 h1 d9 S" @8 k2 X5 w- k 10.6.1 分组查询基本语法 ( N2 F# U5 G0 j& X9 m; y
10.6.2 分组查询函数
4 ~7 p: r( c/ R 10.7 ORDER BY表达式
( c4 p/ K) _" l8 |3 Y) `' X& L 10.8 批量操作
/ [! x1 { u4 x: x# x3 e, u9 G. E9 D 10.8.1 批量更新
3 Y8 B& a) E9 T/ ~$ B6 \! q# c! U 10.8.2 批量删除
5 s& G/ G9 S: ?3 T 10.8.3 执行批量操作
. ^; P$ H$ L w/ R0 c* l 10.9 本章小结
6 B0 v* B7 h/ H6 m* w第三篇 JPA高级应用$ K$ I) `- N& S/ l- e6 h
第11章 持久化上下文 ' D! ]5 c n m' A% J2 q! @% i
11.1 获得EntityManager对象 3 }% d: ^2 Q Y% \$ g
11.1.1 Java EE环境与J2SE环境 & K( `- H) _9 Z8 ]; O' ]
11.1.2 两种类型的EntityManager对象 % d4 k) v# ]% v4 `
11.1.3 容器托管的(container-managed)EntityManager对象
- B3 l$ @, O w; [ 11.1.4 应用托管的(application-managed)EntityManager对象
0 F5 J& o7 e& i( M 11.1.5 ThreadLocal的使用
& A0 N4 d4 I: o; U+ y 11.2 实体管理器工厂(EntityManagerFactory)
I( K# z0 ^2 M( S 11.2.1 javax.persistenc.Persistence API * K6 R+ \, Y4 u7 k7 j2 ^% e0 S+ s J
11.2.2 EntityManagerFactory API 5 Z& J3 V+ j9 @
11.2.3 实现自己的JPA + r! k+ u6 G4 Q5 e/ _3 b
11.3 容器托管的EntityManager持久化上下文
7 \3 u5 y1 q$ Q. j6 E3 i 11.3.1 事务范围TRANSACTION
2 k! F3 [; \# |7 W 11.3.2 扩展范围EXTENDED 5 v5 d8 \) e, {2 W. j. T' u) W
11.4 事务管理
3 W/ [) B S7 A. u2 {2 S% T 11.4.1 事务与EntityManager 0 k* C0 s- Q+ j. z5 R; k: f' d
11.4.2 JTA管理事务 & B( w4 ~- B% R: S
11.4.3 RESOURCE_LOCAL管理事务
3 ]" k+ |$ y. c* ]/ ~- Q9 ^ ` 11.4.4 EntityTransaction API ' j2 v* i0 e: G& l, F
11.5 应用托管的EntityManager的持久化上下文
- Y' [6 o6 K, N1 [# V7 v 11.5.1 无状态的会话Bean与JTA事务(事务范围) , O) d& A n& n U& _: g
11.5.2 无状态的会话Bean与JTA事务(扩展范围) ; v5 l. H) x2 ?% R+ q
11.5.3 有状态的会话Bean与JTA事务 5 M* M \. A& L1 m6 R
11.5.4 RESOURCE_LOCAL事务 / ^6 ?6 G6 d& J/ C: W
11.6 本章小结 2 q J) M3 l4 Z L( _' c# ?
第12章 XML映射文件 % R# ^3 N6 L8 s( U# ^! A
12.1 XML映射配置VS注释 % i) n5 c* Y3 _+ [( N3 K6 Y
12.2 映射文件概述 # v, a2 F G" f4 `8 c9 v: h
12.2.1 映射文件的保存位置 * n3 W; r: M7 C& S& d' I1 x
12.2.2 获取映射文件DTD
: p7 j' s1 C0 _4 l 12.3 映射基础
7 Y, H* G" \; }( k \, y, k 12.3.1 映射文件的基本结构 9 b) y6 ^' Y" q3 ?; |0 s
12.3.2 映射文件的基本元素
8 b9 Z* ~ b# M1 d+ b( Z4 ^( S 12.4 配置注释< persistence-unit-metadata >
7 r. [5 `) n. G4 z 12.4.1 禁用注释
, [' R+ b }6 b* c 12.4.2 持久化单元的默认配置 , p+ u' n3 d4 V3 a6 N9 t C8 a
12.5 映射文件的默认配置
+ ~; h: Z* \6 S3 k 12.5.1 默认包名 1 U( G) V- j9 g9 E% ]+ v- V
12.5.2 默认schema
! J# T1 J. p0 r: r# y' u1 R 12.5.3 默认catalog 8 a; P0 R, Z a' f+ ~+ t) S g
12.5.4 默认访问类型
8 N9 V; e5 q* \0 o5 J 12.6 配置查询、生成器和查询结果
1 \. [5 { `" a/ V' O 12.6.1 sequence生成器
: p$ k: T7 Z; A% V5 _ 12.6.2 表生成器 : ~7 v- r8 J" `7 D/ L: |
12.6.3 命名查询 5 h! w4 b1 b6 r# n. `
12.6.4 本地命名查询
- O: v+ c! n/ @- Y$ T6 ?; r) v 12.6.5 查询结果映射 7 l+ z0 g. Z* q
2.7 配置实体
3 }7 U% ]4 m3 h! P9 n 12.7.1 基本配置 _3 H( K, N* o- u- m5 t6 X6 M4 i
12.7.2 配置表
M, }, J8 E5 h8 K Q 12.7.3 配置从表
- V7 r! Z/ I4 Q 12.7.4 配置属性
% ^8 w# ]* A+ s+ J5 t. ~ 12.7.5 配置实体关系
9 z4 E: `0 E0 P9 p+ s 12.8 配置继承 * u9 z, w. o) X- I6 O0 t' T
12.8.1 配置所有实体保存为一个表(SINGLE_TABLE) 8 ^, \: v( _% F* {3 V/ K8 q# D3 `8 q6 @
12.8.2 每个实体子类保存在一个表(JOINED)
& W( Q& H/ p) }2 q 12.8.3 配置非实体类
. j7 ]" y$ ^2 v$ n5 e+ k 12.9 配置嵌入类
1 v1 c. f5 T6 y) O+ v 12.9.1 配置类
{/ L, R' B8 ?/ W# R4 P) W# H+ @ 12.9.2 和配置嵌入实体类
2 _/ ?; \ p+ B4 \ 12.10 配置实体监听器 - S5 g' i2 | j6 F4 U. Z( W( B y- Q
12.10.1 监听器定义在实体内 . Z' b- l+ u o. O T
12.10.2 监听器定义在实体外 3 B: Z7 y, |2 v: V9 l$ b) }
12.10.3 禁用父类监听器 5 x% X5 i4 r+ G& \9 l
12.10.4 禁用默认监听器 + u( W: W( t, Q$ U) O4 W2 z+ X
12.11 本章小结
1 v- _" r) `8 X; ^$ P4 b/ [ 第13章 打包和部署 ) w3 i1 S$ K$ t$ s0 } P* [7 b
13.1 Java EE应用打包概述 3 H% i& `5 P) o6 h$ _
13.1.1 Java EE包的类型 9 k3 z" ?/ e3 _' f- p4 W: k& O# m
13.1.2 EAR包结构
: a" h6 S: V7 M" o) K 13.1.3 EJB-JAR包结构 , F2 V2 F" i, d1 @% z: Y- ]
13.1.4 WAR包结构
* j$ p9 g m ?& o9 O 13.2 Java EE类加载机制
2 B: z, r; T$ ]% ]( e 13.2.1 Java类加载器
0 q' p0 \! k2 E) L3 {. v 13.2.2 类加载顺序模型 : c; n' U: O* d3 \; k6 z
13.2.3 Java EE应用的加载顺序
9 r7 l9 y: L7 ~ 13.2.4 类加载原理示例 3 j# S2 m0 S. }9 y& Y! h
13.3 配置persistence.xml
# u& x2 s1 l0 X v 13.3.1 保存位置
- G/ D" `2 @2 o2 ^* ? 13.3.2 persistence.xml的基本结构
0 [+ d8 `6 A; }6 Y9 t7 y 13.3.3 配置持久化单元名称 - T! B3 O( [! h3 H
13.3.4 配置事务类型 1 h: m8 D. x" o( e; V, m
13.3.5 配置实现者 9 v& n* L2 o Q0 e
13.3.6 配置数据源
9 ]# \6 V9 y, G! T. w+ @ 13.3.7 配置映射文件 & a+ E5 S. S e% B' P
13.3.8 配置管理类
. _$ M; m: A* M4 M 13.3.9 配置自定义配置
1 D. D/ C3 d3 K 13.4 JPA打包最佳实践 ' n6 ^. Y: u" X; f
13.4.1 J2SE打包最佳实践
5 Q( t' Y2 W- W 13.4.2 J2EE打包最佳实践——与EJB组件
) {8 P; v- T: K% A1 e: [ 13.4.3 J2EE打包最佳实践——与Web应用
3 m) T r p; Y1 e 13.5 本章小结 0 z5 H6 L/ b* Z$ A4 @
第14章 JPA实现框架
+ t0 U/ K9 }; h, S8 @5 p 14.1 hibernate JPA 2 C5 l7 G. j' G6 Y" p% W* L% {
14.1.1 Hibernate 与JPA $ N6 D3 ^* K- ~3 E+ w) `/ S' C
14.1.2 Hibernate下载 # V2 k3 H2 }& ]) `: \# E5 B$ X
14.1.3 配置方式 5 E) g! E- F9 U4 x; e
14.1.4 基本配置
1 ~1 X% w; P4 h& T. M 14.1.5 配置日志 # r& W/ I& Y, y" L+ a) X1 R
14.1.6 配置缓存 % X2 W) Y) `7 }) p# d G
14.1.7 配置JDBC和数据库 $ \1 q( [, T+ j2 b
14.1.8 其他的常用配置
' ~$ k1 _* ~% G+ I3 o* q 14.2 OpenJPA
2 @( M: H6 T9 Q/ n4 F* M3 y( f 14.2.1 OpenJPA与JPA
5 ?% @, g. H$ Y8 }' Q 14.2.2 OpenJPA下载 + M' v& j- T4 L$ ?" {4 w/ H
14.2.3 配置日志 % n0 z$ T" L8 S. m% ^* u5 g, b
14.2.4 配置缓存
z* @8 \' I8 G2 T( z, q 14.2.5 配置JDBC和数据库
+ @) E/ `# S: k; @$ Y) C6 ] 14.2.6 增强器的使用(Enhancer)
7 j9 y5 |" v6 }% O8 C 14.3 Toplink JPA
. n% x' o3 g7 D) b' n/ S6 w 14.3.1 Toplink 与JPA
0 {8 I& `, K. V) d) _$ _2 W 14.3.2 Toplink下载 0 `0 e+ a4 s4 p \* O
14.3.3 配置日志 ( `- L; n0 I# S6 P! N
14.3.4 配置缓存 ; y7 i/ j. O+ g ~2 I* @% d
14.3.5 配置JDBC和数据库
. [0 k9 w0 E6 i4 |' Q9 c, s! R8 a 14.3.6 配置DDL - K+ }. a/ f' P
14.3.7 其他自定义配置
0 \7 C7 r3 p) x$ Z& j$ K! w: U 14.3.8 配置查询优化
+ R2 ]# D: v4 P% B9 T d 14.3.9 加载优化 $ I& L6 d4 v5 M- }8 f: C
14.4 本章小结 1 U* I8 I/ b* ^0 `- h. X* a/ X
第15章 JPA与Spring集成 / {/ I6 X ?- r
15.1 Spring概述 6 A3 H9 d8 w9 y; T! y0 o0 v. m( v
15.1.1 什么是Spring 1 M7 @. b' K: B8 D! v
15.1.2 Spring的特性 8 |/ }3 n/ y/ d) Y8 P
15.1.3 Spring与JPA
# E+ c# y5 q& Y0 D+ O7 [ 15.2 开始Spring之旅 5 A# L' B0 L9 k+ \3 ~* l n# @
15.2.1 IoC容器 . S9 B+ b& b# `2 w
15.2.2 普通的Bean
2 _. C8 J" g1 e2 p 15.2.3 容器管理的Bean * U% B: K0 I% q+ D
15.2.4 在容器中运行 7 F# X* y$ m( j
15.3 Spring中集成JPA - T" `+ d( q% f' F( L, s; t
15.3.1 集成前的准备 # U$ n3 v2 r1 p" j% d! U
15.3.2 配置EntityManagerFactory
. T# S \+ k+ R. ~( K J! W 15.3.3 配置事务Transaction * V$ q# I% l* ^0 b. F
15.3.4 运行程序 2 y9 h- a, |/ f2 A# @- L
15.4 Spring Web框架
4 R/ b$ v" w+ {8 T& l& |7 U 15.4.1 Spring Web概述 $ k& S0 L3 S5 X; U
15.4.2 配置Spring Web应用
" [ o2 P# r+ t2 k+ a 15.4.3 开始Spring Web之旅
: u) `. L- [. e% p- U* H$ W9 ^& ~ 15.5 Spring Web集成JPA # U D( f! j# C8 y, r
15.5.1 集成前的准备 5 n# f$ q$ a! P
15.5.2 配置数据源 8 u% d7 _2 i9 }( e0 O
15.5.3 注入业务逻辑
; E6 ]; j) \) P5 V2 q' i, H 15.5.4 运行程序
' y6 h# |8 h# S" N 15.6 本章小结
- X& A; x/ ]+ \4 B第四篇 典型案例
1 h% z$ _( u& r: z' f0 e$ p 第16章 学生成绩管理系统(Servlet+JPA) $ y) O2 v1 B$ l! o- g3 s
16.1 系统概述 2 i' m* M- \% ` {- Y9 C; Y
16.1.1 需求描述
* R, T3 @ \' w- G 16.1.2 系统预览
; a3 w E: `# O0 _- {4 H2 t 16.2 系统构架
( k/ t6 v4 o' t 16.2.1 系统结构
4 Q" w& [7 W/ p' W& M 16.2.2 CharacterFilter
0 o' w4 `) p; p7 m3 ~ 16.2.3 异常处理 ( v, n/ C( N" G$ v. l
16.3 数据库设计
- K* H$ Z% ?7 [4 x f, g 16.3.1 数据表UML ' O# o$ X) U+ @4 `4 v7 _
16.3.2 SQL脚本
! g2 t0 F7 L# u9 Z# D8 ?! _' o 16.4 JPA实体设计
2 ?' Z6 _& t2 z) l5 `1 A* p 16.4.1 JPA实体UML * {$ M3 I( m* |0 f" ?) @: n
16.4.2 JPA实体类代码
8 q" k: E; k2 u: F. q r, s 16.4.3 persistence.xml配置 9 h9 W1 j- e" `# t
16.4.4 JPA实体的部署 : U# r9 C! l! l, Q" w
16.5 班级模块
. o- B$ e# @) } 16.5.1 添加页面addClass.jsp % H8 T5 X) w+ @- I5 f
16.5.2 添加班级
' S" `9 z7 d" _" ?% \# O7 | 16.5.3 使用标注获取EntityManagerFactory 380
* S/ U2 s* M, e* _( {& k# ^ 16.5.4 班级列表 1 \' B8 ?, d- r
16.5.5 修改班级 * A4 a, I+ W, t; T
16.5.6 删除班级 * q# m8 _: c5 j1 `" f
16.6 课程模块
" D! C7 {' N3 f& o4 j. M) C0 x 16.6.1 添加、删除、修改课程
; `! g0 F, S, f ^: S2 x. K5 S 16.6.2 选择听课学生
- ]* `! _% G! v4 c 16.7 学生模块 , c0 m+ Z/ ?* G. O" B% U B, R- E
16.7.1 分页显示学生列表
5 \9 |& a% i" Q; Z; J" s4 z 16.7.2 添加修改删除学生
9 A% H/ _5 O- N2 X 16.8 分数模块 + `' y" g. n1 ~6 t/ v6 p
16.8.1 添加学生成绩 ; P" E$ a/ Y! a# x
16.8.2 列出学生成绩
( I# G' V0 Z) C, q3 M 16.9 本章小结 % W, K+ n& p0 d3 W: N+ z2 L) Z
第17章 宠物商店 (Swing+JPA)
0 i6 ^. H( D. c: S" R 17.1 系统概述
5 V4 c0 z. _& z1 u9 w 17.1.1 需求描述 ; R' G3 t2 j3 u7 @
17.1.2 系统预览 % v5 \; G/ h+ j; m/ M
17.2 系统构架
- c& L/ z! B* [ 17.2.1 系统构架
# R4 [! ]! Z. V1 l, L4 o# t 17.2.2 实体类设计 5 g, f" A: [% S7 a- ]5 Y/ h9 T) I
17.2.3 业务类实现
0 _8 V! ~# H0 }+ t 17.2.4 Session Bean查找
8 n, P' \) e9 Q9 G/ e# u# _! _" | 17.2.5 persistence.xml配置 5 ? k+ `+ \( E
17.2.6 EJB3组件部署 3 x9 L" ]' U* M: s H
17.3 登录对话框 3 U J8 _! @- q1 m# @2 l
17.3.1 登录对话框
/ \- t6 d: y7 s; X8 U# {5 j 17.3.2 异常信息显示 ; r, t. A. y& ]7 o' _
17.4 主购物窗口
9 ?6 ~+ ?: X& _' Z 17.4.1 主购物窗口
2 F2 n, G* R. x. p; |& P' |; U 17.4.2 主购物窗口代码
; M/ X* ]! f2 e5 z" u 17.4.3 宠物列表Model 1 B' ?8 n3 h3 I
17.4.4 添加宠物类别命令 0 H; e; V( a h( w1 T, U, k
17.4.5 删除宠物类别命令
0 Z6 q3 O# v& L 17.4.6 添加宠物命令 ! ^! I8 u, _$ T( k; j; p! I
17.5 购买窗口 8 m5 d4 w0 d7 o a, L
17.5.1 购买对话框
9 a6 g. a, g- f 17.5.2 购物车对话框
0 e+ G4 S1 j! n' | 17.5.3 付款操作
% y' {* I5 T0 ]+ ^- F: | 17.6 本章小结 % E% }5 X; h7 C# V
第18章 博客系统(Struts2+ Spring2+JPA)
; p& g8 }. s/ H3 G% y$ O 18.1 系统概述 + d1 b ^ {/ i
18.1.1 需求描述
4 \) n9 q9 L- l1 p5 ^ 18.1.2 系统预览
6 e: f7 }! h, \+ A1 I 18.2 系统构架
! v: Y k% _5 W2 A# o- q 18.2.1 系统构架 ; m' g% I& y0 ?. H. B
18.2.2 执行流程 1 U- {4 P# I0 h
18.3 实体类设计
! L$ C7 G9 K+ Y+ k 18.3.1 基础实体BaseBean t( a2 c) `( j d: [
18.3.2 用户实体Person 0 G8 z! n! L+ I% Y# X
18.3.3 爱好实体Hobby
$ m# y) [, B# B% D8 a q6 o 18.3.4 博客实体Blog
0 u9 [+ s" y( _7 s1 ]9 V 18.3.5 类别实体Category
# u# ~- v* A4 z6 @+ c4 ^" k! l5 B 18.3.6 文章实体Post
8 ~) B- Y2 x+ V% Z 18.3.7 登录信息类PersonInfo
" T: s% h3 O1 [) V9 s% d 18.3.8 persistence.xml
) ]0 j) B/ @+ b0 ~ 18.4 业务模块设计
/ A' c( L& Y- }% F! V 18.4.1 DAO层接口
, ]7 x( ^& {+ W* B( O$ d 18.4.2 DAO层实现
2 [( T; V- G% a) o5 l1 z 18.4.3 公共Service层接口 2 e/ h. x' H X( p
18.4.4 公共Service层实现 + P/ K- D. i( ^3 \; z1 a/ z$ t! D& }
18.4.5 用户Service接口
4 P8 j |' s: ~- J. s5 @ 18.5 用户模块
% o. U+ m3 @$ h7 \8 T( f 18.5.1 BaseAction基础类 % A# c! @/ n8 ]2 q
18.5.2 用户注册 $ f( A& P1 T2 o% V. Q8 T
18.5.3 struts.xml配置 5 h( k. v5 f5 u- ~2 e7 g8 t, y
18.5.4 ApplicationContext.xml配置 7 {2 v" p& W$ ~5 G9 h# N( e2 S
18.5.5 web.xml配置
" m! g E4 t/ O% }4 q, ]/ x 18.5.6 register.jsp ) Q/ M$ B6 I; l- U- l
18.5.7 header.jsp,footer.jsp 6 N1 b! V& |8 y5 y, R8 c
18.5.8 注册表单验证
$ x2 t5 b6 J. F T, w( e 18.5.9 异常处理
7 ^1 l4 t) Z+ ~1 ]: C4 u 18.5.10 用户照片文件上传 " ?( }: r% i" q5 W+ H
18.5.11 用户登录注销
6 a7 ]/ w# V. w7 B: t! C1 j 18.6 博客模块 $ j) t' \- E1 l, x0 n$ n8 I0 r8 C
18.6.1 开通博客 : B" K6 W7 P7 q0 U2 k% F3 E
18.6.2 浏览博客 7 [9 K* X/ o1 T4 Y1 {
18.7 类别模块 / ~9 A" c0 G; j0 c0 _3 G
18.7.1 类别列表 9 A1 G- D8 Q! \% P
18.7.2 添加类别
; `+ K2 h# k1 m# Z6 X! [4 G 18.7.3 浏览类别
/ z' H) G7 v0 B6 ? 18.8 文章模块
( k; x1 F2 h1 f; H: p: y4 L 18.8.1 列出文章
. |! _( e1 ~" A+ O! A 18.8.2 添加文章
2 |$ o" o+ M1 T8 K1 s$ R 18.8.3 浏览文章
$ d. P9 g" Q: t2 Y, w, J 18.9 本章小结
" s: Z6 ?# k$ r4 @$ |附录A JPA ORM Annotation参考 0 y% b- [! b2 G+ v/ u1 ]4 e
附录B 其他的JPA Annotation参考
. N! n( G. V# P1 X" Q |
|