Java DB嵌入式模式
Java DB是基于Java编程语言和SQL的关系数据库管理系统。 这是Apache软件基金会的开源Derby项目的Oracle版本。 Java SE 7 SDK中包含Java DB。
Java DB有两个部署选项: Embedded和Network Server 。
这篇文章是关于嵌入式部署或模式的。
1.嵌入式
在嵌入式模式下:
- 该数据库只能从一个应用程序访问。
- 应用程序和数据库之间没有网络连接。
- 应用程序和数据库在同一JVM(Java虚拟机)中运行。
使用JDBC(Java数据库连接)从Java应用程序访问数据库。 通常,数据库由访问数据库的应用程序启动和停止。 并且,不需要数据库管理。
启动Java DB
从应用程序启动Java DB。 首先,加载数据库JDBC驱动程序。 接下来,使用连接URL连接到数据库。
- 该驱动程序包含在Java DB中: org.apache.derby.jdbc.EmbeddedDriver
- 连接URL格式为: jdbc:derby:databaseName; URLAttributes;
- 一个示例连接URL是jdbc:derby:SampleDB; create = true; ,其中数据库名称为SampleDB ,“ create = true”为属性名称/值对。
以下是使用JDBC启动数据库的示例Java方法:
/** The method creates a Connection object. Loads the embedded driver,* starts and connects to the database using the connection URL.*/
public static Connection createDatabaseConnection()throws SQLException, ClassNotFoundException {String driver = "org.apache.derby.jdbc.EmbeddedDriver";Class.forName(driver);String url = "jdbc:derby:sampleDB";Connection c = DriverManager.getConnection(url);return c;
}
通过上述方法创建的Connection对象用于使用SQL访问数据库对象和数据。 sampleDB是数据库的名称。
注意: derby.jar库必须位于使用Java DB Embedded的应用程序的类路径中。 该库包含驱动程序。 它包含在Java DB中。
使用“ ij”以交互方式访问Java DB数据库
ij是Java DB附带的命令行工具。 ij是一个JDBC工具,用于在Java DB数据库上运行交互式查询。 这位于Java DB安装的\ bin目录中。
启动ij,创建数据库并运行SQL命令以创建和访问数据:
os prompt> ij
ij> CONNECT 'jdbc:derby:testDB;create=true';
ij> Enter SQL commands here…
这将在当前目录中创建一个名为testDB的数据库并连接到该数据库。 Java DB数据库以与数据库名称相同的名称存储在目录内的文件中。
2.用法示例
一个示例用法是使用嵌入式数据库的基于Java Swing的桌面应用程序。 首次启动应用程序时,将创建数据库及其对象。 随后,应用程序创建或访问数据库中的数据。 该应用程序还具有在线备份数据库功能(即在数据库打开时进行备份副本)和从备份数据库副本功能进行还原 。 数据库随应用程序关闭。
3.从多个客户端连接到嵌入式Java DB
可以从多个客户端访问嵌入式模式下的Java DB。 一个示例是部署在Web服务器上并连接到数据库的Java Servlet应用程序。 Java DB数据库在Web服务器上配置为DataSource类型的资源。 Servlet应用程序启动数据库并创建Connection对象。 Connection对象是使用DataSource对象而不是DriverManager创建的。 多个Web客户端通过应用程序访问数据库数据。
一个例子
- 在Web服务器上配置数据源资源
- 从Servlet访问数据库(使用配置的数据源)
该配置适用于Apache Tomcat 6 Web服务器。 以下代码示例使用Java Servlet(Java EE),JNDI(Java命名和目录接口)和JDBC API。
3.1.1。 在Web服务器上配置数据源资源
这称为上下文配置。 这将JDBC数据源的JNDI名称定义为Web应用程序中使用的Java DB数据库的资源(用于JNDI查找)。 另外,指定资源参数。
以下条目已添加到文件“ /META-INF/context.xml”中。 META-INF目录将位于Web应用程序部署WAR文件的根目录中。
<Context><Resourcename="jdbc/testDB"auth="Container"type="javax.sql.DataSource"username=""password=""driverClassName="org.apache.derby.jdbc.EmbeddedDriver"url="jdbc:derby:testDB"/>
</Context>
- name:是数据源资源的JNDI名称。
- url:指定格式为jdbc:derby:databaseName; URLAttributes;的JDBC数据库连接URL 。 并且, testDB是要连接的Java DB数据库的名称。
请注意,应用程序从Derby系统目录访问嵌入式数据库。 默认情况下,当前目录(JVM系统属性user.dir )是系统目录。
对于Java DB,可以通过设置JVM系统属性derby.system.home来指定Derby系统目录(可选)。 在操作系统命令提示符下使用“ java”命令(例如, java -Dderby.system.home = D:\ mydatabases MyApplication )或在Java程序中(使用java.lang.System类的setProperty() )进行设置。 。
注意:嵌入式数据库驱动程序(derby.jar)将放置在“ CATALINA_HOME \ lib”目录中。 CATALINA_HOME是Tomcat安装目录。
3.1.2。 从Servlet访问数据库
以下Java代码显示了使用已配置的DataSource资源访问Java DB数据库的servlet类。 该代码假定已经创建了数据库(使用另一个应用程序或使用ij进行交互)。
public class TestServlet extends HttpServlet {
private Connection conn;
/** Method executes when the servlet is created.* Accesses the DataSource object and creates the Connection object.*/
@Override
public void init()throws ServletException {InitialContext cxt = null;DataSource ds = null;try {cxt = new InitialContext();ds = (DataSource)cxt.lookup("java:/comp/env/jdbc/testDB");}catch (NamingException ex) {throw new ServletException("naming context error", ex);}try {conn = ds.getConnection();}catch (SQLException ex) {throw new ServletException("connection error", ex);}
} // init()
/** Method to handle a Http Get request.* The Connection object created in init() is used to access the* database data using JDBC API. */@Overridepublic void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {...Statement stmnt = conn.createStatement();ResultSet rs = stmnt.executeQuery("SELECT * FROM test_table");...}
} // TestServlet
4.网络服务器(又名服务器)
在这种模式下,可通过网络(客户端-服务器配置)从多个客户端访问Java DB。 数据库和应用程序在不同的JVM中运行。 使用JDBC从Java应用程序访问服务器上的数据库。
以下是服务器使用情况的示例。
启动服务器
使用提供的批处理程序(位于Java DB安装的\ bin目录中)从Windows命令提示符下启动和停止服务器: startNetworkServer.bat和stopNetworkServer.bat 。
从客户端应用程序访问Java DB
加载驱动程序并使用连接URL连接到数据库。
- 驱动程序是: org.apache.derby.jdbc.ClientDriver
- 连接URL格式为: jdbc:derby:// server:port / databaseName; URLAttributes;
- server是主机名(或ip地址), port是服务器正在侦听客户端请求的端口号(默认为1527)。
以下是使用JDBC启动数据库的示例Java方法:
/** The method creates a Connection object. Loads the client driver,* starts and connects to the database using the connection URL.*/
public static Connection createDatabaseConnection()throws SQLException, ClassNotFoundException {String driver = "org.apache.derby.jdbc.ClientDriver";Class.forName(driver);String url = "jdbc:derby://localhost:1527/sampleDB";Connection c = DriverManager.getConnection(url);return c;
}
通过上述方法创建的Connection对象用于使用SQL访问数据库对象和数据。 sampleDB是数据库的名称。
注意: derbyclient.jar库必须位于客户端应用程序的类路径中,才能启动和访问Java DB数据库。 该库包含驱动程序。 它包含在Java DB中。
5.参考
- Apache Derby>文档(10.8手册):http://db.apache.org/derby/manuals/index.html
- Oracle的Java DB:http://www.oracle.com/technetwork/java/javadb/overview/index.html
- 作者的Java DB备份和还原博客文章:http://www.javaquizplayer.com/blog.html
- 作者开发和部署(并使用Java DB Embedded)基于Java Swing的桌面应用程序:http://www.scribonotes.com
翻译自: https://www.javacodegeeks.com/2013/07/java-db-embedded-mode.html
Java DB嵌入式模式相关推荐
- java嵌入式db_Java DB嵌入式模式
java嵌入式db Java DB是基于Java编程语言和SQL的关系数据库管理系统. 这是Apache软件基金会的开源Derby项目的Oracle版本. Java SE 7 SDK中包含Java D ...
- java dbrecord_JFinal 独创 Db + Record 模式
Db 类及其配套的 Record 类,提供了在 Model 类之外更为丰富的数据库操作功能.使用 Db 与 Record 类时,无需对数据库表进行映射,Record 相当于一个通用的 Model.以下 ...
- 在桌面应用中使用JAVA DB[组图]
原文地址:http://Java.sun.com/developer/technicalArticles/J2SE/Desktop/javadb/ 原作者:John O'Conner 日期:2006- ...
- H2:一款基于 Java 的嵌入式关系型数据库
文章目录 H2 简介 下载安装 执行 SQL 语句 查看帮助 运行 SQL 脚本 生成 DDL 语句 断开数据库连接 连接模式 命令行客户端 Maven 依赖 资源文档 总结 大家好,我是只谈技术不剪 ...
- Java SE 6 新特性: Java DB 和 JDBC 4.0
http://www.ibm.com/developerworks/cn/java/j-lo-jse65/index.html 长久以来,由于大量(甚至几乎所有)的 Java 应用都依赖于数据库,如何 ...
- Java DB中的Java存储过程
1 Java存储过程 这篇文章是关于Java DB中的Java存储过程的. Java DB是基于Java编程语言和SQL的关系数据库管理系统. 这是Apache软件基金会的开源Derby项目的Orac ...
- java设计模式工厂模式_Java中的外观设计模式
java设计模式工厂模式 Facade Design Pattern is one of the Structural design patterns (such as Adapter pattern ...
- java derby 网络模式,Derby源代码分析 -- 服务器启动
一直以来都想研究下数据库的实现原理,Derby在我眼里绝对是一个完美的切入点.首先它是100%纯Java实现,对于我这种Java程序员来说简直完美的,不需要去懂C,C++...等等无疑减少了很大的难度 ...
- 彻底理解Java的feature模式
先上一个场景:假如你突然想做饭,但是没有厨具,也没有食材.网上购买厨具比较方便,食材去超市买更放心. 实现分析:在快递员送厨具的期间,我们肯定不会闲着,可以去超市买食材.所以,在主线程里面另起一个子线 ...
最新文章
- 微软的平板电脑_关于微软轻便版平板电脑Surface Go,你想知道的一切细节都在这了...
- 您必须在sources.list中指定代码源_python如何从源代码构建lxml
- Java中Synchronized的用法
- CSS 编码中超级有用的工具集合
- Web Hacking 101 中文版 十七、服务端请求伪造
- SAP WebIDE登录时,有时会发生超时现象
- android 活动切换动画,android – 在使用ChangeImageTransform共享元素转换的两个活动之间动画化ImageView...
- (计算机组成原理)第一章计算机系统概述-第一节:计算机发展历程
- 11g大对象数据新技术
- 若依框架(一 运行框架)
- 计算机二级2018VB题库百度云,2018年春江苏省计算机二级VB考试真题第1套
- 乐符识别matlab,基于DPP的自动音符切分识别研究
- 贴片电阻、贴片电容规格、封装、尺寸·功率
- 魔百盒CM201-1,YS代工-免拆-线刷固件及教程
- libev的ev_periodic介绍
- 陶陶摘苹果(python)
- php 生成条形码(支持任意php框架)
- Linux 有/无设备树下 platform_driver 驱动框架
- PMON环境配置(龙芯,亲测成功1)
- CentOS时间、日期、计算器命令
热门文章
- python 列表生成表格_【转】Python 列表生成式
- kafak消费者从头开始消费(消费者组)
- rabbitmq启动失败-报Failed to load advanced configuration file解决方法
- maven项目不编译xml文件
- think-in-java(9)接口
- tomcat(supplement)HttpConnector.initialize() 和 start() 方法 以及 StandardContext.start()方法的分析
- JavaScript 变量的作用域和生命周期
- spring注入私有字段_Spring字段依赖注入示例
- tdd java_适用于Idea的面向现代TDD的Java 8 JUnit测试模板(带有Mockito和AssertJ)
- jdk8和hotspot_HotSpot的-XshowSettings标志的简单性和价值