- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Hibernate和Tomcat
335
第二十五章 Tomcat与Hibernate
Hibernate是一个面向Java环境的对象/关系数据库映射工具。对象/关系数据库映射
(object/relational mapping(ORM))这个术语表示一种技术,用来把对象模型表示的对象
映射到基于SQL的关系模型数据结构中去。
25.1 Hibernate技术简介
Hibernate对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用
对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的
客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可
以在应用EJB的J2EE架构中取代CMP(Container managed persistence,EJB的一种),完成
数据持久化的重任。
Hibernate不仅仅管理Java类到数据库表的映射(包括Java数据类型到SQL数据类型的映
射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和JDBC处
理数据的时间。
Hibernate的目标是对于开发者通常的数据持久化相关的编程任务,解放其中的95%。对
于以数据为中心的程序来说,它们往往只在数据库中使用存储过程来实现商业逻辑,
Hibernate可能不是最好的解决方案;对于那些在基于Java的中间层应用中,它们实现面向对
象的业务模型和商业逻辑的应用,Hibernate是最有用的。不管怎样,Hibernate一定可以帮助
开发者消除或者包装那些针对特定厂商的SQL代码,并且帮助开发者把结果集从表格式的表
示形式转换到一系列的对象去。
然而Hibernate不是一种强迫性的解决方案。开发者在写业务逻辑与持续性类时,不会
被要求遵循许多Hibernate特定的规则和设计模式。这样,Hibernate就可以与大多数新的和现
有的应用平稳地集成,而不需要对应用的其余部分作破坏性的改动。
Hibernate本身是个独立的框架,它不需要任何web server或application server的支持。在
后面的几节中先简单介绍Hibernate能干什么,然后将Hibernate与Tomcat进行集成开发。
从这图25.1可以看出,Hibernater使用数据库和配置信息来为应用程序提供持久化服务
(以及持久的对象)。
下面更详细地看一下Hibernate运行时体系结构。由于Hibernate非常灵活,且支持数种应
用方案,所以这里只描述两种极端的情况。“轻型”的体系结构方案,要求应用程序提供
自己的JDBC 连接并管理自己的事务。这种方案使用了Hibernate API的最小子集,此时,
Hibernate在应用程序中的作用如图25.2。
336
图25.1 Hibernater体系结构 图25.2 轻型Hibernate运行体系结构
“全面解决”的体系结构方案,将应用层从底层的JDBC/JTA API中抽象出来,而让
Hibernate来处理这些细节。如图25.3。
图25.3 “全面解决”的体系结构
图25.3中各个对象的定义如下:
SessionFactory (org.hibernate.SessionFactory):针对单个数据库映射关系经过编译后
的内存镜像,它也是线程安全的(不可变)。它是生成Session的工厂,本身要用到
ConnectionProvider。该对象可以在进程或集群的级别上,为那些事务之间可以重用
的数据提供可选的二级缓存。
Session(org.hibernate.Session):表示应用程序与持久储存层之间交互操作的一个单
线程对象,此对象生存期很短。它隐藏了JDBC连接,也是Transaction的工厂。会持
有一个针对持久化对象的必选(第一级)缓存,在遍历对象图或者根据持久化标识
查找对象时会用到。
持久的对象及其集合:带有持久化状态的、具有业务功能的单线程对象,此对象生
存期很短。这些对象可以是普通的JavaBeans或者POJO(Plain Old Java Objects ,
就是POJOs,有时候也称作Plain Ordinary Java Objects,一个POJO很像JavaBean),
比较特殊的是它们正与一个(仅仅一个)Session相关联。这个Session被关闭的同时,
这些对象也会脱离持久化状态,可以被应用程序的任何层自由使用。(例如,用于
跟表示层打交道的数据传输对象data transfer object。)
瞬态(transient)以及脱管(det
您可能关注的文档
- Evolution in invasive plants implications for biological control.pdf
- EVQ-P7A01K;EVQ-P7B01K;EVQ-P7J01K;EVQ-P7L01K;EVQ-P7M01K;中文规格书,Datasheet资料.pdf
- evolution of the Gongshan block in the northern Indochina continent—An eastern extension of the Lha.pdf
- EVQ-Q2S01W;EVQ-Q2U01W;EVQ-Q2Y01W;EVQ-Q2B01W;EVQ-Q2F01W;中文规格书,Datasheet资料.pdf
- Exactly Solvable Single Lane Highway Traffic Model With Tollbooths.pdf
- Examining smart-card security under the threat of power analysis attacks.pdf
- EXAMPLES AND CAUSE FOR DIFFERECES BETWEEN HIGH-CONTEXT AND LOW-CONTEXT CULTURE.ppt
- EXCEL 教程34章.pdf
- except_but_besides_except_for_区别.ppt
- Exchange and the Coulomb blockade Peak height statistics in quantum dots.pdf
文档评论(0)