如今,hibernate正在迅速成为非常流行的(如果不是最流行的)j2ee o/r映射程序/数据集成框架。它为开发人员提供了处理企业中的关系数据库的整洁、简明且强大的工具。 但如果外部需要访问这些已被包装在j2ee web应用程序中的实体又该怎么办?是开发独立但相同的实体来访问数据,还是另外编写web组件来管理内部访问的数据? 在某种程度上,这些问题是一定会发生的,对于我来说,当我的公司要向数据库中加载来自多个供应商的多种文件格式的记录时,就出现了这些问题。我考虑过以前常用的方法:用shell和sql脚本(甚至存储过程)来加载数据。但由于数据模型过于复杂,我决定尽量利用现有的实体、spring dao以及web应用程序之外的服务,并开发定制的j2se命令行数据加载程序。 重要问题:我们是否应该这样做? 目前与hibernate有关的大部分文档和例子都基于在容器中使用hibernate...
爱因斯坦曾经说过:"每件事物都应该尽可能简单,而不是更简单"。的确,对科学真理的追求都是为了简化理论的根本假设,这样我们才能处理真正麻烦的问题。企业级软件的开发也是这样的。 简化企业级软件开发的关键是提供一个隐藏了复杂性(例如事务、安全性和永续性)的应用框架。良好设计的框架组件可以提升代码的重复使用(reuse)能力,提高开发效率,从而得到更好的软件质量。但是,目前j2ee 1.4中的ejb 2.1框架组件被人们普遍认为是设计较差的和过于复杂的。java开发者对ejb 2.1很不满,他们已经试验了多种其它的用于中间件服务传送的方法。最引人注目的,下面两个框架组件已经引起开发者的巨大兴趣和积极的反映。它们很可能成为未来企业级java应用程序可供选择的框架组件。 · spring框架组件是一个流行的,但是非标准的开放源代码框架组件。它主要是由interface21 inc.公司开发和控制的...
一)hibernate意义 在一个真正的ooad中,我们的设计首先是做uml建摸,最终将一个系统涉及所有对象(这个东西不是东西那么简单)用类图来体现一个完整的设计,我们最后可能得到这几种类:控制业务逻辑的类,保存业务数据的类module(bean类),辅助类或者更多(具体问题具体分析,但是将业务所需数据归结为一个类module更适合分层)。到数据库低层实现的时候, 为了获取数据或者存储数据,你不得不为此加上一个操作数据库的控制逻辑,到此,你完美的设计估计会为此付出巨大的努力,因为你看到的业务数据层是一个复杂的模块,即使从面向对象观点来看,我们uml类图中的,业务数据层只是一个数据模块。hibernate已经帮我们解决了业务数据层这个本来十分复杂的模块的底层实现,现在,我们只要在外层裹上我们的代表数据的类即可。 二)对象模型与关系数据库模型差异 在写出我初探hibernate的感受之前,我觉...
今天,面向方面的程序设计(aspect-oriented programming,aop) 框架试图在企业环境中获得立足之地。这些框架为了得到普遍采用,必须与企业系统中已经在使用的其他框架良好地集成。 本文向开发人员展示了,如何将aspectwerkz aop框架与一些现在常用的框架(如log4j、atlassian 性能剖析器、hibernate和tapestry)相集成。 本文从一个现有的tapestry web应用程序开始。这个应用程序实现两个单独的关注点:日志记录和性能剖析。每个项目都有这些需求,许多项目用log4j做日志记录而用atlassian剖析器框架做性能分析。然后最初的非aop实现被重构,以便使用aspectwerkz框架来分离每个关注点的实现。产生的应用程序代码将会更简单,更容易维护,而最重要的是,更自然,表达能力更强。 本文中描述的所有应用程序和源代码都可以下载得...
下篇:可管理的pojo持久性 在java虚拟机(jvm)里面,所有数据都被建模,并且被封装在树结构的类和对象中。然而,在后端关系数据库中,数据被建模成关系表,它们通过共享的键字段相互关联起来。 同一数据却有两个不同的视图,这给企业java的开发人员带来了挑战:如果你要把数据保存到持久性数据存储区,或者从持久性数据存储区获取数据,就必须在对象和关系表示之间来回转换数据,这个过程就叫作对象-关系映射(orm)。在java ee(java企业版,以前叫j2ee)中,可以通过两个方法来完成对象-关系映射。 ● 人工方法:使用java数据库连接性(jdbc)直接处理持久性——这个简单的解决方法适用于简单的应用程序。jdbc api的类紧密地按照关系数据库里面的表、行和列进行建模。但必须在应用程序的内部对象模型和jdbc对象模型之间进行人工转换,如果应用程序的内部模型已经类似二维关系表,采用jdbc是...
一.基本概念 po是持久化对象,它只是对物理数据实体的一种对象表示。 vo是值对象,准确地讲,它是业务对象。 formbean只是html表单的封装,起到在控制层弱化的request中存储数据的作用,将request的get方法转 变为对象的存取值。 二.缓存策略比较jive 1.jive的缓存策略的过程描述: (1)条件查询的时候,jive用selectidfromtable_namewhere….(只选择id字段)这样的sql语句查询数据库,来获得一个id列表。 (2)jive根据id列表中的每个id,首先查看缓存中是否存在对应id的数据对象:如果存在,那么直接取出,加入到结果列表中;如果不存在,那么通过一条select*fromtable_namewhereid={idvalue}这样的sql查询数据库,取出对应的数据对象,放入到结果列表,并把这个数据对象按照id放入到缓存中。 (3...
hibernate的jndi名称绑定是在net.sf.hibernate.impl.sessionfactoryobjectfactory程序里面实现的,我来分析一下hibernate的绑定jndi的过程: 我们获得sessionfactory一般是这样写代码:configuration conf = new configuration().addclass(cat.class);sessionfactory sf = conf.buildsessionfactory(); 首先是new configuration()创建一个configuration,在这个构造器里面进行配置文件(hibernate.properties)的读取工作,然后保存到一个properties对象里面去,和jndi相关的是这个属性:hibernate.session_factory_name hibernat...
缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。 缓存的介质一般是内存,所以读写速度很快。但如果缓存中存放的数据量非常大时,也会用硬盘作为缓存介质。缓存的实现不仅仅要考虑存储的介质,还要考虑到管理缓存的并发访问和缓存数据的生命周期。 hibernate的缓存包括session的缓存和sessionfactory的缓存,其中sessionfactory的缓存又可以分为两类:内置缓存和外置缓存。session的缓存是内置的,不能被卸载,也被称为hibernate的第一级缓存。sessionfactory的内置缓存和session的缓存在实现方式上比较相似,前者是sessionfactory对象的一些集合属性包...
hibernate 是一个流行的开源对象关系映射工具,单元测试和持续集成的重要性也得到了广泛的推广和认同,在采用了hibernate的项目中如何保证测试的自动化和持续性呢? 本文讨论了hibernate加载其配置文件hibernate.properties和hibernate.cfg.xml的过程,以及怎么样将hibernate提供的配置文件的访问方法灵活运用到单元测试中。 介绍 hibernate 是一个流行的开源对象关系映射工具,单元测试和持续集成的重要性也得到了广泛的推广和认同,在采用了hibernate的项目中如何保证测试的自动化和持续性呢?本文讨论了hibernate加载其配置文件hibernate.properties和hibernate.cfg.xml的过程,以及怎么样将hibernate提供的配置文件的访问方法灵活运用到单元测试中。注意:本文以hibernate2.1作为...
对象-关系映射(o/r映射)是许多软件开发项目的常见需求。数据持久化过程中所涉及到的活动是非常乏味且易于出错的。如果考虑到不可避免的需求变化,我们就面临很大的麻烦:数据存储结构必须与源代码保持同步。再加上移植性问题,事情就变得非常复杂。 而hibernate可以帮助我们轻松地在永久性存储介质中保存数据,而不需要在选择存储、安装或配置类型方面浪费太多精力。hibernate允许我们存储任何类型的对象,因此,应用程序不需要知道其数据将使用hibernate进行持久化。当然,这里提到的任何事情都可以逆向应用:现在从存储器获取已经准备好的对象是很平常的事情。更新和删除数据也是如此。 开始之前 在开始之前,您需要hibernate的发行版,可以在hibernate web站点(www.hibernate.org)上找到它。我们将使用2.0.3版本。对于数据库,我们将使用hypersonic s...
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器