EJB怎样实现的实体对.doc

EJB怎样实现的实体对.doc

ID:54861861

大小:29.50 KB

页数:9页

时间:2020-04-23

EJB怎样实现的实体对.doc_第1页
EJB怎样实现的实体对.doc_第2页
EJB怎样实现的实体对.doc_第3页
EJB怎样实现的实体对.doc_第4页
EJB怎样实现的实体对.doc_第5页
资源描述:

《EJB怎样实现的实体对.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、个人收集整理,勿做商业用途简介:本文探讨了关系数据库中的实体对象在面向对象语言中如何抽象、实现,并提出一种实现方案。一、为什么要使用实体对象的概念实体对象指的是可永久存储的数据对象,通常可以用关系数据库的一张数据表或一张主表和与之连接的几张子表来表示。为什么要引入实体对象的概念呢?我可以肯定您是看过关于面向对象优点的长篇大论的,不过我觉得有必要再唠叨两句,因为不是所有用或编程的人都是使用面向对象的方式想问题的。在现实世界中,对象比它的属性要稳定,所以数据要抽象成对象。比如由于需求的修改,一个图书管理系统要显示更多的书目详细信息,图书的属性发生了变化,而图书这个对象并没有变,和其他对象

2、(例如书架、借阅者)之间的关系也没有变。用一个数据对象来保存书目信息的程序修改起来要简单的多。把实体对象如何永久储存的方法封装到对象中可以实现使用对象的外部程序的与数据库无关,便于程序的移植。在程序设计中使用实体对象概念把面向对象分析、面向对象设计、面向对象编码着几个步骤连贯和一致。可以减少外部程序中复杂性,使用这些实体对象的程序只需要简单的调用()或()的方法,而不用去写讨厌的语句。但是,由于历史原因,即使象这样的新兴语言,也没有在所有地方完全利用面向对象的思想。让我们看看吧,这是一个号称用对象封装的数据库接口。可是它封装的是什么呢?连接、语句、结果集和存储过程。这其实并不是我们设

3、计系统所关心的东西,我们关心的是数据对象本身,而不是它从数据库中提取的方法。当然,本身也不该受到太多的指责,因为他本来的目标就是封装、屏蔽关系型数据库之间的差异,而不是企图实现一个面向对象的数据库。第一次引起我的注意就是因为它提出的,也就是实体对象。它对实体对象提供了一套完整的实现思路,但是我认为它太复杂了,主要原因是想要做的事太多了。大部分情况下我并不需要分布式处理,我也不需要把实体对象存储到文件中去。我需要的仅仅是在一个本地运行的基于数据库的程序。二、如何实现的实体对象刚才提到了已经实现了实体对象,那么让我们看看它是如何实现的。中的对象实际上是对数据对象的一种完美的抽象,在这里我

4、们几乎看不到数据库管理系统的作用。一个实体对象有几种状态,在内存中、在磁盘缓存中、或者在数据库中,实体对象的这些状态通常我们是不关心的,的容器在必要的情况下会自动转换对象的状态,也就是说自动把它存到数据库中,或从数据库中取出。我们要访问一个数据对象,要向一个对象容器提出申请,由它返回一个对象实例供我们使用。一个对应于数据表中的一行。如果我们访问的是同一行数据,对象容器返回的是不同的对象,但都指向同一个,并把我们所有的方法请求都发送给这个。实际上的容器基本实现了一个面向对象的数据库。它这种实现方法带来几个显著的问题:运行效率非常低。的速度慢是个老问题了,的速度慢不光是因为大量代码用实现

5、,而且由于它的结构,要根据数据表中的某一个属性查出一行数据,必须首先用查询查找到这一行的主键(9/9个人收集整理,勿做商业用途),然后通过主键来找到这个,如果这个不在内存中很不幸,这种情况经常发生,那么实际上是执行了两次查询才找到一行数据。容器本身要管理事务,以防数据的污读、污写、死锁等等一系列问题。本来管理这类问题已经有很多年经验了,已经相当完美的解决了这些问题,可是不得不通过一个来管理这些问题。这使得容器的代码变得极其复杂,另外编程人员也不得不重新熟悉这些接口。由于中的数据是否存储在数据库里是由容器管理的,那么其他程序访问数据库会带来数据同步的问题。因此,在架构中,外部程序不能直

6、接访问数据库,只能通过访问。三、我们实现的目标我们只想把数据库对象更好的封装起来,为什么要购买别人昂贵的代码?为什么要为我们不会用到的分布式去牺牲大量的性能。我们想要尽量使用的功能,以实现最佳的性能和最简化的代码。事务处理最好还是用来管理,因为它一向管得很好,而且事务处理的代码很复杂,我不打算自己来完成。我不打算用同一个对象来指向数据库的一行。数据库的一行数据在程序中可能有多个对象,这些对象都应该是临时对象,而不是永久对象。他们的共享问题由本身加锁来解决。由于我们只是为访问提供了一个接口,外部程序完全可以不通过这个接口来访问数据库。实现后,使用实体对象的代码要简单。例如,数据库里有一

7、个表,它只有两个字段和,我们把它作为一个实体对象,假设我们要完成从数据库查询、修改、插入,使用它的代码片段如下:();也可以通过标准的得到数据库连接,这是完全一样的();如果不使用事务,这一行可以省去a1();a1(1);查找到相应记录(a1);a1(1);如果企图修改一个对象,必须通过系列的方法得到这个对象a1"";a1();修改原有记录a2();a23;a2"姚大";9/9个人收集整理,勿做商业用途a2();插入一条新记录();实体对象的属性通过方法修

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。