下面我开始对JDO的架构作一个简单的介绍。
下图显示了JDO架构主要的几部分:
JDOHelper :javax.jdo.JDOHelper类拥有一些静态的助手(helper)方法。这个方法可以获得一个持久对象的生命周期还可以用来创建一个与具体实现厂商无关的PersistenceManagerFactory的实例,这里使用了工厂(factory)模式。
PersistenceManagerFactory:javax.jdo.PersistenceManagerFactory类可以通过JDOHelper类的助手方法获得,这是一个标准的工厂类,他可以创建PersistenceManager类。
PersistenceManager:javax.jdo.PersistenceManager接口是应用程序经常要使用的一个主要的JDO接口。每一个PersistenceManager负责控制一组持久化对象而且他还可以创建新的持久化对象或删除现有的持久化对象。Transaction和PersistenceManager之间存在这一对一的关系,同时PersistenceManager又是Extent和Query的工厂类,也就是说这两个对象可以通过PersistenceManager创建。
PersistenceCapable:用户定义的持久化类都必须扩展实现PersistenceCapable接口。大多数JDO实现的供应商都提供一种“增强器”(enhancer)的功能,它可以向你要实现的持久化类中增加PersistenceCapable接口的实现。也就是说,其实你根本不会自己去实现这个接口。
Transaction:每一个PersistemceManager和javax.jdo.Transaction都是一一对应的。Transactions用来处理事务,它使得持久化数据可以成批的一次性添加到数据表中,如果出现异常就将数据回滚。
Extent:java.jdo.Extent是映射数据库中具体表的类的一个逻辑视图。Extent可以拥有自己的子类,它通过PersistenceManager获得。
Query:java.jdo.Query接口用具体的厂商JDO来实现,它负责处理JDO查询语言(JDOQL),这些JDOQL最终被解释为实际的数据库SQL语言。同样这个接口也是通过PersistenceManager获得的。
下面的例子显示的JDO接口如何操作并执行一个查询并更新持久化对象。
例子:JDO接口的交互
//通过助手类获得PersistenceManagerFactory
PersistenceManagerFactory factory=
JDOHelper.getPersistenceManagerFactory(System.getProperties());
//通过PersistenceManagerFactory获得PersistenceManager对象
PersistenceManager pm=factory.getPersistenceManager();
//创建并开始一个事务
Transaction tx=pm.currentTransaction();
tx.begin();
//查询employee表中每周工作时间大于40小时的研究人员
Extent ex=pm.getExtent(Employee.class,false);
//获得一个Query
Query query=pm.newQuery();
//设置这个query作用的范围,即查询的是那个表或记录集
query.setCandidates(ex);
query.setFilter("division.name == \"Research\" "+ "&& avgHours > 40");
Collection result=(Collection)query.execute();
Employee emp;
for(Iterator itr=result.iterator();itr.hasNext();){
emp=(Employee)itr.next();
emp.setSalary(emp.getSalary()*2);
}
//提交记录释放资源
tx.commit();
pm.close();
factory.close();
上面的代码片断包括了JDO几个主要的接口,在此你可以对JDO各个接口的使用方法有一个粗略的印象,以后实际的应用中JDO接口也都是这样使用的。
JDO的异常
JDO不会抛出通常的运行时异常,比如NullPointerExceptions、 IllegalArgumentException等它只抛出JDOException异常。JDOExcetion的结构如下图所示,这是一个继承的层次结构,从他们的字面含义就可以看出它们的用途,在这里就不详细说了,要想了解JDO异常的层次结构可以参考它们的JavaDoc。
- 大小: 17.3 KB
分享到:
相关推荐
2. **JDO架构** JDO包含数据存储管理器(PersistenceManager)、查询语言(JDOQL)和持久化类等核心组件。数据存储管理器负责对象的生命周期管理,包括实例化、持久化、查询和删除。JDOQL是一种类似Java的查询语言...
在深入探讨Java Data Objects(JDO)之前,让我们先明确一个概念——JDO是Java编程语言中用于实现对象持久化的标准框架。它旨在为开发人员提供一种以Java为中心、面向对象的方式来访问和管理持久化数据和数据存储。 ...
一个简单的JDO应用通常包括创建持久化类,定义持久化字段,配置数据存储,然后在代码中使用`PersistenceManager`进行CRUD操作。 总结来说,JDO为Java开发人员提供了一种强大且灵活的方式来处理数据库操作,通过...
structs1 是一个轻量级的架构图,它提供了一个简单的框架来构建应用程序。structs1 的主要特点是轻量级、灵活、可扩展和高性能。 ... (后续内容) 这六大类系统架构图都是业界公认的架构模式,广泛应用于软件...
iBATIS 提供的持久层框架包括 SQL Maps 和 DataAccess Objects(DAO),同时还提供了一个利用这个框架开发的 JPetStore 实例。 iBATIS 的最大优点是可以有效地控制 SQL 发送的数目,提高数据层的执行效率!它需要...
Struts JDO 插件是开源社区为Struts框架提供的一种扩展,它的主要目标是简化在Struts...总的来说,Struts JDO插件是Java Web开发中的一个重要工具,尤其对于那些希望在Struts应用中采用JDO作为持久化机制的开发者来说。
- **简介**:JDO是一个用于Java应用程序的API,用于简化与对象数据库或关系型数据库的交互。 - **优点**: - 提供了一个简单的API,用于存储和检索对象。 - **缺点**: - 功能较弱,不支持复杂的数据库操作。 - ...
Hibernate是一个基于Java的开放源代码的持久化中间件,它对JDBC进行了轻量级封装,不仅提供了ORM(对象-关系映射)服务,而且还提供了数据查询和数据缓存等功能。通过Hibernate API,Java开发人员能够更加便捷地操作...
56、写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔。 14 59、Java 编程,打印昨天的当前时刻。 15 60、java 和javasciprt 的区别。 15 61、什么时候用assert? 16 62、error和exception有什么...
Spring的数据访问层还包括对JPA(Java Persistence API)和JDO(Java Data Objects)的集成,以及声明式事务管理,使得事务处理变得简单且一致。 除此之外,Spring还提供了大量其他功能,如Spring Security用于安全...
Struts是一个开源的Java Web框架,它主要用于构建和维护可重用、模块化的Web应用程序。在"Struts 数据库项目开发宝典 11"中,我们聚焦的是使用Struts框架与JDO(Java Data Objects)进行日志管理系统的开发。这个...
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端...
Entity Bean是JPA中的核心概念,是一个Java类,用于描述一个实体的结构和行为。 Entity Bean由以下几个组成部分组成: * 属性变量:是Entity Bean中的一个变量,用于描述实体的结构。 * 主键和实体标识:是Entity ...
- **主键和实体标识**:每个实体 Bean 都需要有一个唯一的标识符,即主键,用来区分不同的实例。 2. **EntityManager**:这是一个中心接口,提供了与实体 Bean 交互的方法。 - **配置和获取 EntityManager**:...
**Spring DAO**模块提供了对JDBC的抽象层,创建了一个异常层次结构,使得处理数据库错误和不同数据库供应商的错误变得更加简单。此外,Spring还支持与其他ORM(对象关系映射)框架的集成,如JDO、Hibernate和iBatis...
- JDO是一个Java持久化规范,提供了一种简单的方法来存储Java对象到数据库或其他持久化存储介质中。 #### XML 1. **XML相关技术** - **CSS(层叠样式表)**:用于描述HTML或XML文档的外观和格式。 - **XSL(可...