开始是因为不知道jdo的update方法是如何设计,然后想参考一下其他一些用泛化操作update时直接传入对象时的具体操作,继而下载了一整套spring的源码下来参详,结果给我发现了spring的orm包里面除了封装了现金主流的存储方式外,同样也支持jdo以及jpa,因此我亦根本不再需要自己去写基类对jdo的封装了,那就直接使用它吧。由于网上对spring以及jdo的结合例子相对较少,我亦十分之郁闷之后,怎么也配置不好<bean id="persistenceManagerFactory" class="org.springframework.orm.jdo.LocalPersistenceManagerFactoryBean"> 这个bean下面一些相关配置信息。之前在没有spring的时候通过一个工厂类直接返回persistenceManagerFactory,如下:private static final PersistenceManagerFactory pmfInstance =JDOHelper.getPersistenceManagerFactory("transactions-optional");因此在网上看到如下类似的配置的时候,我特别敏感,<property name="persistenceManagerFactoryName" value="transactions-optional"/>,当然我亦会去看看这个class里面是否真的有这个parameter,小弟对spring的源码还没有理解透切,稍微看了下,在这个类里面发现有这个class,就不顾一起,先试试先。可惜当你真正使用的时候,结果是会抛错的。在艰难寻找之下,在该地址找到了一份令我启动服务不再抛错的代码(http://wjing63.iteye.com/blog/464310),但出乎意料的是,在进行makePersistent操作的时候,可恶的错误又来了,exception如下:
java.lang.NoSuchMethodError: javax.jdo.PersistenceManager.makePersistent(Ljava/lang/Object;)V
at org.springframework.orm.jdo.JdoTemplate$9.doInJdo(JdoTemplate.java:374)
at org.springframework.orm.jdo.JdoTemplate.execute(JdoTemplate.java:228)
at org.springframework.orm.jdo.JdoTemplate.makePersistent(JdoTemplate.java:372)
由于此时此刻我已被疲劳轰炸得体无完肤,因此继续google,找到了相当具说服力的一个论坛中的帖子(http://www.jpox.org/servlet/forum/viewthread?thread=3500)按图索引,重新更新应用中的spring.jar,结果就好了。
完整的配置总结如下:
<bean id="persistenceManagerFactory"
class="org.springframework.orm.jdo.LocalPersistenceManagerFactoryBean">
<property name="jdoProperties">
<props>
<prop key="javax.jdo.PersistenceManagerFactoryClass">
org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory
</prop>
<prop key="javax.jdo.option.ConnectionURL">
appengine
</prop>
<prop key="javax.jdo.option.NontransactionalRead">
true
</prop>
<prop key="javax.jdo.option.NontransactionalWrite">
true
</prop>
<prop key="javax.jdo.option.RetainValues">
true
</prop>
<prop key="datanucleus.appengine.autoCreateDatastoreTxns">
true
</prop>
</props>
</property>
<!-- property name="persistenceManagerFactoryName" value="transactions-optional"/-->
</bean>
<bean id="jdoTransactionManager" class="org.springframework.orm.jdo.JdoTransactionManager">
<property name="persistenceManagerFactory" ref="persistenceManagerFactory"/>
</bean>
<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="jdoTransactionManager"/>
<property name="target" ref="employeeService"/>
<property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="del*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
分享到:
相关推荐
Struts2、Spring、JDO(Java Data Objects)和AJAX(Asynchronous JavaScript and XML)是四个在Web应用开发中非常关键的技术。这篇博客“Struts2,Spring,JDO,AJAX on GAE”可能探讨了如何在Google App Engine (GAE)...
【gae strus2 spring 整合】是一种在Google App Engine(GAE)平台上将Struts2和Spring框架集成的技术方案。这种整合旨在充分利用Struts2的MVC架构和Spring的依赖注入(DI)以及面向切面编程(AOP)能力,以构建高效...
2. **数据存储**:Spring与GAE的数据存储API(如JDO或JPA)结合,可以提供一个统一的数据访问层,简化对Google Datastore的操作。 3. **调度任务**:Spring的TaskExecution和TaskScheduler模块可以与GAE的后台任务...
配置 JDO" 涉及到的是将 Google 应用引擎(Google App Engine,GAE)与 Spring 框架以及 Java Data Objects(JDO)进行集成的过程。这篇博文可能是指导开发者如何在 GAE 平台上设置 Spring 和 JDO 的详细教程。在 ...
标题“spring+gae+hibernate”所提及的是一个技术集成项目,主要涉及Spring框架、Google App Engine(GAE)和Hibernate三个关键组件。让我们详细探讨这三个技术以及它们的集成。 Spring是一个开源的Java企业级应用...
mvn install)$ git clone https://github.com/scratches/spring-boot-sample-gae$ cd spring-boot-sample-gae$ mvn gae:deploy也作为部署在 WTP 或常规 Tomcat 容器中的 WAR 运行。 main()应用程序(普通的 Spring ...
【基于GAE的Demo】是一个使用Eclipse集成开发环境构建的项目,主要展示了如何在Google App Engine(GAE)平台上整合Struts2、Spring和Tiles框架。GAE是Google提供的一个云计算平台,允许开发者在Google的基础设施上...
总结来说,这个项目展示了如何利用Flex构建用户界面,Spring处理业务逻辑,BlazeDS作为数据通信中介,以及GAE的JDO进行数据存储,形成一个完整的客户端-服务器端应用。这种架构结合了富客户端的交互体验和云计算的可...
标题 "spring3+springmvc+jpa2+gae" 指的是一个集成开发环境,它结合了Spring框架的三个核心组件以及Google App Engine (GAE)。这个项目旨在展示如何在GAE上运行一个基于Spring 3、Spring MVC和JPA 2.0的应用程序。...
在Google App Engine (GAE)环境中,JDO API 2.2是开发者常用的工具,它允许应用程序与GAE的数据存储服务进行交互。JDO 2.2提供了一种简单、灵活且强大的方式来管理对象的生命周期,包括创建、查询、更新和删除对象。...
【标题】"gae-pytorch-master_pytorch_pytorchgae_GAE_自编码器_gaepytorchmaster_" 提供的信息表明,这是一个使用PyTorch实现的图自编码器(Graph Autoencoder, GAE)项目,其核心是将自编码器的概念应用于图数据。...
GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则
设置和使用 Maven + JDO 通常比让 JPA + Spring 在 AppEngine 上正常工作要容易得多。 但是,您学习的 Spring Data API 可以通过正确的配置使用 AppEngine 的数据存储。 Google 使用 JPA 的指南在这里: : 如果您想...
**图形自动编码器(GAE)在PyTorch中的实现** **一、GAE概述** 图形自动编码器(Graph Autoencoder, GAE)是一种应用于图数据的深度学习模型,它结合了自动编码器(Autoencoder)的思想与图神经网络(Graph Neural...
Spring on GAE,即Spring框架在Google App Engine (GAE)上的应用,是将流行的Java企业级开发框架Spring与Google的云计算平台Google App Engine相结合的技术实践。本文将深入探讨Spring on GAE的相关知识点,包括其...
pass之GAE入门教程, 学习GAE
通常,Python博客应用可能会使用Django或Flask框架,而Java可能使用Spring Boot。 4. **源码管理**:在部署前,源代码应该被组织在一个版本控制系统中,如Git。这有助于跟踪更改,并确保团队合作时的一致性。 5. *...
标题 "GAE包(以配置好,解压可用)" 提供的信息表明,这是一个已经预配置好的Google App Engine (GAE)开发环境的压缩包。GAE是Google提供的一项平台即服务(PaaS),允许开发者在Google的基础设施上运行自己的Web...
Chapter 5: JDO Object Relationships and Queries Chapter 6: Implementing MVP, an Event Bus, and Other GWT Pattern Chapter 7: Background Processing and Feed Management Chapter 8: Authentication using ...