相关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
解决方法:
这个错误是因为spring的JdoSupport依赖于spring-dao.jar ,
也就是需要spring-jdo.jar和spring-dao.jar加到构建目录中。
分享到:
相关推荐
### JDO 使用手册知识点概述 #### 一、JDO简介 Java Data Objects (JDO) 是一种用于管理和操作持久化对象的标准API。它提供了一种简单而强大的方式来处理对象到数据库之间的映射,适用于各种数据库环境。JDO的目标...
总结来说,JDO 是一种强大且灵活的Java持久化技术,它简化了对象与数据库的交互,让开发者可以更加专注于业务逻辑的实现,而不是数据库操作。通过理解JDO的基本原理和开发流程,开发者可以有效地利用它来构建高效、...
2. **对象查询**:通过`PersistenceManager`的`query()`方法构建查询,使用JDOQL(JDO Query Language)进行对象检索。 3. **对象更新**:对持久化对象进行修改后,调用`PersistenceManager`的`flush()`方法,将变更...
JDO的使用简化了Hive的开发和维护,使得数据存储和查询的逻辑更加清晰。 三、HDFS与JDO的结合 HDFS是Hadoop分布式文件系统,用于存储大规模数据集。虽然HDFS本身不直接支持JDO,但在某些场景下,通过中间件或自定义...
1. **设计简单**:JDO的API设计更为简洁,降低了学习和使用的难度。 2. **细粒度控制**:开发者可以完全控制持久化过程,包括缓存、并发和同步策略。 3. **编码简便**:JDO隐藏了底层持久化细节,让开发人员可以更...
3. **元数据配置**:JDO使用XML文件(JDO MetaData)或注解来描述对象和数据库表之间的映射关系,包括字段映射、关系映射等。 4. **透明性**:JDO的核心特性之一就是透明性,即对象的持久化操作对程序员来说几乎是...
总结来说,JDO作为Java平台的数据持久化标准,为开发者提供了便捷的数据库访问方式。通过理解和掌握JDO,我们可以更高效地管理Java对象与数据库之间的交互,实现更健壮和高性能的应用程序。在“全面了解JDO第五部分...
在《全面了解JDO》的第一部分中,我们已经初步介绍了Java Data Objects (JDO)的基本概念与使用场景。本部分将深入探讨JDO的核心功能和技术细节,帮助读者更好地理解和掌握这一强大的持久化框架。 #### 二、JDO概述 ...
### 使用Spring结合JDO与Hibernate实现应用透明持久性 #### 一、引言 随着Java技术的发展,数据持久化成为了现代软件开发中的一个重要环节。在众多的持久化框架和技术中,JDO(Java Data Objects)作为一种非EJB的...
总结,xdoclet-plugin-jdo-1.0.3为JDO开发带来了便利,通过注解驱动的方式,减少了手动编写元数据文件的工作,提升了开发效率,使得开发者能够更加专注于业务逻辑,而非繁琐的配置。理解和熟练掌握这款插件,将对...
总结来说,Java 数据对象技术 JDO 是为了简化 Java 应用程序中数据的持久化过程,通过提供统一的 API 和数据模型,减少开发者对底层数据访问技术的理解和使用,从而提高开发效率和代码的可维护性。无论是小型应用...
总结来说,这个项目展示了如何利用Flex构建用户界面,Spring处理业务逻辑,BlazeDS作为数据通信中介,以及GAE的JDO进行数据存储,形成一个完整的客户端-服务器端应用。这种架构结合了富客户端的交互体验和云计算的可...
总结起来,这个开源项目提供了一个基于注解的JDO开发工具,简化了模型类变更时的元数据管理。它依赖于Servlets处理Web请求,JDO API进行数据持久化,Ant进行自动化构建,以及JUnit或其他测试框架进行测试。通过使用...
总结起来,"appengine-jersey-jackson-jdo"项目是一个基于Google App Engine的RESTful API服务,利用Jersey提供REST服务,Jackson处理JSON序列化和反序列化,JDO则负责数据的持久化操作。这个项目提供了一种结构化的...
GAE提供了数据存储区,可以配合Java数据对象(JDO)标准接口使用。JDO是一种持久化框架,允许您轻松地将Java对象与数据库交互。通过JDO,您可以方便地在GAE的数据存储区中创建、查询、更新和删除数据。 **五、用户...
总结了常见的spring面试题,方便学习者查漏补缺。 使用 Spring 框架的好处是什么? 轻量: Spring 是轻量的, 基本的版本大约 2MB。 控制反转: Spring 通过控制反转实现了松散耦合, 对象们给出它们的依 赖, ...