⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 用hibernate和spring开发事务持久层.htm

📁 在java中使用Hibernate和Spring开发事务持久层
💻 HTM
📖 第 1 页 / 共 4 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0053)http://www.javafan.net/article/20041223180912482.html -->
<HTML><HEAD><TITLE>用Hibernate和Spring开发事务持久层</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content=免费Java教程下载,Java电子书籍,Java技术文章,Hibernate,Spring,事务持久层 
name=keywords><LINK href="用Hibernate和Spring开发事务持久层.files/style.css" 
rel=stylesheet>
<STYLE>TD {
	FONT-SIZE: 13px; COLOR: #646464; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
</STYLE>

<SCRIPT>
function fontZoom(size)
{
 document.getElementById('fontzoom').style.fontSize=size+'px'
}
</SCRIPT>

<META content="MSHTML 6.00.2600.0" name=GENERATOR></HEAD>
<BODY>
<TABLE cellSpacing=0 cellPadding=0 width=751 align=center border=0>
  <TBODY>
  <TR>
    <TD><IMG height=75 src="用Hibernate和Spring开发事务持久层.files/u_11.gif" 
    width=751></TD></TR>
  <TR>
    <TD vAlign=top background=用Hibernate和Spring开发事务持久层.files/u_bg.gif><BR>
      <DIV align=right>页面功能&nbsp; 【<A 
      href="javascript:window.external.AddFavorite(location.href,document.title+'--www.JavaFan.NET');">加入收藏</A>】 
      【<A 
      onclick="window.open(this.href,'','top=180,left=240,width=342,height=326,scrollbars=yes,resizable=no');return false;" 
      href="http://www.javafan.net/sendarticle.jsp?title=用Hibernate和Spring开发事务持久层&amp;URL=20041223180912482">推荐给朋友</A>】 
      【字体:<A class=black href="javascript:fontZoom(15)">大</A>&nbsp;<A 
      class=black href="javascript:fontZoom(13)">中</A>&nbsp;<A class=black 
      href="javascript:fontZoom(12)">小</A>】 【<A class=black 
      href="javascript:window.close()">关闭</A>】&nbsp;&nbsp;&nbsp; </DIV>
      <TABLE cellSpacing=0 cellPadding=0 width=740 align=center border=0>
        <TBODY>
        <TR>
          <TD vAlign=top align=right>
            <TABLE cellSpacing=0 cellPadding=0 width=730 border=0>
              <TBODY>
              <TR>
                <TD><IMG height=11 
                  src="用Hibernate和Spring开发事务持久层.files/u_14.gif" width=10></TD>
                <TD style="BORDER-TOP: #e8e8e8 1px solid" bgColor=#f9f9f9><IMG 
                  height=1 src="" width=1></TD>
                <TD><IMG height=11 
                  src="用Hibernate和Spring开发事务持久层.files/u_15.gif" width=10></TD>
                <TD vAlign=top width=8 rowSpan=3><BR><IMG height=136 
                  src="用Hibernate和Spring开发事务持久层.files/u_13.gif" width=8></TD></TR>
              <TR>
                <TD 
                style="BORDER-RIGHT: #e8e8e8 1px solid; BORDER-LEFT: #e8e8e8 1px solid" 
                align=middle bgColor=#f9f9f9 colSpan=3>
                  <TABLE style="WORD-BREAK: break-all" cellSpacing=0 
                  cellPadding=0 width=700 align=center border=0>
                    <TBODY>
                    <TR>
                      <TD align=middle height=25><FONT face=黑体 size=4>用 
                        Hibernate 和 Spring 开发事务持久层</FONT></TD></TR>
                    <TR bgColor=#f9f9f9>
                      <TD id=fontzoom style="LINE-HEIGHT: 200%">
                        <P align=center>作者:Richard 
                        &nbsp;&nbsp;&nbsp;&nbsp;来自:IBM</P>
                        <P>  当您自以为已经了解了所有开发工具时,肯定又会冒出一个新的工具。在本文中,developerWorks 
                        的固定撰稿人 Rick Hightower 用一个真实世界的例子向您介绍两个最激动人心的企业新技术。<A 
                        href="http://www.javafan.net/special/hibernate/index.jsp" 
                        target=_blank>Hibernate</A> 是一个对象关系映射工具,而 <A 
                        href="http://www.javafan.net/special/spring/index.jsp" 
                        target=_blank>Spring</A> 是一个 AOP 框架和 IOC 容器。Rick 
                        介绍了如何结合这两者,为企业应用程序构建一个事务持久层。</P>
                        <P>  如果关心开发人员的最新热点,那么您可能听说过 IOC (控制倒置,Inversion of 
                        Control)容器和 AOP 
                        (面向方面编程)。不过,像许多开发人员一样,您可能不清楚在自己的开发工作中如何使用这些技术。在本文中,通过具体介绍使用 
                        Hibernate 和 Spring 在企业应用程序中构建一个事务持久层,您会认识到这些技术。</P>
                        <P>  Hibernate 是 Java 
                        平台上的一种流行的、容易使用的开放源代码对象关系(OR)映射框架。Spring 是一个 AOP 框架和 IOC 
                        容器。这两种技术一起提供了本文中介绍的开发工作的基础。将使用 Hibernate 
                        把一些持久性对象映射到关系数据库中,用 Spring 使 Hibernate 
                        更容易使用并提供声明性事务支持。由于为示例类编写测试代码时使用了 DbUnit,我还附带介绍了一点 TDD 
                        (测试驱动的开发)的内容。</P>
                        <P>  注意,本文假定读者熟悉 Java 平台上的企业开发,包括 JDBC、OR 映射内容、J2EE 
                        设计模式如 DAO,以及声明性事务支持,如 Enterprise JavaBean 
                        (EJB)技术所提供的事务支持。理解这里的讨论不需要成为这些技术的专家,也不需要熟悉 AOP、IOC 或者 
                        TDD,因为在本文中对这三者都做了介绍。</P>
                        <P>  我将首先介绍两种开发技术,然后分析例子。</P>
                        <P>  <STRONG>Hibernate 简介</STRONG> </P>
                        <P>  Hibernate 是 Java 平台上的一种全功能的、开放源代码 OR 映射框架。Hibernate 
                        在许多方面类似于 EJB CMP CMR (容器管理的持久性/容器管理的关系)和 JDO(Java Data 
                        Objects)。与 JDO 不同,Hibernate 完全着眼于关系数据库的 OR 
                        映射,并且包括比大多数商业产品更多的功能。大多数 EJB CMP CMR 解决方案使用代码生成实现持久性代码,而 
                        JDO 使用字节码修饰。与之相反,Hibernate 
                        使用反射和运行时字节码生成,使它对于最终用户几乎是透明的(以前 Hibernate 
                        的实现只使用反射,它有助于调试,当前版本保留了这种选项)。</P>
                        <P>  移植基于 Hibernate 的应用程序</P>
                        <P>  如果应用程序必须在多个 RDBMS 系统上运行 ,那么基于 Hibernate 
                        的应用程序可以毫不费力地移植到 IBM 
                        DB2、MySQL、PostgreSQL、Sybase、Oracle、HypersonicSQL 
                        和许多其他数据库。我最近甚至将一个应用程序从 MySQL 移植到 Hibernate 没有很好支持的 
                        Firebird,而这种移植是很容易的。<BR>Hibernate 
                        可以模拟继承(有几种方式)、关联(一对一或者一对多、containment 和 aggregation)和 
                        composition。我将在本文中讨论每种关系类型的几个例子。</P>
                        <P>  Hibernate 提供了一种称为 Hibernate Query Language (HQL) 的 
                        查询语言,它类似于 JDO 的 JDOQL 和 EJB 的 EJB QL,尽管它更接近于前者。但是 
                        Hibernate 没有就此止步:它还可以进行直接的 SQL 查询和/或使用 object criteria 
                        很容易地在运行时构成查询条件。在本文的例子中我将只使用 HQL。</P>
                        <P>  与 EJB CMP CMR 不同,Hibernate 像 JDO 一样可以在 J2EE 
                        容器内部或者外部工作,这可以让那些进行 TDD 和敏捷开发的人受益。</P>
                        <P>  <STRONG>Spring 简介</STRONG></P>
                        <P>  AOP 专家 Nicholas Lesiecki 第一次向我解释 AOP 
                        时,他说的我一个词也没理解,我觉得就像第一次考虑使用 IOC 
                        容器的可能性时一样。每一种技术的概念基础本身就需要很好地消化,每一种技术所使用的各种各样的缩写让事情更糟了——特别是其中许多术语与我们已经使用的根本不一样了。 
                        </P>
                        <P>  像许多技术一样,理解这两种技术的实际使用比学习理论更容易。经过自己对 AOP 和 IOC 容器实现(即 
                        XWork、PicoContainer 和 
                        Spring)的分析,我发现这些技术可以帮助我获得功能,而不会在多框架中添加基于代码的依赖性。它们都将成为我后面开发项目的一部分。</P>
                        <P>  简单地说,AOP 
                        让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。使用 AOP 
                        后,公共服务(比如日志、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。</P>
                        <P>  IOC 允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如单词 倒置 
                        所表明的,IOC 就像反过来的 
                        JNDI。没有使用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straight 
                        construction),每一个对象都是用其协作对象构造的。因此是由容器管理协作对象(collaborator)。</P>
                        <P>  Spring 既是一个 AOP 框架、也是一个 IOC 容器。我记得 Grady Booch 
                        说过,对象最好的地方是可以替换它们,而 Spring 最好的地方是它有助于您替换它们。有了 Spring,只要用 
                        JavaBean 
                        属性和配置文件加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类似接口的协作对象。</P>
                        <P>  Spring 为 IOC 容器和 AOP 提供了很好的入口(on-ramp)。因此,不需要熟悉 AOP 
                        就可以理解本文中的例子。所需要知道的就是将要用 AOP 为示例应用程序声明式地添加事务支持,与使用 EJB 
                        技术时的方式基本相同。</P>
                        <P>  <STRONG>具体到业务</STRONG></P>
                        <P>  在本文的其余部分,所有的讨论都将基于一个实际的例子。起点是一个企业应用程序,要为它实现一个事务持久层。持久层是一个对象关系数据库,它包括像 
                        User、User Group、Roles 和 ContactInfo 这些熟悉的抽象。</P>
                        <P>  在深入到数据库的要素——查询和事务管理——之前,需要建立它的基础:对象关系映射。我将用 
                        Hibernate 设置它,并只使用一点 Spring。</P>
                        <P>  <STRONG>用 Hibernate 进行 OR 映射</STRONG> </P>
                        <P>  Hibernate 使用 XML (*.hbm.xml) 文件将 Java 类映射到表,将 
                        JavaBean 属性映射到数据库表。幸运的是,有一组 XDoclet 标签支持 Hibernate 
                        开发,这使得创建所需要的 *.hbm.xml 文件更容易了。清单 1 中的代码将一个 Java 
                        类映射到数据库表。</P>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -