论文部分内容阅读
目前,关系数据库仍然是使用最为广泛的存储持久化数据的方式。在Java中,有许多技术可以用于访问关系数据库,它们大致上可以分为两类:使用关系概念且基于SQL的技术,以及基于O/R映射的技术。JDBC是访问关系数据库的标准API,不过JDBC只是一个低级的调用级接口,直接使用它非常繁琐。iBATIS等映射工具对JDBC进行了封装,它们在一定程度上隐藏了JDBC的使用细节,同时保留了SQL的全部能力。但是有时候这些工具仍显低级:我们仍然需要维护遍布于代码或XML文件中的SQL语句。O/R映射工具(例如Hibernate和某些JDO实现)为我们提供了透明持久化能力,使用这类工具,我们可以专注于业务逻辑而忘掉自己正在使用JDBC甚至RDBMS这一事实。O/R映射工具的缺点是它们过于复杂并且难以掌握。对于需要快速开发的应用来说,我们急需一种简洁的解决方案,它应该足够灵活同时容易使用。本文记录了一个持久层设计模式Reflective DAO,这是广泛使用的J2EE核心模式Data Access Object的一个特例。应用Reflective DAO模式,定制可重用和易于维护的持久层方案相当容易。在Reflective DAO模式的基础之上,本文进一步设计和实现了一个轻量级Java持久层框架,并将其命名为refldao。同现有持久层技术相比,refldao框架有其自身的特点。由于完全构建在标准的Java SE类库(JDBC API和Reflection API等)之上,refldao没有任何多余的依赖。Reflective DAO是支撑refldao的主要模式,反射的使用使得不用继承任何超类就可以得到DAO实例从而获得针对POJO的自动CRUD能力。另外,refldao还使用了许多Java 5.0新特性(如Annotation、Generic、Vararg等)以便最大程度地简化用户的持久化操作。