Derby介绍

1、JDK自带的数据库 - Derby

一句话概括:JDK6之后自带的微型数据库。默认安装之后会放在jdk下面的db包中,如果没有,可以自行下载:http://db.apache.org/derby/derby_downloads.html

JDK 6 的程序员们也许会发现,除了传统的 bin、jre 等目录,JDK 6 新增了一个名为 db 的目录。这便是 Java 6 的新成员:Java DB。这是一个纯 Java 实现、开源的数据库管理系统(DBMS),源于 Apache 软件基金会(ASF)名下的项目 Derby。它只有 2MB 大小,对比动辄上 G 的数据库来说可谓袖珍。特别适合Java的单元测试和集成测试之中。

2、Derby使用

(1)加入pom依赖

 
  
  1. <dependency> 
  2.             <groupId>org.apache.derby</groupId> 
  3.             <artifactId>derby</artifactId> 
  4.             <version>10.6.1.0</version> 
  5.             <scope>test</scope> 
  6. </dependency> 

(2)创建数据库、连接、操作、销毁数据库、关闭

 
  
  1. try { // load the driver 
  2.             Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance(); 
  3.             System.out.println("Load the embedded driver"); 
  4.             Connection conn = null
  5.             Properties props = new Properties(); 
  6.             props.put("user""user1");  props.put("password""user1"); 
  7.            //create and connect the database named helloDB  
  8.             conn=DriverManager.getConnection("jdbc:derby:helloDB;create=true", props); 
  9.             System.out.println("create and connect to helloDB"); 
  10.             conn.setAutoCommit(false); 
  11.  
  12.             // create a table and insert two records 
  13.             Statement s = conn.createStatement(); 
  14.             s.execute("create table hellotable(name varchar(40), score int)"); 
  15.             System.out.println("Created table hellotable"); 
  16.             s.execute("insert into hellotable values('Ruth Cao', 86)"); 
  17.             s.execute("insert into hellotable values ('Flora Shi', 92)"); 
  18.             // list the two records 
  19.             ResultSet rs = s.executeQuery( 
  20.                 "SELECT name, score FROM hellotable ORDER BY score"); 
  21.             System.out.println("name\t\tscore"); 
  22.             while(rs.next()) { 
  23.                 StringBuilder builder = new StringBuilder(rs.getString(1)); 
  24.                 builder.append("\t"); 
  25.                 builder.append(rs.getInt(2)); 
  26.                 System.out.println(builder.toString()); 
  27.             } 
  28.             // delete the table 
  29.             s.execute("drop table hellotable"); 
  30.             System.out.println("Dropped table hellotable"); 
  31.              
  32.             rs.close(); 
  33.             s.close(); 
  34.             System.out.println("Closed result set and statement"); 
  35.             conn.commit(); 
  36.             conn.close(); 
  37.             System.out.println("Committed transaction and closed connection"); 
  38.              
  39.             try { // perform a clean shutdown  
  40.                 DriverManager.getConnection("jdbc:derby:;shutdown=true"); 
  41.             } catch (SQLException se) { 
  42.                 System.out.println("Database shut down normally"); 
  43.             } 
  44.         } catch (Throwable e) { 
  45.             // handle the exception 
  46.         } 
  47.         System.out.println("SimpleApp finished"); 

 

3、应用场景

单元测试、自动化集成测试

更多可以参考http://www.ibm.com/developerworks/cn/java/j-lo-jse65/index.html