`
acheron
  • 浏览: 65664 次
  • 性别: 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加到构建目录中。

 

 

分享到:
评论

相关推荐

    JAVA笔试总结 -- 非常全面

    JAVA笔试总结 非常全面 基本上囊括了Java所有常考知识点,并且每个知识点都有详细解释。 知识点主要包括: native,transient,volatile,strictfp,CMM,synchronized,java socket,压缩与解压缩,多线程,垃圾回收算法,...

    全网最热spring问题总结.pdf

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

    java 面试题 总结

    ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector...

    Spring API

    1.1.1. 使用场景 2. Spring 2.0和 2.5的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 新的bean作用域 2.2.2. 更简单的XML配置 2.2.3. 可扩展的XML编写 2.2.4. Annotation(注解)驱动配置 2.2.5. 在...

    Spring中文帮助文档

    12.5.2. 使用 SqlMapClientTemplate 和 SqlMapClientDaoSupport 12.5.3. 基于原生的iBATIS API的DAO实现 12.6. JPA 12.6.1. 在Spring环境中建立JPA 12.6.2. JpaTemplate 和 JpaDaoSupport 12.6.3. 基于原生的...

    Spring 2.0 开发参考手册

    1.2. 使用场景 2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 ...

    spring chm文档

    Spring Framework 开发参考手册 Rod Johnson Juergen Hoeller Alef Arendsen Colin Sampaleanu Rob Harrop Thomas Risberg Darren Davison Dmitriy Kopylenko Mark Pollack ...19.2. 使用Spring JMS ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    1.2. 使用场景 2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@...

    软件开发java面试笔试题大全

    本资料是本人从事java开发8年多来所总结的java面试笔试题目,其中包括Java基础方面;java代码与编程题;线程编程方面;Jsp方面;Servlet方面;Jdbc、Jdo方面;Xml方面;EJB方面;应用服务器方面;J2EE,MVC...

    Spring面试题

    在对由三部分组成的 Spring 系列 的第 1 部分进行总结时,我使用了一个示例,演示了如何通过 Spring IOC 容器注入应用程序的依赖关系(而不是将它们构建进来)。 我用开启在线信用帐户的用例作为起点。对于该实现,...

    java术语大全(面试时有时会问到的专业术语)

    面试时经常HR会经常问你一些技术方面的术语,当你什么都不知道的时候,往往会给面试管一些非常不好的...其实你应该都了解一下的,本人在百度或者其他途径总结了一些这方面的java术语,希望能给你们带来一些小小的帮助...

    Java面试宝典2010版

    19、Jdo是什么? 125 20、什么是spring的IOC AOP 126 21、STRUTS的工作流程! 126 22、spring 与EJB的区别!! 126 八. 软件工程与设计模式 126 1、UML方面 126 2、j2ee常用的设计模式?说明工厂模式。 126 3、开发...

Global site tag (gtag.js) - Google Analytics