网学网为需要JAVA的朋友们搜集整理了 对象/关系映射及其在Java环境中的研究与实现 相关资料,希望对各位网友有所帮助!
1 O/R Mapping框架概述使用面向对象的语言访问关系数据库最简单,也是最糟糕的办法,就是在业务逻辑层中利用大量的SQL硬编码语句来实现对数据库中数据的存取。这种模式的优点在于开发的迅速敏捷。但是基于这种模式开发的系统,其维护性和可扩展性差。一种改进的方法是:在业务类与底层数据库之间增加数据访问类,封装与数据库相关的各种操作,这样业务类便脱离了SQL语句,系统的整体结构也更为清晰。这也是当前软件开发过程中的主流方法,但是这种方法仍然不能使面向对象的开发者完全摆脱数据库的束缚。针对上面两种方法,应用程序开发人员都不能以面向对象的方法来对对象数据进行操作,为此提出了在业务逻辑层和关系数据库之间增加一个数据持久层,负责实现对象和关系数据库之间的映射,如图1所示。业务逻辑层直接获取或存贮的就是清晰的对象,中间的转换过程就交给O/R Mapping框架处理了。
2 O/R Mapping机制O/R Mapping是将对象的状态映射到数据库上,以便提供透明的持久化操作。根据对象与关系数据库的特性,O/R Mapping主要通过以下几个方面实现:对象标识符到主键的映射将类映射成关系数据库的表时,通常将对象标识符(一般是对象的某个属性)映射成数据库表的主键即可。类属性到数据表列的映射在一般情况下,对象的属性映射到关系数据库单个字段上;而对于本身就是对象的属性,一般要映射到多个字段上。类到数据表的映射类到数据表的映射主要讨论如何用数据表来表达类之间的继承关系。可以采用的映射策略主要有以下3种:整个类层次结构使用一个数据实体:将整个类层次映射到一张数据表中意味着从基类到其所有子孙类的所有属性都存储到一张数据表中。每个具体类使用一个数据实体:使用这种方法,各个子类所特有属性,联合从父类中继承的公共属性,构成表的结构。父类不映射为数据库中的实体表,只作为子类公共属性的载体。