📜  Apache Derby-部署模式(1)

📅  最后修改于: 2023-12-03 14:39:16.247000             🧑  作者: Mango

Apache Derby-部署模式

Apache Derby是一个轻型的Java数据库,具有无服务器的特点,不需要单独的DB服务器进程,它是作为应用程序的一个组成部分来运行的,这使得Derby非常适合嵌入式应用程序,同时也可用于网络环境。

本文将介绍Apache Derby的部署模式,让你更好地了解如何将Derby部署到你的应用程序中。

Derby的部署模式

Derby有两种可用的部署模式:嵌入式模式和网络模式。

嵌入式模式

嵌入式模式是最常用的模式,这种模式下数据存储在应用程序的本地文件系统中,不需要单独的DB服务器进程。在应用程序中,可以直接使用JDBC API 访问Derby数据库。以下是实现嵌入式模式的Java代码:

public void embededMode() {
  Connection conn = null;
  try {
    Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
    conn = DriverManager.getConnection("jdbc:derby:sampleDB;create=true");
    Statement stmt = conn.createStatement();
    stmt.executeUpdate("CREATE TABLE sampleTable (col1 int, col2 varchar(50))");

    PreparedStatement psInsert = conn.prepareStatement("INSERT INTO sampleTable VALUES (?,?)");
    psInsert.setInt(1, 100);
    psInsert.setString(2, "Derby is awesome!");
    psInsert.executeUpdate();

    ResultSet rs = stmt.executeQuery("select * from sampleTable where col1 = 100");
    while (rs.next()) {
      System.out.println(rs.getInt(1) + "\t" + rs.getString(2));
    }

    stmt.executeUpdate("drop table sampleTable");
  } catch (ClassNotFoundException | IllegalAccessException | InstantiationException | SQLException e) {
    e.printStackTrace();
  } finally {
    try {
      if (conn != null) {
        conn.close();
      }
    } catch (SQLException ex) {
      ex.printStackTrace();
    }
  }
}
网络模式

网络模式适用于多个客户端共享同一个Derby数据库的情况,同时它提供更多DBA功能,如备份、恢复、灾难恢复等。在网络模式下,需要启动Derby Network Server来监听来自客户端的请求,然后客户端使用JDBC API从网络服务器连接Derby数据库。以下是实现网络模式的Java代码:

public void networkMode() {
  try {
    NetworkServerControl serverControl = new NetworkServerControl();
    serverControl.start(null);

    Connection conn = DriverManager.getConnection("jdbc:derby://localhost:1527/sampleDB;create=true", "", "");
    Statement stmt = conn.createStatement();
    stmt.executeUpdate("CREATE TABLE sampleTable (col1 int, col2 varchar(50))");

    PreparedStatement psInsert = conn.prepareStatement("INSERT INTO sampleTable VALUES (?,?)");
    psInsert.setInt(1, 100);
    psInsert.setString(2, "Derby is awesome!");
    psInsert.executeUpdate();

    ResultSet rs = stmt.executeQuery("select * from sampleTable where col1 = 100");
    while (rs.next()) {
      System.out.println(rs.getInt(1) + "\t" + rs.getString(2));
    }

    stmt.executeUpdate("drop table sampleTable");

    serverControl.shutdown();
  } catch (Exception e) {
    e.printStackTrace();
  }
}
总结

本文介绍了Apache Derby的两种部署模式:嵌入式模式和网络模式。通过这两种模式的实现,你可以使用JDBC API来访问Derby数据库。

Derby是一个灵活的数据库,适用于嵌入式应用程序和网络应用程序。虽然Derby是一个轻量级的数据库,但它也提供了一些DBA功能,以满足企业级应用程序的需求。