Derby对应用开发的支持

出处:blog.csdn.net 作者:eye_of_back 更新时间:2007-08-21  原文

一,derby是什么

  Derby是什么,即使你说不上来,想必你也早就听说过了,当然了,如果没有听说过,也没有关系,因为下面就要和你说一下Derby。

  Derby是一款轻量级的关系型数据库,它的出现要感谢的人很多,其中一位是IBM,它把Cloudscape源码开源,并捐献给了Apache软件基金会,因此另外一位要感谢的,就是Apache软件基金会,它带给我们开发设计人员的东西真是太多了。

  Derby的功能很强大,它不仅支持内嵌式与客户机服务器模式,而且还支持事务处理、日志管理等许多大型数据库具有的功能,当然了Derby的价值并不在 于解决复杂事务和高性能方面,而在于它对应用开发支持,由于有Derby的出现,我们的一些应用开发模式也随着变了,变得更易于我们接受了。

二,去哪里下载derby

  既然Derby是ASF(Apache软件基金会)的一个项目,那么最直接下载的地方就是Apache网站了,你可以直接访问http://db.apache.org/derby ,里面有关于derby方方面面的东西,当然也包括下载,可以访问http://db.apache.org/derby/derby_downloads.html 下载derby。

  我写这篇文章的时候,Derby的最新官方版本是10.2.2.0 ,当然了点击这个链接进入后,会发现有许多可以下载的打包形式,如果只是为了使用,则下载其中的二进制包即可,例如windows下选择db-derby-10.2.2.0-bin.zip ,下载后解压,会发现里面有许多我们熟知的二进制包中一般都有的目录,例如lib目录,里面包含了derby的应用支持jar包。

三,derby与eclipse的集成

  如果你喜欢在DOS或者Linux命令行模式下运行Derby,Derby绝对能满足你的要求,但是我在这里要说的是在Eclipse中如何使用 Derby,我想现在应该有不少人或者说大多数人都在使用Eclipse进行这应用程序的开发,在集成了cvs(svn)、WTP等一系列插件之后,再补 充上能够支持内嵌式数据库访问的derby,这样的环境下使用Eclipse进行应用开发,也可以算得上是完美了。

  那么,如何在一个Ecilpse之中加入对derby的支持呢?

  首先,我们要去现在derby在elicpse上的插件,我使用的是eclipse3.2,插件可以去Eclipse网站下载,也可以在Apache的derby下载处下载,即访问http://db.apache.org/derby/derby_downloads.html ,选择某个发布版本的Derby,进入后就会看到与该版本Derby对应的Eclipse插件版本的下载。

  一般会有两个插件需要下载,一个是支持Derby服务的核心插件,一个是支持Eclipse界面的UI插件,例如对于10.2.2.0的Derby对应的插件为:

  derby_core_plugin_10.2.2.485682.zip
  derby_ui_plugin_1.1.0.zip

  下载之后,将其解压到Eclipse安装目录中的plugins目录即可,然后重新启动Eclipse。

   接下来,我们可以在Eclipse创建一个Java工程,当然了也可以使用已经存在Java工程,在eclipse中可以为每个Java项目创建一个Derby环境,我们先看一下如为一个Java工程创建一个Derby环境。

  右键点击一个Java工程,选择“Apache Derby -->Add Aapche Derby Nature”,入下图所示:

  完成后,该工程就具备了Derby环境,这个时候,你可以右键选择“属性”,在弹出的面板中,选择“Apache Derby”,则右边会出现该工程中Derby的相关参数配置,入下图所示:

  你可以修改端口网络服务主机、端口以及数据的存放目录,一般来说保持默认即可。

  在配置好相关参数之后,你可以通过对该工程的Derby进行一些操作了,入口如下所示:

  从上图我们可以看出,可以进行的操作有:

  1)删除该工程的Apache Derby环境
  2)启动Derby的网络服务器,Derby通过这个提供客户机/服务器模式的数据库访问
  3)打开ij,ij是用来查看操作Derby数据库的一个方便的工具,支持命令行方式的访问,使用起来很方便,关于ij的一些语法,可以参考下载下来的二进制包中的/docs目录下面的ij相关的文档,写的很详细,这里就不多说了。
  4)查看Derby系统信息,例如执行后可能会看到类似如下的信息:
  ------------------ Java Information ------------------
Java Version:    1.4.2
Java Vendor:     Sun Microsystems Inc.
Java home:       G:\j2sdk1.4.2\jre
Java classpath:  G:\eclipse\workspace\DerbyTest;G:\eclipse\plugins\org.apache.derby.core_10.2.2\derby.jar;G:\eclipse\plugins\org.apache.derby.core_10.2.2\derbyclient.jar;G:\eclipse\plugins\org.apache.derby.core_10.2.2\derbytools.jar;G:\eclipse\plugins\org.apache.derby.core_10.2.2\derbynet.jar
OS name:         Windows XP
OS architecture: x86
OS version:      5.1
Java user name:  sysuser
Java user home:  C:\Documents and Settings\sysuser
Java user dir:   G:\eclipse\workspace\DerbyTest
java.specification.name: Java Platform API Specification
java.specification.version: 1.4
--------- Derby Information --------
JRE - JDBC: J2SE 1.4.2 - JDBC 3.0
[G:\eclipse\plugins\org.apache.derby.core_10.2.2\derby.jar] 10.2.2.0 - (485682)
[G:\eclipse\plugins\org.apache.derby.core_10.2.2\derbytools.jar] 10.2.2.0 - (485682)
[G:\eclipse\plugins\org.apache.derby.core_10.2.2\derbynet.jar] 10.2.2.0 - (485682)
[G:\eclipse\plugins\org.apache.derby.core_10.2.2\derbyclient.jar] 10.2.2.0 - (485682)
------------------------------------------------------
----------------- Locale Information -----------------
------------------------------------------------------
  说到这里,Derby与Eclipse的集成应该是可以了,至于如何在这个环境中使用Java代码链接该数据库,那就是后面的话题了。

四,derby实际应用

  Derby可以做为轻量级数据库的一个缩影,轻量级数据库的一个非常显著的优点,就是安装简便,容易在一个较小的环境中支撑应用的开发与测试以及试运行, 想想为了验证一个数据库存储逻辑,要在一台笔记本上安装一个Oracle或者DB2真是太不值当了,当然可以安装Mysql,但是既然有一个非常轻量的 Derby,为何不直接使用Derby呢。

  Derby做为一种关系型数据库,支持两种连接访问模式,一种是内嵌式模式,一种式消息服务器模式 ,下面分些写一个程序予以说明:
程序一:客户机/服务器模式:
public class DerbyTest {
 public static void main(String[] args) throws Exception{
  Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();
  String url="jdbc:derby://localhost:1527/myDB;create=true";  (来源:www.iocblog.net)
  String username="me";
  String password="mine";
  Connection conn=DriverManager.getConnection(url,username,password);
  System.out.println("conn:"+conn);
  conn.close();
 }
}

程序二:内嵌模式:
public class DerbyTest {
  public static void main(String[] args) throws Exception{
  Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
  String url="jdbc:derby:myDB;create=true;user=me;password=mine";
  String username="me";
  String password="mine";
  Connection conn=DriverManager.getConnection(url,username,password);
  System.out.println("conn:"+conn);
  conn.close();
 }
}

注意,运行客户机/服务器模式的程序时,需要预先启动Dery的NetWorkServer,在eclispe中,在工程上点击右键,选择“Apache Derby”
——>Start Derby Network Server,启动后之后,再运行程序一即可。对于程序二则不需要NetWorkServer,直接运行即可。

  另外一个需要说的,就是如何在Spring中集成Derby,其实配置起来很简单,我们只说一下Spring配置文件中DataSource的配置,如下:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName">
   <value>org.apache.derby.jdbc.EmbeddedDriver</value>
  </property>
  <property name="url">
   <value>jdbc:derby:myDB;create=true</value>
  </property>
  <property name="username">
   <value>me</value>
  </property>
  <property name="password">
   <value>mine</value>
  </property>
 </bean>

  有了Spring、Derby,想想如果做DAO层的单元测试,将会是多么方便吧,当然了可能你还会说,DOA测试还需要提前创建好数据库的表结构以及放 置一些初始化数据,这该怎么办呢?我这里给你介绍一个可以执行sql文件的Java程序,即ibatis的ScriptRunner。

  下面我们看一个DAO单元测试的例子:

protected void setUp() throws Exception {
        super.setUp();
        DataSource ds=(DataSource)SpringContextUtil.getContext().getBean("dataSource");
        ScriptRunner runner=new ScriptRunner(ds.getConnection(),true,true);
        String file=UserManageServiceTest.class.getResource("/sample/spring/test/usertest.sql").getFile();
        Reader reader=new FileReader(file);
        runner.runScript(reader);
        service = (UserManageService) SpringContextUtil
                .getBean("userManageService");
    }

    public void testSaveAndSearchAndRemoveUser() throws Exception {
        User user = new User();
        user.setUsername("zhangsan");
        user.setEmail("zhangsan@test.com");
        user.setBirthday(new Date());
        service.saveUser(user);
        logger.debug("存入一个新用户:" + user);
        User userFromDb = service.getUserByName("zhangsan");
        assertNotNull(userFromDb);
        assertEquals(userFromDb.getEmail(), "zhangsan@test.com");
        logger.debug("从数据库中查到用户:" + userFromDb);
        service.removeUser("zhangsan");
        logger.debug("从数据库删除用户:" + userFromDb);
    }

    /*
     * @see TestCase#tearDown()
     */
    protected void tearDown() throws Exception {
        super.tearDown();
    }

五,derby带给我们的思考 

  开源世界曾经被商业巨头们嘲笑,然而随着近些年的实际发展,开源的力量在整个IT业界内,成为了一股强大的力量,开源的模板Velocity、开源的 Web MVC Struts,开源的应用程序框架Spring,开源的ORM Hibernate、开源的数据库Mysql、开源的portal JetSpeed、开源的集成开发工具Eclipse等等,这一切为我们的开发提供了相当的便利。

  另外一点,轻量级这个概念,在越来越多的领域得到运用,轻量的应用程序框架,轻量级的目录存储协议、轻量级的数据库等等,轻量级对日常应用开发以及单元测 试等提供了极大的便利,这也使得我们的应用开发模式,得到了很大的改观,我们没有必要为了搭建一个开发或者测试环境,而购买多台服务器,也没有必要担心使 用同一个数据库做测试会使得数据库混乱,由此也可以看出,轻量级的一个结果就是本地化和个性化。

  Derby所带给我们,也许已经不仅仅是一种或某种这样的或者那样的思考,那么它所带给我们的更深的东西又到底是什么呢...

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值