• 1.摘要
  • 2.基本信息
  • 3.内容介绍
  • 4.作品目录

程序天下

《程序天下》是一本冯曼菲编制,由电子工业出版社在2008年出版的书籍。

基本信息

内容介绍

《程序天下:EJB JPA数据库持久层开发实践详解》全面介绍了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)。

作品目录

第一篇 初识JPA第1章 JPA概述1.1 什么是数据持久化1.2 Java持久化技术1.2.1 序列化(Serialization)1.2.2 JDBC1.2.3 关系对象映射(ORM)1.2.4 对象数据库(ODB)1.2.5 Java数据对象(JDO)1.2.6 EJB 2.X1.3 JPA(Java Persistence API)概述1.3.1 什么是JPA1.3.2 JPA的历史1.3.3 下载JPA规范1.3.4 JPA的优势1.3.5 EJB 3与JPA的关系1.3.6 常见的实现JPA的框架1.4 对象关系映射(ORM)1.4.1 什么是对象关系映射1.4.2 对象关系映射模式1.5 本章小结第2章 搭建JPA开发和运行环境2.1 JBoss概述2.1.1 JBoss Application Server2.1.2 JBoss IDE for Eclipse2.2 JBoss应用服务器的搭建2.2.1 下载和安装JBoss服务器2.2.2 启动JBoss服务器2.2.3 停止JBoss服务器2.2.4 JBoss的文件目录结构2.3 JBoss IDE开发环境的搭建2.3.1 下载JBoss IDE for Eclipse2.3.2 Eclipse中配置JBoss2.3.3 Eclipse中启动和停止JBoss2.4 MySQL数据库的下载和安装2.4.1 MySQL数据库概述2.4.2 下载MySQL2.4.3 安装MySQL2.4.4 运行MySQL2.4.5 下载MySQL客户端2.5 本章小结第3章 JPA之初体验3.1 第一个Entity实体类3.1.1 第一个POJO类3.1.2 数据库中对应的表3.1.3 使用注释(Annotations)配置ORM映射3.1.4 配置persistence.xml3.2 第一个SessionBean3.2.1 定义Remote接口3.2.2 SessionBean类3.3 使用EntityManager操作实体3.3.1 依赖注入EntityManager3.3.2 添加Entity3.3.3 根据主键查找Entity3.3.4 更新Entity3.3.5 删除Entity3.3.6 执行查询3.4 部署EJB3.4.1 打EJB-JAR包3.4.2 部署EJB3.4.3 配置DataSource数据源3.4.4 启动JBoss服务器3.4.5 查看JBoss控制台JMX-Console3.5 调用EJB的Client3.5.1 TestClient类3.5.2 运行Client3.6 本章小结第4章 JPA开发工具4.1 Eclipse Dali JPA 概述4.1.1 什么是Dali JPA4.1.2 下载Dali JPA4.1.3 Dali JPA界面预览4.2 连接数据库4.3 开始JPA开发4.3.1 创建JPA项目4.3.2 创建持久化类4.4 本章小结第二篇 JPA进阶第5章 映射持久化对象(Entity)5.1 实体映射基础5.1.1 简单的POJO类5.1.2 映射实体(@Entity)5.1.3 无参的构造方法5.1.4 实现Serializable接口5.1.5 可继承性5.1.6 标注主键(@Id)5.1.7 默认实体映射5.2 映射表和字段5.2.1 映射表(@Table)5.2.2 映射方法和属性(@Column)5.2.3 可持久化的基本数据类型5.2.4 映射优化一:基本数据类型VS封装类5.2.5 映射优化二:@Basic设置加载方式5.3 主键映射5.3.1 主键标识(@Id)5.3.2 自增主键5.3.3 表生成器(@ TableGenerator)5.3.4 Sequence生成器(@ Sequence)5.3.5 Identity生成器5.3.6 复合主键(@IdClass)5.3.7 嵌入式主键(@EmbeddedId)5.3.8 几种主键生成策略的比较5.4 映射特殊类型5.4.1 映射Blob和Clob类型(@Lob)5.4.2 映射时间(Temporal)类型(@Temporal)5.4.3 映射枚举(Enumerated)型5.5 映射非持久化类型(@Transient)5.6 本章小结第6章 实体关系映射6.1 实体关系概述6.1.1 实体关系的方向性6.1.2 实体关系的数量性6.2 一对一(@OneToOne)6.2.1 单向关联(Unidirectional)6.2.2 一对一(@ OneToOne)6.2.3 关联指定列(@JoinColumn)6.2.4 双向关联(Bidirectional)6.2.5 主键关联(@PrimaryKeyJoinColumn)6.2.6 默认关联6.2.7 一对一映射的一般步骤6.3 一对多(@OneToMany)6.3.1 一对多模型(单向)6.3.2 映射策略 896.3.3 映射策略——外键关联6.3.4 一对多(@OneToMany)6.3.5 映射策略——表关联6.3.6 表关联(@ JoinTable)6.3.7 默认关联6.4 多对一(@ManyToOne)6.4.1 多对一 模型(单向)6.4.2 映射策略——外键关联6.4.3 多对一(@ManyToOne)6.4.4 默认关联6.5 高级一对多和多对一映射6.5.1 双向关联模型6.5.2 双向关联6.5.3 一对多(多对一)映射的一般步骤6.6 多对多(@ManyToMany)6.6.1 多对多模型(单向)6.6.2 映射策略——表关联6.6.3 @ManyToMany6.6.4 双向关联模型6.6.5 默认关联6.6.6 多对多映射的一般步骤6.7 集合类的选择6.7.1 集合类的区别6.7.2 带排序的集合6.7.3 带Key值的集合6.8 关系映射示例:客户关系管理系统6.8.1 实体关系类图6.8.2 数据库表结构6.8.3 客户实体6.8.4 地址实体6.8.5 联系人实体6.8.6 头像实体6.8.7 电话实体6.8.8 订单实体6.8.9 订单明细实体6.8.10 产品实体6.9 本章小结第7章 实体映射的高级应用7.1 多表映射7.1.1 两个表映射为一个实体7.1.2 从表注释(@ SecondaryTable)7.1.3 多个表映射为一个实体7.1.4 多个从表注释(@ SecondaryTables)7.2 嵌入映射7.2.1 嵌入映射表结构7.2.2 嵌入类7.2.3 嵌入到实体7.2.4 映射属性(@AttributeOverride)7.3 实体的继承策略7.3.1 类结构关系图7.3.2 三种继承策略7.3.3 继承关系的实体保存在一个表(SINGLE_TABLE)7.3.4 每个实体子类保存在一个表(JOINED)7.3.5 每个实体类保存在一个表(TABLE_PER_CLASS)7.3.6 三种继承策略对比7.4 深入实体继承7.4.1 继承自抽象(abstract)实体类7.4.2 继承自非映射实体类(Mapped Superclasses)7.4.3 继承自非实体类7.4.4 继承的设计重构7.4.5 带继承关系的实体查询(多态)7.5 本章小结第8章 实体管理器(EntityManager)8.1 实体管理器概述8.1.1 什么是实体管理器8.1.2 Entity Manager API8.1.3 EntityManager方法详解8.2 操作实体(CRUD)8.2.1 创建实体(持久化)8.2.2 持久化带关系的实体8.2.3 根据主键查找实体8.2.4 实体属性及实体的加载方式8.2.5 更新实体8.2.6 更新实体关系8.2.7 删除实体8.2.8 删除关联的实体8.3 实体的生命周期8.3.1 实体的几种状态8.3.2 瞬时状态(Transient)8.3.3 持久化状态(Persisted)8.3.4 托管状态(Attatched或Managed)8.3.5 游离状态(Detached)8.3.6 销毁状态(Removed)8.3.7 分析实体状态实例8.4 实体的高级操作8.4.1 实体的联级操作8.4.2 获得实体的另一种方式8.4.3 同步数据库(flush与flushType)8.4.4 refresh()和clear()方法8.5 实体监听器(Listener)8.5.1 回调事件(Callback Events)8.5.2 监听器定义在实体中8.5.3 监听器定义在实体外8.5.4 默认实体监听器8.5.5 继承中的实体监听器8.5.6 监听器的调用顺序8.5.7几种监听实体方式的比较8.6 本章小结第9章 查询(Query)9.1 Query 概述9.1.1 一个简单的查询示例9.1.2 Query API9.1.3 Query 方法详解9.1.4 Query的简化写法9.2 JPQL入门9.2.1 查询实体9.2.2 查询实体属性9.2.3 查询关联实体9.3 准备查询9.3.1 查询参数方法一——命名设置参数9.3.2 查询参数方法二——位置设置参数9.3.3 不带参数的查询9.3.4 查询策略的选择9.3.5 分页查询9.3.6 设置提示(Hints)9.3.7 设置提交模式(FlushMode)9.4 命名查询(Named Query)9.4.1 命名查询示例9.4.2 定义查询命名9.4.3 @NamedQuery注释9.5 查询结果的处理9.5.1 执行查询9.5.2 查询结果的类型9.5.3 查询结果为实体9.5.4 查询结果为基本数据类型9.5.5 查询结果为数组9.5.6 查询结果为自定义对象9.6 本地查询(Native Query)9.6.1 本地查询概述9.6.2 执行本地查询9.6.3 查询结果与实体映射9.6.4 自定义查询映射9.6.5 @SqlResultSetMapping9.6.6 @NamedNativeQuery本地命名查询9.7 查询技巧9.7.1 日期类型的查询9.7.2 动态查询9.8 本章小结第10章 查询语言(JPQL)10.1 JPQL基础10.1.1 JPQL基本语法10.1.2 SELECT子句10.1.3 继承实体的查询10.2 FROM语句10.2.1 FROM基本语法10.2.2 基于集合实体的查询(关联查询)10.2.3 关联查询10.2.4 内连接(INNER JOIN)10.2.5 左连接(LEFT JOIN)10.2.6 抓取连接(FETCH JOIN)10.2.7 唯一性查询(DISTINCT)10.3 WHERE语句10.3.1 WHERE基本语法10.3.2 直接量(Literals)10.3.3 查询条件操作符优先级10.3.4 算术操作符(Arithmetic Operators)10.3.5 逻辑操作符(Logic Operators)10.3.6 比较操作符(Comparison Operators)10.3.7 BETWEEN操作符10.3.8 IN操作符10.3.9 LIKE操作符10.3.10 NULL操作符10.3.11 EMPTY操作符10.3.12 MEMBER OF操作符10.4 函数表达式10.4.1 字符串函数10.4.2 数值函数10.4.3 日期函数10.5 子查询10.5.1 基本子查询10.5.2 EXISTS表达式10.5.3 ALL和ANY表达式10.6 分组查询10.6.1 分组查询基本语法10.6.2 分组查询函数10.7 ORDER BY表达式10.8 批量操作10.8.1 批量更新10.8.2 批量删除10.8.3 执行批量操作10.9 本章小结第三篇 JPA高级应用第11章 持久化上下文11.1 获得EntityManager对象11.1.1 Java EE环境与J2SE环境11.1.2 两种类型的EntityManager对象11.1.3 容器托管的(container-managed)EntityManager对象11.1.4 应用托管的(application-managed)EntityManager对象11.1.5 ThreadLocal的使用11.2 实体管理器工厂(EntityManagerFactory)11.2.1 javax.persistenc.Persistence API11.2.2 EntityManagerFactory API11.2.3 实现自己的JPA11.3 容器托管的EntityManager持久化上下文11.3.1 事务范围TRANSACTION11.3.2 扩展范围EXTENDED11.4 事务管理11.4.1 事务与EntityManager11.4.2 JTA管理事务11.4.3 RESOURCE_LOCAL管理事务11.4.4 EntityTransaction API11.5 应用托管的EntityManager的持久化上下文11.5.1 无状态的会话Bean与JTA事务(事务范围)11.5.2 无状态的会话Bean与JTA事务(扩展范围)11.5.3 有状态的会话Bean与JTA事务11.5.4 RESOURCE_LOCAL事务11.6 本章小结第12章 XML映射文件12.1 XML映射配置VS注释12.2 映射文件概述12.2.1 映射文件的保存位置12.2.2 获取映射文件DTD12.3 映射基础12.3.1 映射文件的基本结构12.3.2 映射文件的基本元素12.4 配置注释< persistence-unit-metadata >12.4.1 禁用注释12.4.2 持久化单元的默认配置12.5 映射文件的默认配置12.5.1 默认包名12.5.2 默认schema12.5.3 默认catalog12.5.4 默认访问类型12.6 配置查询、生成器和查询结果12.6.1 sequence生成器12.6.2 表生成器12.6.3 命名查询12.6.4 本地命名查询12.6.5 查询结果映射2.7 配置实体12.7.1 基本配置12.7.2 配置表12.7.3 配置从表12.7.4 配置属性12.7.5 配置实体关系12.8 配置继承12.8.1 配置所有实体保存为一个表(SINGLE_TABLE)12.8.2 每个实体子类保存在一个表(JOINED)12.8.3 配置非实体类12.9 配置嵌入类12.9.1 配置类12.9.2 和配置嵌入实体类12.10 配置实体监听器12.10.1 监听器定义在实体内12.10.2 监听器定义在实体外12.10.3 禁用父类监听器12.10.4 禁用默认监听器12.11 本章小结第13章 打包和部署13.1 Java EE应用打包概述13.1.1 Java EE包的类型13.1.2 EAR包结构13.1.3 EJB-JAR包结构13.1.4 WAR包结构13.2 Java EE类加载机制13.2.1 Java类加载器13.2.2 类加载顺序模型13.2.3 Java EE应用的加载顺序13.2.4 类加载原理示例13.3  配置persistence.xml13.3.1 保存位置13.3.2 persistence.xml的基本结构13.3.3 配置持久化单元名称13.3.4 配置事务类型13.3.5 配置实现者13.3.6 配置数据源13.3.7 配置映射文件13.3.8 配置管理类13.3.9 配置自定义配置13.4 JPA打包最佳实践13.4.1 J2SE打包最佳实践13.4.2 J2EE打包最佳实践——与EJB组件13.4.3 J2EE打包最佳实践——与Web应用13.5 本章小结第14章 JPA实现框架14.1 Hibernate JPA14.1.1 Hibernate 与JPA14.1.2 Hibernate下载14.1.3 配置方式14.1.4 基本配置14.1.5 配置日志14.1.6 配置缓存14.1.7 配置JDBC和数据库14.1.8 其他的常用配置14.2 OpenJPA14.2.1 OpenJPA与JPA14.2.2 OpenJPA下载14.2.3 配置日志14.2.4 配置缓存14.2.5 配置JDBC和数据库14.2.6 增强器的使用(Enhancer)14.3 Toplink JPA14.3.1 Toplink 与JPA14.3.2 Toplink下载14.3.3 配置日志14.3.4 配置缓存14.3.5 配置JDBC和数据库14.3.6 配置DDL14.3.7 其他自定义配置14.3.8 配置查询优化14.3.9 加载优化14.4 本章小结第15章 JPA与Spring集成15.1 Spring概述15.1.1 什么是Spring15.1.2 Spring的特性15.1.3 Spring与JPA15.2 开始Spring之旅15.2.1 IoC容器15.2.2 普通的Bean15.2.3 容器管理的Bean15.2.4 在容器中运行15.3 Spring中集成JPA15.3.1 集成前的准备15.3.2 配置EntityManagerFactory15.3.3 配置事务Transaction15.3.4 运行程序15.4 Spring Web框架15.4.1 Spring Web概述15.4.2 配置Spring Web应用15.4.3 开始Spring Web之旅15.5 Spring Web集成JPA15.5.1 集成前的准备15.5.2 配置数据源15.5.3 注入业务逻辑15.5.4 运行程序15.6 本章小结第四篇 典型案例第16章 学生成绩管理系统(Servlet+JPA)16.1 系统概述16.1.1 需求描述16.1.2 系统预览16.2 系统构架16.2.1 系统结构16.2.2 CharacterFilter16.2.3 异常处理16.3 数据库设计16.3.1 数据表UML16.3.2 SQL脚本16.4 JPA实体设计16.4.1 JPA实体UML16.4.2 JPA实体类代码16.4.3 persistence.xml配置16.4.4 JPA实体的部署16.5 班级模块16.5.1 添加页面addClass.jsp16.5.2 添加班级16.5.3 使用标注获取EntityManagerFactory 38016.5.4 班级列表16.5.5 修改班级16.5.6 删除班级16.6 课程模块16.6.1 添加、删除、修改课程16.6.2 选择听课学生16.7 学生模块16.7.1 分页显示学生列表16.7.2 添加修改删除学生16.8 分数模块16.8.1 添加学生成绩16.8.2 列出学生成绩16.9 本章小结第17章 宠物商店(Swing+JPA)17.1 系统概述17.1.1 需求描述17.1.2 系统预览17.2 系统构架17.2.1 系统构架17.2.2 实体类设计17.2.3 业务类实现17.2.4 Session Bean查找17.2.5 persistence.xml配置17.2.6 EJB3组件部署17.3 登录对话框17.3.1 登录对话框17.3.2 异常信息显示17.4 主购物窗口17.4.1 主购物窗口17.4.2 主购物窗口代码17.4.3 宠物列表Model17.4.4 添加宠物类别命令17.4.5 删除宠物类别命令17.4.6 添加宠物命令17.5 购买窗口17.5.1 购买对话框17.5.2 购物车对话框17.5.3 付款操作17.6 本章小结第18章 博客系统(Struts2+ Spring2+JPA)18.1 系统概述18.1.1 需求描述18.1.2 系统预览18.2 系统构架18.2.1 系统构架18.2.2 执行流程18.3 实体类设计18.3.1 基础实体BaseBean18.3.2 用户实体Person18.3.3 爱好实体Hobby18.3.4 博客实体Blog18.3.5 类别实体Category18.3.6 文章实体Post18.3.7 登录信息类PersonInfo18.3.8 persistence.xml18.4 业务模块设计18.4.1 DAO层接口18.4.2 DAO层实现18.4.3 公共Service层接口18.4.4 公共Service层实现18.4.5 用户Service接口18.5 用户模块18.5.1 BaseAction基础类18.5.2 用户注册18.5.3 struts.xml配置18.5.4 ApplicationContext.xml配置18.5.5 web.xml配置18.5.6 register.jsp18.5.7 header.jsp,footer.jsp18.5.8 注册表单验证18.5.9 异常处理18.5.10 用户照片文件上传18.5.11 用户登录注销18.6 博客模块18.6.1 开通博客18.6.2 浏览博客18.7 类别模块18.7.1 类别列表18.7.2 添加类别18.7.3 浏览类别18.8 文章模块18.8.1 列出文章18.8.2 添加文章18.8.3 浏览文章18.9 本章小结附录A JPA ORM Annotation参考附录B 其他的JPA Annotation参考