Table of contents
- HIBERNATE - 符合Java习惯的关系数据库持久化
- 前言
- 翻译说明
- 版权声明
- Hibernate入门
- 前言
- 第一部分 - 第一个Hibernate应用程序
- 第一个class
- 映射文件
- Hibernate配置
- 用Ant构建
- 启动和辅助类
- 加载并存储对象
- 第二部分 - 关联映射
- 映射Person类
- 单向Set-based的关联
- 使关联工作
- 值类型的集合
- 双向关联
- 使双向连起来
- 第三部分 - EventManager web应用程序
- 编写基本的servlet
- 处理与渲染
- 部署与测试
- 总结
- 体系结构(Architecture)
- 概况(Overview)
- 实例状态
- JMX整合
- 对JCA的支持
- 上下文相关的(Contextual)Session
- 配置
- 可编程的配置方式
- 获得SessionFactory
- JDBC连接
- 可选的配置属性
- SQL方言
- 外连接抓取(Outer Join Fetching)
- 二进制流 (Binary Streams)
- 二级缓存与查询缓存
- 查询语言中的替换
- Hibernate的统计(statistics)机制
- 日志
- 实现NamingStrategy
- XML配置文件
- J2EE应用程序服务器的集成
- 事务策略配置
- JNDI绑定的SessionFactory
- 在JTA环境下使用Current Session context (当前session上下文)管理
- JMX部署
- 持久化类(Persistent Classes)
- 一个简单的POJO例子
- 实现一个默认的(即无参数的)构造方法(constructor)
- 提供一个标识属性(identifier property)(可选)
- 使用非final的类 (可选)
- 为持久化字段声明访问器(accessors)和是否可变的标志(mutators)(可选)
- 实现继承(Inheritance)
- 实现equals()和hashCode()
- 动态模型(Dynamic models)
- 元组片断映射(Tuplizers)
- 对象/关系数据库映射基础(Basic O/R Mapping)
- 映射定义(Mapping declaration)
- Doctype
- EntityResolver
- hibernate-mapping
- class
- id
- Generator
- 高/低位算法(Hi/Lo Algorithm)
- UUID算法(UUID Algorithm )
- 标识字段和序列(Identity columns and Sequences)
- 程序分配的标识符(Assigned Identifiers)
- 触发器实现的主键生成器(Primary keys assigned by triggers)
- composite-id
- 鉴别器(discriminator)
- 版本(version)(可选)
- timestamp (可选)
- property
- 多对一(many-to-one)
- 一对一
- 自然ID(natural-id)
- 组件(component), 动态组件(dynamic-component)
- properties
- 子类(subclass)
- 连接的子类(joined-subclass)
- 联合子类(union-subclass)
- 连接(join)
- 键(key)
- 字段和规则元素(column and formula elements)
- 引用(import)
- any
- Hibernate 的类型
- 实体(Entities)和值(values)
- 基本值类型
- 自定义值类型
- 多次映射同一个类
- SQL中引号包围的标识符
- 其他元数据(Metadata)
- 使用 XDoclet 标记
- 使用 JDK 5.0 的注解(Annotation)
- 数据库生成属性(Generated Properties)
- 辅助数据库对象(Auxiliary Database Objects)
- 集合类(Collections)映射
- 持久化集合类(Persistent collections)
- 集合映射( Collection mappings )
- 集合外键(Collection foreign keys)
- 集合元素(Collection elements)
- 索引集合类(Indexed collections)
- 值集合于多对多关联(Collections of values and many-to-many associations)
- 一对多关联(One-to-many Associations)
- 高级集合映射(Advanced collection mappings)
- 有序集合(Sorted collections)
- 双向关联(Bidirectional associations)
- 双向关联,涉及有序集合类
- 三重关联(Ternary associations)
- 使用<idbag>
- 集合例子(Collection example)
- 关联关系映射
- 介绍
- 单向关联(Unidirectional associations)
- 多对一(many to one)
- 一对一(one to one)
- 一对多(one to many)
- 使用连接表的单向关联(Unidirectional associations with join tables)
- 一对多(one to many)
- 多对一(many to one)
- 一对一(one to one)
- 多对多(many to many)
- 双向关联(Bidirectional associations)
- 一对多(one to many) / 多对一(many to one)
- 一对一(one to one)
- 使用连接表的双向关联(Bidirectional associations with join tables)
- 一对多(one to many) /多对一( many to one)
- 一对一(one to one)
- 多对多(many to many)
- 更复杂的关联映射
- 组件(Component)映射
- 依赖对象(Dependent objects)
- 在集合中出现的依赖对象 (Collections of dependent objects)
- 组件作为Map的索引(Components as Map indices )
- 组件作为联合标识符(Components as composite identifiers)
- 动态组件 (Dynamic components)
- 继承映射(Inheritance Mappings)
- 三种策略
- 每个类分层结构一张表(Table per class hierarchy)
- 每个子类一张表(Table per subclass)
- 每个子类一张表(Table per subclass),使用辨别标志(Discriminator)
- 混合使用“每个类分层结构一张表”和“每个子类一张表”
- 每个具体类一张表(Table per concrete class)
- Table per concrete class, using implicit polymorphism
- 隐式多态和其他继承映射混合使用
- 限制
- 与对象共事
- Hibernate对象状态(object states)
- 使对象持久化
- 装载对象
- 查询
- 执行查询
- 迭代式获取结果(Iterating results)
- 返回元组(tuples)的查询
- 标量(Scalar)结果
- 绑定参数
- 分页
- 可滚动遍历(Scrollable iteration)
- 外置命名查询(Externalizing named queries)
- 过滤集合
- 条件查询(Criteria queries)
- 使用原生SQL的查询
- 修改持久对象
- 修改脱管(Detached)对象
- 自动状态检测
- 删除持久对象
- 在两个不同数据库间复制对象
- Session刷出(flush)
- 传播性持久化(transitive persistence)
- 使用元数据
- 事务和并发
- Session和事务范围(transaction scope)
- 操作单元(Unit of work)
- 长对话
- 关注对象标识(Considering object identity)
- 常见问题
- 数据库事务声明
- 非托管环境
- 使用JTA
- 异常处理
- 事务超时
- 乐观并发控制(Optimistic concurrency control)
- 应用程序级别的版本检查(Application version checking)
- 扩展周期的session和自动版本化
- 脱管对象(deatched object)和自动版本化
- 定制自动版本化行为
- 悲观锁定(Pessimistic Locking)
- 连接释放模式(Connection Release Modes)
- 拦截器与事件(Interceptors and events)
- 拦截器(Interceptors)
- 事件系统(Event system)
- Hibernate的声明式安全机制
- 批量处理(Batch processing)
- 批量插入(Batch inserts)
- 批量更新(Batch updates)
- StatelessSession (无状态session)接口
- DML(数据操作语言)风格的操作(DML-style operations)
- HQL: Hibernate查询语言
- 大小写敏感性问题
- from子句
- 关联(Association)与连接(Join)
- join 语法的形式
- select子句
- 聚集函数
- 多态查询
- where子句
- 表达式
- order by子句
- group by子句
- 子查询
- HQL示例
- 批量的UPDATE和DELETE
- 小技巧 & 小窍门
- 条件查询(Criteria Queries)
- 创建一个Criteria 实例
- 限制结果集内容
- 结果集排序
- 关联
- 动态关联抓取
- 查询示例
- 投影(Projections)、聚合(aggregation)和分组(grouping)
- 离线(detached)查询和子查询
- 根据自然标识查询(Queries by natural identifier)
- Native SQL查询
- 使用SQLQuery
- 标量查询(Scalar queries)
- 实体查询(Entity queries)
- 处理关联和集合类(Handling associations and collections)
- 返回多个实体(Returning multiple entities)
- 别名和属性引用(Alias and property references)
- 返回非受管实体(Returning non-managed entities)
- 处理继承(Handling inheritance)
- 参数(Parameters)
- 命名SQL查询
- 使用return-property来明确地指定字段/别名
- 使用存储过程来查询
- 使用存储过程的规则和限制
- 定制SQL用来create,update和delete
- 定制装载SQL
- 过滤数据
- Hibernate 过滤器(filters)
- XML映射
- 用XML数据进行工作
- 指定同时映射XML和类
- 只定义XML映射
- XML映射元数据
- 操作XML数据
- 提升性能
- 抓取策略(Fetching strategies)
- 操作延迟加载的关联
- 调整抓取策略(Tuning fetch strategies)
- 单端关联代理(Single-ended association proxies)
- 实例化集合和代理(Initializing collections and proxies)
- 使用批量抓取(Using batch fetching)
- 使用子查询抓取(Using subselect fetching)
- 使用延迟属性抓取(Using lazy property fetching)
- 二级缓存(The Second Level Cache)
- 缓存映射(Cache mappings)
- 策略:只读缓存(Strategy: read only)
- 策略:读/写缓存(Strategy: read/write)
- 策略:非严格读/写缓存(Strategy: nonstrict read/write)
- 策略:事务缓存(transactional)
- 管理缓存(Managing the caches)
- 查询缓存(The Query Cache)
- 理解集合性能(Understanding Collection performance)
- 分类(Taxonomy)
- Lists, maps 和sets用于更新效率最高
- Bag和list是反向集合类中效率最高的
- 一次性删除(One shot delete)
- 监测性能(Monitoring performance)
- 监测SessionFactory
- 数据记录(Metrics)
- 工具箱指南
- Schema自动生成(Automatic schema generation)
- 对schema定制化(Customizing the schema)
- 运行该工具
- 属性(Properties)
- 使用Ant(Using Ant)
- 对schema的增量更新(Incremental schema updates)
- 用Ant来增量更新schema(Using Ant for incremental schema updates)
- Schema 校验
- 使用Ant进行schema校验
- 示例:父子关系(Parent Child Relationships)
- 关于collections需要注意的一点
- 双向的一对多关系(Bidirectional one-to-many)
- 级联生命周期(Cascading lifecycle)
- 级联与未保存值(Cascades and unsaved-value)
- 结论
- 示例:Weblog 应用程序
- 持久化类
- Hibernate 映射
- Hibernate 代码
- 示例:复杂映射实例
- Employer(雇主)/Employee(雇员)
- Author(作家)/Work(作品)
- Customer(客户)/Order(订单)/Product(产品)
- 杂例
- "Typed" one-to-one association
- Composite key example
- 共有组合键属性的多对多(Many-to-many with shared composite key attribute)
- Content based discrimination
- Associations on alternate keys
- 最佳实践(Best Practices)