在web的工程如果想使用db4o,是不能直接使用的,如果想使用的就得做一些初始化的工作,以便在servlet中使用,具体可以看下面的两个网页有详细的介绍:
http://java.dzone.com/articles/db4o-java
http://community.versant.com/documentation/reference/db4o-8.1/java/reference/Content/platform_specific_issues/web/servlets.htm
可以如此使用:
Db4oServletContextListener.java
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import com.db4o.Db4oEmbedded;
import com.db4o.EmbeddedObjectContainer;
import com.db4o.ObjectContainer;
import com.db4o.config.EmbeddedConfiguration;
public class Db4oServletContextListener
implements ServletContextListener {
public static final String PREFIX_PATH = "E:/Pattern/PDFBox-v2/";
public static final String KEY_DB4O_FILE_NAME = "db4oFileName";
public static final String KEY_DB4O_SERVER = "db4oServer";
@Override
public void contextInitialized(ServletContextEvent event) {
System.out.println("context oK");
ServletContext context = event.getServletContext();
String filePath = PREFIX_PATH + context.getInitParameter(KEY_DB4O_FILE_NAME);
EmbeddedConfiguration configEmbedded = Db4oEmbedded.newConfiguration();
EmbeddedObjectContainer rootContainer = Db4oEmbedded.openFile(configEmbedded,
filePath);
context.setAttribute(KEY_DB4O_SERVER, rootContainer);
/* ArrayList<exam> result = new ArrayList<exam>();
ObjectSet<exam> objectSet = rootContainer.query(exam.class);
while (objectSet.hasNext()) {
result.add((exam) objectSet.next());
}
exam[] exams = result.toArray(new exam[result.size()]);
System.out.println(exams.length);*/
context.log("db4o startup on " + filePath);
}
@Override
public void contextDestroyed(ServletContextEvent event) {
ServletContext context = event.getServletContext();
ObjectContainer rootContainer = (ObjectContainer) context.getAttribute(KEY_DB4O_SERVER);
context.removeAttribute(KEY_DB4O_SERVER);
close(rootContainer);
context.log("db4o shutdown");
}
private void close(ObjectContainer container) {
if(container != null) {
container.close();
}
}
}
自己的servlet代码:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.db4o.EmbeddedObjectContainer;
public class CategoryServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("OK");
EmbeddedObjectContainer container = (EmbeddedObjectContainer)
request.getServletContext().getAttribute("db4oServer");
}}
分享到:
相关推荐
"db4o 使用指南" db4o 是一个开源的面向对象数据库,能够轻松地将 Java 对象持久化到数据库中。本文将详细介绍 db4o 的安装、启动、查询方式、对象持久化、数据库文件结构、主要包结构等知识点。 一、db4o 安装和...
在“Db4o的简单操作项目”中,我们将探讨如何使用Db4o进行基本的数据操作,包括对象的持久化、查询以及事务管理。 首先,你需要访问db4o的官方网站(http://www.db4o.com)来获取最新的Db4o版本。下载完成后,将jar...
db4o(Database for Objects)是一款开源的对象数据库系统,它允许开发者直接将Java或.NET对象存储到数据库中,无需进行ORM(对象关系映射)。db4o的目标是简化数据管理,提供更接近自然编程的方式,使开发过程更加...
这款数据库引擎已被验证具备优秀的性能,根据描述中的基准测试,db4o在与传统持久化方案的对比中排名第二,仅次于JDBC,且明显优于使用Hibernate/HSQLDB的方案,证明了面向对象并不一定意味着性能损失。 ### 1. db4...
db4o的目标是提供一种简单、高效的方式来处理数据,特别是在嵌入式系统和移动应用中,它的轻量级特性和高性能表现尤为突出。 **版本8.0** 是db4o的最后一个官方发布版本,意味着这个版本包含了db4o的所有最新特性和...
该书详细介绍了db4o的基础知识,包括如何安装和配置db4o环境,以及如何在Java项目中集成db4o。作者通过实例展示了如何创建、打开和关闭数据库,以及如何保存和检索对象。书中还涵盖了对象持久化的基本概念,解释了...
- Installation:在Java项目中使用DB40,通常需要将db4o相关的JAR文件添加到项目的构建路径或依赖管理中。对于Maven项目,可以通过在pom.xml文件中添加对应的依赖来实现。 2. 第一步: - 打开一个DB4O库:首先,...
用户可以通过运行此文件在他们的开发环境中安装db4o库,以便在.NET 3.5项目中使用。 ### 4. db4o教程 - **db4o-7.4-tutorial-net.pdf**:这份文档可能是db4o 7.4版针对.NET的官方教程,包含了如何在.NET项目中配置...
**db4o 开发指南与实例详解** **一、db4o 简介** db4o(Database for Objects)是一款开源的对象关系数据库管理...通过学习上述知识点,开发者可以熟练掌握db4o的使用,从而在项目中实现高效、便捷的对象持久化管理。
为了在项目中使用DB4O,需要将这些JAR文件添加到项目的类路径中,可以通过以下步骤进行: 1. 下载DB4O的JAR包,通常可以从官方网站或第三方库网站获取。 2. 将下载的JAR文件复制到项目的`lib`目录下。 3. 在IDE(如...
### db4o-7.12 教程详解 #### 一、db4o简介与安装 db4o是一款开源的对象数据库系统,支持Java、.NET 和 Mono等平台。...随着经验的积累,您将更加熟练地使用db4o来构建高效、可靠的数据库应用程序。
在本实例中,我们将深入探讨DB4o的使用方法,以及如何结合Visual Studio 2008进行开发。 1. **对象数据库与关系数据库对比**: 对象数据库与传统的关系数据库不同,它直接支持面向对象编程的概念,如类、继承、...
在`DrawTools2005`这个示例程序中,可能展示了如何使用db4o来存储和检索图形工具相关的对象。例如,可能会有一个`Shape`类,包含位置、大小、颜色等属性,以及一个`Drawing`类,包含多个`Shape`对象。开发者可以轻松...
在实际使用中,开发者可以下载db4o的库文件(如压缩包中的"db4o-8.0"),将其引入到项目中,然后通过简单的API调用来实现对象的存储和查询。尽管db4o已经停止了官方的更新和支持,但它的设计理念和实现方式仍然对...
DB4o的核心思想是对象持久化,即将内存中的对象实例存储到磁盘上,以便在后续的程序运行中能够再次加载和使用。这与关系型数据库需要将对象转换为表格数据不同,DB4o直接处理对象,提供了更直观的编程模型。 在DB4o...
DB4O(Database for Objects)是一款开源的对象数据库系统,它允许开发者将.NET对象直接存储到数据库中,无需进行ORM(对象关系映射)转换。在.NET环境中,db4o为开发人员提供了简单、高效的数据库解决方案,特别...
- **测试代码**:db4o的测试代码用于验证其功能和性能,通过这些测试用例,你可以更好地了解如何正确使用db4o,并确保其在你的项目中正常工作。 使用db4o时,你需要考虑以下几点: - **兼容性**:db4o可能与不同的...
Db4o,全称为“Database for Objects”,是一个开源的对象数据库系统,专为.NET和Java平台设计。...通过深入研究Db4o的七章内容,你将能够熟练掌握如何在应用程序中使用它,提升开发效率并优化数据管理。
**db4o(Database for Objects)**是一款开源的对象数据库,专为Java开发人员设计,它允许开发者直接在数据库中存储和检索Java对象,无需进行传统的SQL映射。本指南的第三部分将深入探讨如何在db4o中进行数据库重构...