`
acheron
  • 浏览: 66384 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JDO使用总结

阅读更多

相关demo项目查看

http://acheron.iteye.com/admin/blogs/402499

 

常见操作

 

A.查询操作

	public List<Record> listAllRecord() {
		PersistenceManager pm = getPersistenceManager();
//		Transaction tx= pm.currentTransaction();
		try {
//			tx.begin();
			Query query = pm.newQuery(Record.class);
			query.setOrdering("addDate DESC");

//方法1:获得查询结果,得到对象数组
//			Collection entries = (Collection) query.execute();
//			Object objRecord[]=(Object [])entries.toArray();
			
//方式2:枚举集合中的entity并作单独处理			
//			Collection entries = (Collection) query.execute();
//			Iterator i = entries.iterator();
//			while (i.hasNext()) {
//				Record obj = (Record) i.next();
//				System.out.println("do sth on the record!");
//			}

//方法3:获得list,显式把返回的Collection对象转换为List对象			
//			Collection entries = (Collection) query.execute();
//			List<Record> list = new ArrayList(entries);			
			
//方法4:直接强制转换为List返回
			List<Record> list = (List<Record>) query.execute();
			
//			tx.commit(); 
			return list;
		} catch (Exception e) {
			e.printStackTrace();
//			if (tx.isActive()) {
//				tx.rollback();
//			}
		}
	
query.execute();
		return null;
	}
	
	public List<Record> listAllRecord(int page) {
		PersistenceManager pm = getPersistenceManager();
//		Transaction tx= pm.currentTransaction();;
		try {
			page = (page == 0) ? 1 : page;
			Query query = pm.newQuery(Record.class);
			query.setOrdering("addDate DESC");
			query.setRange(PAGE_SIZE * (page - 1), PAGE_SIZE * page);
			return (List<Record>) pm.detachCopyAll((Collection<Record>) query.execute());
		} finally {
			releasePersistenceManager(pm);
		}
	}
	
	public int getPage(){
		PersistenceManager pm = getPersistenceManager();
		Query query = pm.newQuery(Record.class);
		query.setOrdering("addDate DESC");
		List<Record> list = (List<Record>) query.execute();
		return (int)(list.size()/10+1);
	}

 

 

B.删除操作

	public void removeRecordById(Long id) {
		PersistenceManager pm = getPersistenceManager();
//		Transaction tx= pm.currentTransaction();
		try {
//			tx.begin();
			Extent r = pm.getExtent (Record.class, false);
			String filter = "id == "+id;//注意是==
			Query query = pm.newQuery(r,filter);

//方式1:迭代Collection获得元素然后处理
//			Collection entries = (Collection) query.execute();
//			Iterator i = entries.iterator();
//			while (i.hasNext()) {
//				Record delRecord = (Record) i.next();
//				pm.deletePersistent(delRecord);
//			}		

//方式2:作为list处理
			List<Record> list = (List<Record>) query.execute();
//			if(!list.isEmpty()){}//isEmpty是首先判断是否为空(null),然后判断size
//			if(list.size()!=0){ }
//			if(list.iterator().hasNext()){}
			if(!list.isEmpty()){
				Record delRecord = list.get(0);
				pm.deletePersistent(delRecord);
			}
			
//			tx.commit();
		}catch (Exception e) {
			e.printStackTrace();
//			if (tx.isActive()) {
//				tx.rollback();
//			}
		}
	}

 

异常处理:

dataNucleus Enhancer (version 1.1.0) : Enhancement of classes

2009-6-1 16:02:25 org.datanucleus.metadata.MetaDataManager loadClasses
严重: Class "com.jun.demos.book.dao.RecordJdoDao" was not found in the CLASSPATH. Please check your specification and your CLASSPATH.
org.datanucleus.exceptions.ClassNotResolvedException: Class "com.jun.demos.book.dao.RecordJdoDao" was not found in the CLASSPATH. Please check your specification and your CLASSPATH.
	at org.datanucleus.JDOClassLoaderResolver.classForName(JDOClassLoaderResolver.java:255)
	at org.datanucleus.JDOClassLoaderResolver.classForName(JDOClassLoaderResolver.java:420)
	at org.datanucleus.metadata.MetaDataManager.loadClasses(MetaDataManager.java:337)
	at org.datanucleus.enhancer.DataNucleusEnhancer.getFileMetadataForInput(DataNucleusEnhancer.java:723)
	at org.datanucleus.enhancer.DataNucleusEnhancer.enhance(DataNucleusEnhancer.java:525)
	at org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1235)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.google.appengine.tools.enhancer.Enhancer.execute(Enhancer.java:57)
	at com.google.appengine.tools.enhancer.Enhance.<init>(Enhance.java:60)
	at com.google.appengine.tools.enhancer.Enhance.main(Enhance.java:41)

DataNucleus Enhancer completed with success for 0 classes. Timings : input=78 ms, enhance=0 ms, total=78 ms. Consult the log for full details
DataNucleus Enhancer completed and no classes were enhanced. Consult the log for full details

 

解决方法:

这个错误是因为springJdoSupport依赖于spring-dao.jar

也就是需要spring-jdo.jarspring-dao.jar加到构建目录中。

 

 

分享到:
评论

相关推荐

    JDO使用手册

    ### JDO 使用手册知识点概述 #### 一、JDO简介 Java Data Objects (JDO) 是一种用于管理和操作持久化对象的标准API。它提供了一种简单而强大的方式来处理对象到数据库之间的映射,适用于各种数据库环境。JDO的目标...

    JDO原理及开发实现

    总结来说,JDO 是一种强大且灵活的Java持久化技术,它简化了对象与数据库的交互,让开发者可以更加专注于业务逻辑的实现,而不是数据库操作。通过理解JDO的基本原理和开发流程,开发者可以有效地利用它来构建高效、...

    JDO原理及开发.doc

    2. **对象查询**:通过`PersistenceManager`的`query()`方法构建查询,使用JDOQL(JDO Query Language)进行对象检索。 3. **对象更新**:对持久化对象进行修改后,调用`PersistenceManager`的`flush()`方法,将变更...

    jdo2-api-2.3-ec hive hdfs 所需jar

    JDO的使用简化了Hive的开发和维护,使得数据存储和查询的逻辑更加清晰。 三、HDFS与JDO的结合 HDFS是Hadoop分布式文件系统,用于存储大规模数据集。虽然HDFS本身不直接支持JDO,但在某些场景下,通过中间件或自定义...

    J2EE中用EntityBean和JDO的优缺点分析

    1. **设计简单**:JDO的API设计更为简洁,降低了学习和使用的难度。 2. **细粒度控制**:开发者可以完全控制持久化过程,包括缓存、并发和同步策略。 3. **编码简便**:JDO隐藏了底层持久化细节,让开发人员可以更...

    全面了解JDO数据库编程

    3. **元数据配置**:JDO使用XML文件(JDO MetaData)或注解来描述对象和数据库表之间的映射关系,包括字段映射、关系映射等。 4. **透明性**:JDO的核心特性之一就是透明性,即对象的持久化操作对程序员来说几乎是...

    全面了解JDO第五部分

    总结来说,JDO作为Java平台的数据持久化标准,为开发者提供了便捷的数据库访问方式。通过理解和掌握JDO,我们可以更高效地管理Java对象与数据库之间的交互,实现更健壮和高性能的应用程序。在“全面了解JDO第五部分...

    全面了解JDO第二部分

    在《全面了解JDO》的第一部分中,我们已经初步介绍了Java Data Objects (JDO)的基本概念与使用场景。本部分将深入探讨JDO的核心功能和技术细节,帮助读者更好地理解和掌握这一强大的持久化框架。 #### 二、JDO概述 ...

    Using Spring with JDO and Hibernate 中文版

    ### 使用Spring结合JDO与Hibernate实现应用透明持久性 #### 一、引言 随着Java技术的发展,数据持久化成为了现代软件开发中的一个重要环节。在众多的持久化框架和技术中,JDO(Java Data Objects)作为一种非EJB的...

    xdoclet-plugin-jdo-1.0.3.zip

    总结,xdoclet-plugin-jdo-1.0.3为JDO开发带来了便利,通过注解驱动的方式,减少了手动编写元数据文件的工作,提升了开发效率,使得开发者能够更加专注于业务逻辑,而非繁琐的配置。理解和熟练掌握这款插件,将对...

    2022年Java数据对象技术JDOJava教程.docx

    总结来说,Java 数据对象技术 JDO 是为了简化 Java 应用程序中数据的持久化过程,通过提供统一的 API 和数据模型,减少开发者对底层数据访问技术的理解和使用,从而提高开发效率和代码的可维护性。无论是小型应用...

    flex + spring + BlazeDS + google App JDO 实现一个CRUD.

    总结来说,这个项目展示了如何利用Flex构建用户界面,Spring处理业务逻辑,BlazeDS作为数据通信中介,以及GAE的JDO进行数据存储,形成一个完整的客户端-服务器端应用。这种架构结合了富客户端的交互体验和云计算的可...

    annotation tool for JDO development-开源

    总结起来,这个开源项目提供了一个基于注解的JDO开发工具,简化了模型类变更时的元数据管理。它依赖于Servlets处理Web请求,JDO API进行数据持久化,Ant进行自动化构建,以及JUnit或其他测试框架进行测试。通过使用...

    appengine-jersey-jackson-jdo:带有Jersey,Jackson和JDO依赖关系的Google App Engine Maven项目

    总结起来,"appengine-jersey-jackson-jdo"项目是一个基于Google App Engine的RESTful API服务,利用Jersey提供REST服务,Jackson处理JSON序列化和反序列化,JDO则负责数据的持久化操作。这个项目提供了一种结构化的...

    GAE--java使用入门.doc

    GAE提供了数据存储区,可以配合Java数据对象(JDO)标准接口使用。JDO是一种持久化框架,允许您轻松地将Java对象与数据库交互。通过JDO,您可以方便地在GAE的数据存储区中创建、查询、更新和删除数据。 **五、用户...

    全网最热spring问题总结.pdf

    总结了常见的spring面试题,方便学习者查漏补缺。 使用 Spring 框架的好处是什么? 轻量: Spring 是轻量的, 基本的版本大约 2MB。 控制反转: Spring 通过控制反转实现了松散耦合, 对象们给出它们的依 赖, ...

Global site tag (gtag.js) - Google Analytics