HIBERNATE-符合Java习惯的关系数据库持久化Hibernate2参考文档2.1.2TableofContents前言1.在Tomcat中快速上手1.1.开始Hibernate之旅1.2.第一个可持久化类1.3.映射cat1.4.与猫同乐1.5.结语2.体系结构2.1.总览2.2.持久化对象标识(PersistentObjectIdentity)2.3.JMX集成2.4.JCA支持3.SessionFactory配置3.1.可编程配置方式3.2.获取SessionFactory3.3.用户自行提供JDBC连接3.4.Hibernate提供的JDBC连接3.5.其它配置属性3.5.1.SQLDialectsSQL方言3.5.2.外连接抓取(OuterJoinFetching)3.5.3.二进制流3.5.4.在控制台记录SQL3.5.5.自定义ConnectionProvider3.5.6.常用数据库属性3.5.7.自定义CacheProvider3.5.8.事务策略3.5.9.绑定SessionFactory到JNDI3.5.10.查询语言替换3.6.XML配置文件3.7.Logging3.8.NamingStrategy(命名策略)4.持久化类(PersistentClasses)4.1.简单示例4.1.1.为持久化字段声明访问器(accessors)和是否可变的标志(mutators)4.1.2.实现一个默认的构造方法(constructor)4.1.3.提供一个标识属性(identifierproperty)(可选)4.1.4.建议使用不是final的类(可选)4.2.继承(Inheritance)4.3.持久化生命周期(Lifecycle)中的回调(Callbacks)4.4.合法性检查(Validatable)4.5.XDoclet示例5.O/RMapping基础5.1.映射声明(Mappingdeclaration)5.1.1.Doctype5.1.2.hibernate-mapping5.1.3.class5.1.4.id5.1.4.1.generator5.1.4.2.高/低位算法(Hi/LoAlgorithm)5.1.4.3.UUID算法(UUIDAlgorithm)5.1.4.4.标识字段和序列(IdentityColumnsandSequences)5.1.4.5.程序分配的标识符(AssignedIdentifiers)5.1.5.composite-id联合ID5.1.6.识别器(discriminator)5.1.7.版本(version)(可选)5.1.8.时间戳(timestamp)(可选)5.1.9.property5.1.10.多对一(many-to-one)5.1.11.一对一5.1.12.组件(component),动态组件(dynamic-component)5.1.13.子类(subclass)5.1.14.连接的子类(joined-subclass)5.1.15.map,set,list,bag5.1.16.引用(import)5.2.Hibernate的类型5.2.1.实体(Entities)和值(values)5.2.2.基本值类型5.2.3.持久化枚举(Persistentenum)类型5.2.4.自定义值类型5.2.5.映射到任意(any)类型5.3.SQL中引号包围的标识符5.4.自定义DDL5.5.映射文件的模块化(Modularmappingfiles)6.集合类(Collections)6.1.持久化集合类(PersistentCollections)6.2.映射集合(MappingaCollection)6.3.值集合和多对多关联(CollectionsofValuesandManyToManyAssociations)6.4.一对多关联(OneToManyAssociations)6.5.延迟初始化(延迟加载)(LazyInitialization)6.6.集合排序(SortedCollections)6.7.对collection排序的其他方法(OtherWaysToSortaCollection)6.8.垃圾收集(GarbageCollection)6.9.双向关联(BidirectionalAssociations)6.10.三重关联(TernaryAssociations)6.11.异类关联(HeterogeneousAssociations)6.12.集合例子(CollectionExample)6.13.idbag7.组件(Components)7.1.作为依赖的对象(AsDependentObjects)7.2.InCollections7.3.作为一个Map的索引(AsaMapIndex)7.4.作为联合标识符(AsCompositeIdentifiers)7.5.动态组件(Dynamiccomponents)8.操作持久化数据(ManipulatingPersistentData)8.1.创建一个持久化对象8.2.装载对象8.3.Querying8.3.1.标量查询(Scalarquery)8.3.2.查询接口(Queryinterface)8.3.3.可滚动迭代(Scrollableiteration)8.3.4.过滤集合类(Filteringcollections)8.3.5.条件查询8.3.6.使用本地SQL的查询8.4.更改在当前session中保存或者装载的对象8.5.更改在以前session中保存或者装载的对象8.6.把在先前的session中保存或装载的对象重新与新session建立关联(reassociate)8.7.删除持久化对象8.8.对象图(Graphsofobjects)8.8.1.自动管理生命周期的对象(lifecycleobject)8.8.2.通过可触及性决定持久化(PersistencebyReachability)8.9.清洗(Flushing)--这个词很难翻译,不能使用“刷新”,因为刷新一词已经被refresh使用了。有什么好的建议?8.10.结束一个Session8.10.1.清洗(Flush)session8.10.2.提交事务8.10.3.关闭session8.10.4.处理异常8.11.拦截器(Interceptors)8.12.元数据(Metadata)API9.父子关系(ParentChildRelationships)9.1.关于collections9.2.双向的一对多关系(Bidirectionalonetomany)9.3.级联(Cascades)9.4.级联更新(Usingcascadingupdate())9.5.结论10.Hibernate查询语言(QueryLanguage),即HQL10.1.大小写敏感性(CaseSensitivity)10.2.from子句10.3.联合(Associations)和连接(joins)10.4.select子句10.5.统计函数(Aggregatefunctions)10.6.多态(polymorphism)10.7.where子句10.8.表达式(Expressions)10.9.orderby子句10.10.groupby子句10.11.子查询10.12.示例10.13.提示和技巧(Tips&Tricks)11.实例(AWorkedExample)11.1.持久化类11.2.Hibernate映射11.3.Hibernate代码12.性能提升(ImprovingPerformance)12.1.用于延迟装载的代理12.2.第二层缓存(TheSecondLevelCache)s12.2.1.映射(Mapping)12.2.2.只读缓存12.2.3.读/写缓存12.2.4.不严格的读/写缓存12.2.5.事务缓存(transactional)12.3.管理Session缓存12.4.查询缓存(QueryCache)13.理解集合类的性能(UnderstandingCollectionPerformance)13.1.分类(Taxonomy)13.2.Lists,maps和sets用于更新效率最高13.3.Bag和list是反向集合类中效率最高的13.4.一次性删除(Oneshotdelete)14.条件查询(CriteriaQuery)14.1.创建一个Criteria实例14.2.缩小结果集范围14.3.对结果排序14.4.关联(Associations)14.5.动态关联对象获取(Dynamicassociationfetching)14.6.根据示例查询(Examplequeries)15.SQL查询15.1.创建一个基于SQL的Query15.2.别名和属性引用15.3.为SQL查询命名16.继承映射(InheritanceMappings)16.1.三种策略16.2.限制17.事务和并行(TransactionsAndConcurrency)17.1.配置,会话和工厂(Configurations,SessionsandFactories)17.2.线程和连接(Threadsandconnections)17.3.乐观锁定/版本化(OptimisticLocking/Versioning)17.3.1.使用长生命周期带有自动版本化的会话17.3.2.使用带有自动版本化的多个会话17.3.3.应用程序自己进行版本检查17.4.会话断开连接(Sessiondisconnection)17.5.悲观锁定(PessimisticLocking)18.映射实例(MappingExamples)18.1.雇员/雇主(Employer/Employee)18.2.作者/著作(Author/Work)18.3.客户/订单/产品(Customer/Order/Product)19.工具箱指南19.1.Schema生成器(SchemaGeneration)19.1.1.对schema定制化(Customizingtheschema)19.1.2.运行该工具19.1.3.属性(Properties)19.1.4.使用Ant(UsingAnt)19.1.5.对schema的增量更新(Incrementalschemaupdates)19.1.6.用Ant来增量更新schema(UsingAntforincrementalschemaupdates)19.2.代码生成(CodeGeneration)19.2.1.配置文件(可选)19.2.2.meta属性19.2.3.基本的finder生成器(Basicfindergenerator)19.2.4.基于Velocity的渲染器/生成器(Velocitybasedrenderer/generator)19.3.映射文件生成器(MappingFileGeneration)19.3.1.运行此工具20.最佳实践(BestPractices)前言在今日的企业环境中,把面向对象的软件和关系数据库一起使用可能是相当麻烦、浪费时间的。Hibernate是一个面向Java环境的对象/关系数据库映射工具。对象/关系数据库映射(object/relationalmapping(ORM))这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型结构中去。Hibernate不仅仅管理Java类到数据库表的映射,还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间。Hibernate的目标是对于开发者通常的数据持久化相关的编程任务,解放其中的95%。如果你对Hibernate和对象/关系数据库映射还是个新手,或者甚至对Java也不熟悉,请按照下面的步骤来学习。阅读这个30分钟就可以结束的Chapter1,在Tomcat中快速上手,它使用Tomcat。