1、背景
Spring在J2EE应用程序开发框架中占据重要的作用,它实现了轻量级的IoC(控制反转)和AOP(面向切面)容器框架,能够对JavaBean的生命周期进行管理,可以单独使用也可以和其他框架进行整合,如Struts、MyBatis、Hibernate等主流框架。
Spring的IoC技术促进了低耦合,能够将一个对象依赖的其它对象通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。面向切面的特性,允许通过分离应用的业务逻辑与系统级服务(例如审计和事务管理)进行开发,业务逻辑主要完成业务的各种功能,系统级服务负责其它的关注点,例如日志或事务支持。Spring包含并管理应用对象的配置和生命周期,做为一种容器可以根据业务特性创建一个单独的实例或者每次需要时都生成一个新的实例。Spring可以将简单的组件配置组合成为复杂的应用,因此能很好的与其他J2EE应用开发框架进行集成。
巨杉数据库SequoiaDB支持海量分布式数据存储,提供常见开发语言驱动程序便于开发人员直接操作数据库中的数据。在大部分企业级应用程序开发过程中,大部分开发人员或者客户倾向于使用标准的SQL语句做为数据操作的标准接口。巨杉数据库利用巨杉SequoiaDB SQL套件支持标准的SQL语句对数据库中的数据进行各种操作,本文主要讲解巨杉SequoiaDB SQL套件与常见的J2EE开发框架进行集成以及开发过程中遇到问题的解决思路。
2、产品介绍
巨杉数据库SequoiaDB是一款分布式非关系型文档数据库,可以被用来存取海量非关系型的数据,其底层主要基于分布式,高可用,高性能与动态数据类型设计,它兼顾了关系型数据库中众多的优秀设计:如索引、动态查询和更新等,同时以文档记录为基础更好地处理了动态灵活的数据类型。PostgreSQL支持标准SQL,巨杉SequoiaDB SQL套件通过扩展 PostgreSQL功能可以使用标准SQL 语句访问 SequoiaDB 数据库,完成对SequoiaDB 数据库的各种操作。常见J2EE应用持久层开发框架,如Mybatis、Hibernate等支持PostgreSQL数据库,而这些框架能很好的与Spring进行集成。因此巨杉SequoiaDB SQL套件与Spring集成和PostgreSQL与Spring集成流程相同。
3、环境搭建
3.1、软件配置
操作系统:windows 7
JDK:1.7.0_80 64位,下载地址为:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jdk-7u80-oth-JPR
Myeclipse:12.0.0
SequoiaDB:1.12.5或以上版本
SequoiaDB SQL:9.3.4
依赖包:Spring 3.2.4、mybatis 3.3.0、mybatis-spring 1.1.1、mybatis-paginator 1.2.5、postgresql-9.3.jdbc4-20131010.203348-4
本项目主要实现从SequoiaDB中查询数据并分页来展示Spring整合SequoiaDB SQL整合的整个过程。
创建项目工程如下图:
图3-1-1
说明:
1、Spring整合SequoiaDB的时候建议选择DBCP连接池管理数据库连接
2、SequoiaDB以及SequoiaDB SQL安装可参考http://www.sequoiadb.com/cn/index.php?a=index&m=Files上面的安装和连接器章节
3.2、集合空间和集合创建及数据准备
1、以sdbadmin用户登录,进入到/opt/sequoiadb/bin目录中,进入到SDB Shell控制台创建集合空间和集合
创建集合空间脚本如下:
var db = new Sdb();
db.dropCS('CS');
创建集合脚本如下:
db.CS.createCL('account_tx');
执行结果如下图:
图3-2-1
2、退出SDB Shell脚本,在linux控制台执行下面命令导入数据:
./sdbimprt --hosts=node03:11810,node02:11810 --type=csv --file=cs.csv -c CS -l account_tx --fields='account_id long,tx_id long,customer_name string,tx_time string,tx_value int,account_overage long,tx_type int,other_side_account long,tx_site string,summary string' -j 3
执行结果如下图:
图3-2-2
3、利用PostgreSQL连接器创建数据库和外部表
创建数据库的脚本如下:
bin/createdb -p 5432 cs
创建外部表的脚本如下:
create foreign table account_tx(account_id bigint,tx_id bigint,customer_name text,tx_time text,tx_value integer,account_overage bigint,tx_type integer,other_side_account bigint,tx_site text,summary text
) server sdb_server options ( collectionspace 'CS', collection 'account_tx' ) ;
执行结果如下图:
图3-2-3
4、在PostgreSQL验证测试数据
验证测试数据脚本如下:
select * from account_tx limit 5;
执行结果如下图:
图3-2-4
4、代码展示
4.1、框架搭建代码展示
1、在web.xml文件初始化配置信息,如Spring listener和Dispatcher以及加载Spring相关配置文件。
具体配置信息如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web=http://java.sun.com/xml/ns/javaee xsi:schemaLocation=http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd id="WebApp_ID" version="2.5">
<display-name>csWeb</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<