理论篇 2
第1章 EJB概述 2
本章目标 2
学习导航 2
任务描述 3
1.1 EJB简介 4
1.1.1 EJB的历史 4
1.1.2 EJB相关概念 5
1.2 EJB类型 6
1.2.1会话Bean 6
1.2.2实体和JPA 7
1.2.3消息驱动Bean 7
1.3 EJB架构 7
1.3.1三层架构和EJB 8
1.3.2 Java EE容器 8
1.4 EJB提供的服务 10
1.5 JNDI和依赖注入 11
1.5.1 JNDI 11
1.5.2依赖注入 12
1.6 HelloEjb示例 14
小结 16
练习 16
第2章 会话Bean 18
本章目标 18
学习导航 18
任务描述 19
2.1会话Bean简介 20
2.1.1会话Bean与EJB服务 20
2.1.2会话Bean的状态 21
2.1.3会话Bean的生命周期 21
2.1.4 EJB的单线程模型 22
2.1.5案例介绍 24
2.2会话Bean的业务接口 25
2.2.1本地接口 26
2.2.2远程接口 27
2.2.3 WebService接口 28
2.2.4实现业务接口 28
2.2.5组合业务接口 29
2.3无状态会话Bean 30
2.3.1编写无状态会话Bean 31
2.3.2无状态会话Bean的实例池 33
2.3.3无状态会话Bean的生命周期 35
2.4有状态会话Bean 38
2.4.1编写有状态会话Bean 38
2.4.2有状态会话Bean的钝化和激活 43
2.4.3有状态会话Bean的生命周期 44
2.4.4有状态会话Bean的注意事项 46
2.5调用会话Bean 46
2.5.1客户端类型 47
2.5.2 EJB调用机制 48
2.5.3本地调用 49
2.5.4远程调用 50
2.6 Web层访问会话Bean 52
2.6.1访问无状态会话Bean 53
2.6.2访问有状态会话Bean 55
小结 61
练习 62
第3章 JPA 64
本章目标 64
学习导航 64
任务描述 65
3.1 JPA概述 66
3.1.1 ORM 66
3.1.2 JPA 68
3.2 JPA实体 68
3.2.1声明实体 69
3.2.2实体主键 70
3.2.3映射实体 71
3.2.4生成主键 74
3.2.5延迟加载 77
3.3实体管理器 79
3.3.1 EntityManager接口 79
3.3.2持久化上下文 80
3.3.3实体生命周期 80
3.3.4实体生命周期回调 82
3.3.5持久化单元 83
3.3.6容器管理的EntityManager 85
3.3.7应用程序管理的EntityManager 86
3.4持久化操作 89
3.4.1持久化实体 89
3.4.2通过主键检索实体 90
3.4.3更新实体 91
3.4.4删除实体 92
3.4.5刷新实体 93
3.4.6合并实体 93
3.4.7 flush()方法和FlushModeType 94
3.5项目完善 94
3.5.1 Servlet 94
3.5.2 JSP 96
3.5.3部署运行 98
小结 99
练习 99
第4章 实体关系 101
本章目标 101
学习导航 101
任务描述 102
4.1实体关联关系 103
4.1.1关联关系类型 103
4.1.2一对一关系 104
4.1.3一对多和多对一关系 109
4.1.4多对多关系 114
4.1.5级联操作 116
4.2实体继承关系 118
4.2.1 SINGLE_TABLE 119
4.2.2 JOINED 121
4.3项目完善 123
4.3.1实体 123
4.3.2会话Bean 126
4.3.3 Servlet 128
4.3.4 JSP 129
4.3.5部署运行 130
小结 132
练习 132
第5章 实体查询 134
本章目标 134
学习导航 134
任务描述 135
5.1实体查询简介 136
5.2查询API 136
5.2.1获得Query实例 137
5.2.2查询参数 138
5.2.3查询实体 140
5.2.4分页查询 140
5.2.5执行更新 141
5.2.6设置FlushMode和Hint 141
5.3 JPQL 142
5.3.1基本语法 142
5.3.2查询部分属性 145
5.3.3构造方法表达式 147
5.3.4连接查询 148
5.3.5条件查询 152
5.3.6函数 154
5.3.7分组 156
5.3.8子查询 157
5.3.9更新和删除 158
5.4 SQL查询 159
5.4.1标量SQL查询 159
5.4.2实体SQL查询 160
5.5项目完善 160
5.5.1实体 160
5.5.2业务接口和会话Bean 161
5.5.3 Servlet 162
小结 163
练习 163
第6章 消息驱动Bean 165
本章目标 165
学习导航 165
任务描述 166
6.1消息简介 167
6.2 JMS 167
6.2.1 JMS消息传递模型 169
6.2.2 JMS消息生产者 170
6.2.3 JMS消息消费者 174
6.3消息驱动Bean 178
6.3.1编写消息驱动Bean 178
6.3.2 ActivationConfigProperty 180
6.3.3消息驱动Bean的生命周期 185
小结 187
练习 187
第7章 事务 189
本章目标 189
学习导航 189
任务描述 190
7.1事务与EJB 191
7.1.1事务简介 191
7.1.2 EJB中的事务管理 193
7.2容器管理的事务 194
7.2.1声明事务 194
7.2.2事务的范围和属性 195
7.2.3事务的传播 198
7.2.4使用EJBContext回滚事务 199
7.2.5使用异常回滚事务 201
7.3 Bean管理的事务 204
7.3.1 UserTransaction接口 204
7.3.2使用UserTransaction 205
7.3.3事务的传播 208
小结 209
练习 210
第8章 定时服务、拦截器和WebService 212
本章目标 212
学习导航 212
任务描述 213
8.1 EJB定时服务 214
8.1.1定时服务API 214
8.1.2使用定时服务 216
8.1.3 EJB定时服务的局限 220
8.2 AOP与EJB拦截器 221
8.2.1创建拦截器 221
8.2.2使用拦截器 222
8.2.3默认拦截器 224
8.2.4生命周期拦截器 225
8.3 EJB与WebService 226
8.3.1发布WebService 226
8.3.2访问WebService 229
小结 231
练习 231
实践篇 234
实践1 EJB概述 234
实践指导 234
实践1.G.1 234
实践1.G.2 244
实践1.G.3 246
知识拓展 256
1.EJB和Spring 256
拓展练习 258
实践2 会话Bean 259
实践指导 259
实践2.G.1 259
实践2.G.2 263
实践2.G.3 264
实践2.G.4 267
实践2.G.5 268
实践2.G.6 270
实践2.G.7 272
实践2.G.8 276
实践2.G.9 280
实践2.G.10 283
实践2.G.11 285
实践2.G.12 290
实践2.G.13 297
实践2.G.14 300
知识拓展 303
1.在独立的Web应用中访问EJB 303
拓展练习 308
实践3 JPA 309
实践指导 309
实践3.G.1 309
实践3.G.2 310
实践3.G.3 313
实践3.G.4 314
实践3.G.5 315
实践3.G.6 317
实践3.G.7 318
实践3.G.8 320
实践3.G.9 324
知识拓展 333
1.联合主键 333
拓展练习 339
实践4 实体关系 340
实践指导 340
实践4.G.1 340
实践4.G.2 341
实践4.G.3 342
实践4.G.4 343
实践4.G.5 345
实践4.G.6 347
知识拓展 350
1.映射BLOB和CLOB类型 350
2.映射枚举类型 352
拓展练习 353
实践5 实体查询 354
实践指导 354
实践5.G.1 354
实践5.G.2 356
实践5.G.3 359
实践5.G.4 363
知识拓展 372
1.多表映射 372
拓展练习 374
实践6 消息驱动Bean 375
实践指导 375
实践6.G.1 375
实践6.G.2 377
实践6.G.3 379
实践6.G.4 380
知识拓展 383
1.使用JBoss发送邮件 383
拓展练习 384
实践7 定时服务、拦截器和WebService 385
实践指导 385
实践7.G.1 385
实践7.G.2 389
实践7.G.3 390
实践7.G.4 392
实践7.G.5 393
知识拓展 399
1.EJB安全 399
拓展练习 403
附录A EJB3.0注解 404
附录B EJB3.1(及JPA2.0)新特性 421