论文部分内容阅读
本文结合“江苏省检验检疫局轻纺产品动态数据库”项目,介绍了项目背景,以项目中的动态数据库需求为切入点,讨论了动态数据库的概念、需求,认为从技术角度来讲动态数据库应该是指数据库结构动态改变的数据库,同时提到了动态数据的典型应用CMS以说明其需求。接着讨论了目前的三种实现方式。其中第一种硬编码方式则是作者编码实现过的,虽然该方式的原理最简单,但因为是从最底层做起,实现起来最复杂,后面两种Groovy-Hibernate方法和hbn-dyn-mod方式则主要是做讨论和对比,对前者分析了其实现原理。硬编码方式的缺点是实现繁琐,容易出错,而且无法享用Hibernate带来的便捷,虽然它原理简单;Groovy-Hibernate方式的缺点是需要引入一门新的语言Groovy,虽然它和Java语法基本相同,但弱类型性是他的缺点;hbn-dyn-mod方式由于技术支持不足、功能不强大等原因而没有发展起来。
随后分析了MVC模式的开源框架SSH的功能和用法,主要包括MVC模式、Struts2、Spring的主要特性及用法以及与本文最终动态数据库实现方法密切相关的Hibernate的分析。MVC作为目前最为流行的模式,也正是SSH框架所基于的模式,本文同时列举了其优缺点。Spring的特性则主要分析了IoC和AOP两点,这两点是Spring最关键的特征,也是主要用到的功能。Hibernate则从其出现、主要接口、ORM方式三方面进行了分析。
最后是结合本项目来对动态数据库的实现配置、编码的详细阐述,包括数据源的使用、本项目的注入配置和web.xml里的关键配置。给出了SessionFactory的具体实现,对DataSource的获取方式进行了改进,通过自己来实现ConnectionProvider传递了datasource,从而避免了需要深入跟踪Hibernate的ThreadLocal方式。接通过一个简单的例子的客户操作界面,展示了运行操作效果。最后对本文提到的几种实现方式作了比较分析,指出其利弊。