- 浏览: 202795 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
moonskyii:
基于flex 和red5的视频聊天 -
yilinhust:
abc.html中有相关字体CSS吗?font.addFont ...
html 生成 pdf 实现思路和代码,基于itext -
feiyan35488:
好久不用ftl了,发现jsp其实还是蛮强大的
freemarker 源码分析 -
elliotann:
呵呵,我也是
freemarker 源码分析 -
lai555:
单步调试呢?
抛开myeclipse ,使用maven jetty 插件运行调试 web项目
Java 持久性 API (JPA) 是一个用于将包含数据的对象存储在关系数据库中的标准接口。该标准定义用于对 Java 对象进行批注、通过查询检索对象,并使用事务与数据库交互的接口。使用 JPA 接口的应用程序可以在不使用任何供应商特定的数据库代码的情况下使用不同的数据库。JPA 使您的应用程序可轻松地在不同的数据库供应商之间移植。 App Engine Java SDK 包括针对 App Engine 数据存储区的 JPA 1.0 的实现。该实现基于 DataNucleus 访问平台。由于 JPA 提供一个标准接口和关系数据库交互,而 App Engine 数据存储区并非一个关系数据库,因此存在 App Engine 实现不支持的 JPA 功能。在可能的情况下,我们已尽力呼吁注意这些功能。 有关 JPA 的详细信息,请参阅访问平台 1.1 文档。详细而言,请参阅 JPA 映射和 JPA API。 要使用 JPA 访问数据存储区,App Engine 应用程序需进行以下设置: 如果使用的是 Eclipse Google 插件,则第一项和第三项已为您处理。新项目向导将 JPA 和数据存储区 JAR 放置在正确的位置上,构建过程自动执行“增强”步骤。您仍必须手动创建 如果使用 Apache Ant 构建项目,您可以使用 SDK 内含的 Ant 任务来执行增强步骤。您必须在设置项目时复制 JAR 并创建配置文件。有关 Ant 任务的详细信息,请参阅使用 Apache Ant。 JPA 和数据存储区 JAR 内含在 App Engine Java SDK 中。您可以在 将 JAR 复制到您的应用程序的 确保 JPA 接口需要应用程序的 创建内容如下的文件: JPA 的 DataNucleus 实现在构建过程中使用后编译“增强”步骤使数据类与 JPA 实现相关联。 如果使用的是 Apache Ant,则 SDK 包括一个 Ant 任务来执行此步骤。有关 Ant 任务的详细信息,请参阅使用 Apache Ant。 您可通过命令行使用以下命令来对编译类执行增强步骤: classpath 必须包含来自 有关 DataNucleus 字节码增强器的详细信息,请参阅 DataNucleus 文档。 应用程序使用 EntityManager 类的实例和 JPA 交互。可通过实例化并调用 EntityManagerFactory 类的实例上的方法来获取此实例。工厂使用 JPA 配置(由名称 由于 EntityManagerFactory 实例需要时间来初始化,因此应该尽可能重用单个实例。执行该操作的一个简单方式是创建一个具有静态实例的单独包装器类,如下所示: 应用程序使用工厂实例来为访问数据存储区的每一请求创建一个 EntityManager 实例。 使用 EntityManager 来存储、更新和删除数据对象并执行数据存储区查询。 完成 EntityManager 实例时,您必须调用其 JPA 保存的每一对象都成为 App Engine 数据存储区中的实体。实体的类型从类的简单名称派生(无包名)。类的每个持久字段代表实体的一个属性,其中属性的名称与字段的名称相同(保留大小写)。 要将 Java 类声明为能够通过 JPA 存储到数据存储区或从数据存储区检索,请为该类指定 数据类要存储在数据存储区中的字段必须具有默认为持久的类型或显式声明为持久的类型。您可以在 DataNucleus 网站上找到详述 JPA 默认持久性行为的图表。要显式声明某一字段为持久,通常您将为其提供一个 字段的类型可以是以下任一类型: 数据类必须具有 public 或 protected 的默认构造函数,以及一个专用于存储对应数据存储区实体的主键的字段。您可以在 4 种不同类型的键字段中选择,每一种都使用不同的值类型和批注。(有关详细信息,请参阅创建数据:键。)最简单的键字段是在对象首次保存到数据存储区时,由 JPA 使用在类的所有其他实例中唯一的值自动填充的长整型值。长整型键使用 以下是一个示例数据类: App Engine 实例不支持 JPA 接口的以下功能:将 JDO 与 App Engine 配合使用
设置 JPA
war/WEB-INF/lib/
目录。persistence.xml
的配置文件必须位于应用程序的 war/WEB-INF/classes/META-INF/
目录中,配置为使 JPA 使用 App Engine 数据存储区。persistence.xml
并将其放置在 war/WEB-INF/classes/META-INF/
中。很快将更新该插件,以便可以自动执行此操作。复制 JAR
appengine-java-sdk/lib/user/orm/
目录中找到。war/WEB-INF/lib/
目录中。appengine-api.jar
也在 war/WEB-INF/lib/
目录中。(可能已在创建项目时进行过复制)App Engine DataNucleus 插件使用此 JAR 访问数据存储区。创建 persistence.xml 文件
war/WEB-INF/classes/META-INF/
目录中的命名为 persistence.xml
的配置文件。您可以直接在此位置上创建此文件,或者让您的构建过程从源目录复制此文件。<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
<persistence-unit name="transactions-optional">
<provider>org.datanucleus.store.appengine.jpa.DatastorePersistenceProvider</provider>
<properties>
<property name="datanucleus.NontransactionalRead" value="true"/>
<property name="datanucleus.NontransactionalWrite" value="true"/>
<property name="datanucleus.ConnectionURL" value="appengine"/>
</properties>
</persistence-unit>
</persistence>
增强数据类
java -cp classpath org.datanucleus.enhancer.DataNucleusEnhancer class-files
appengine-java-sdk/lib/tools/
目录的 JAR datastore-core-*.jar
、datanucleus-enhancer-*.jar
、asm-*.jar
和 geronimo-jpa-*.jar
(其中 *
是各 JAR 的相应版本号),以及所有数据类。获取 EntityManager 实例
"transactions-optional"
标识)来创建 EntityManager 实例。EMF.java
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public final class EMF {
private static final EntityManagerFactory emfInstance =
Persistence.createEntityManagerFactory("transactions-optional");
private EMF() {}
public static EntityManagerFactory get() {
return emfInstance;
}
}
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import EMF;
// ...
EntityManager em = EMF.get().createEntityManager();
close()
方法。在调用实例的 close()
方法后使用 EntityManager 实例是错误的。 try {
// ... do stuff with em ...
} finally {
em.close();
}
类和字段批注
@Entity
批注。例如:import javax.persistence.Entity;
@Entity
public class Employee {
// ...
}
@Basic
批注,但是目前有阻止这起作用的错误。因此,作为解决办法,您可以使用 @Enumerated
批注。import java.util.Date;
import javax.persistence.Enumerated;
import com.google.appengine.api.datastore.ShortBlob;
// ...
@Enumerated
private ShortBlob data;
java.util.List<...>
)@Entity
类的一个实例或实例集合@Id
批注,以及@GeneratedValue(strategy = GenerationType.IDENTITY)
批注:import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
// ...
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String firstName;
private String lastName;
private Date hireDate;
// Accessors for the fields. JPA doesn't use these, but your application does.
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getHireDate() {
return hireDate;
}
public void setHireDate(Date hireDate) {
this.hireDate = hireDate;
}
}
不支持的 JPA 功能
发表评论
-
ThreadLocal 学习
2011-03-21 18:17 846ThreadLocal 是线程内部变量,以空间换时间的做法,将 ... -
httpsession 详细内容整理
2011-03-13 22:25 1681最近在做登录和权限控制模块,用到了session,发现sess ... -
jstl 标签
2011-03-10 21:55 999核心标签库 它是JSTL中的核心库,为日常任务提供 ... -
项目中遇到的一些问题记录
2011-02-14 15:39 10341,项目无法连接数据库, can't open connect ... -
ioc 容器中进行 事务管理
2011-01-21 21:43 869spring中进行事务管理,是使用了动态代理技术,为 拦截的b ... -
java项目 异常处理 机制
2011-01-20 17:05 1087项目中 发现有好多异常需要检查处理,老大要求有异常直接抛出,不 ... -
gae 数据存储区 的 事务说明
2011-01-19 22:36 998事务 App Engine 数据存 ... -
gae 数据存储的 索引说明
2011-01-19 22:34 1054引入索引 App Engine 数据存储区会为应用程序要 ... -
gae 数据存储的 查询说明
2011-01-19 22:34 1335查询和索引 每个数据存储区查询都使用一个索引,即包含按指 ... -
filter 的执行顺序
2011-01-12 15:33 1080我记得是按 filter-mapping的顺序来执行的, 心里 ... -
java reflect 系列1
2010-12-23 14:24 713class Dog{ privat ... -
timer 计时器的使用
2010-10-27 11:52 831等等 一会出 -
抓取网页
2010-10-22 10:51 1061public static String getHtml ... -
eclipse 下安装插件
2010-09-21 11:50 929从别人那里搞的eclipse的安装tips Eclipse的插 ... -
在eclipse中安装velocity编辑器、Freemarker编辑器
2010-09-19 12:58 5028记录以便今后 ... -
jsp el 表达式介绍
2010-09-14 16:52 924JSP EL简介 语 法结构 ${ex ... -
html 动态引入 其他文件
2010-09-14 16:46 1087<!-- #include PathType = Fil ... -
ssi server side include
2010-09-14 16:46 11721.简介: SSI全称(Server Side In ... -
java学习笔记1
2009-11-03 22:16 870java JDK 的安装就不说了,主要是安装完成后配置JAV ...
相关推荐
GAE有一些特定的限制,比如不能直接访问数据库,而是通过其Datastore服务,这是一个NoSQL的数据存储系统。 **集成关键点** 1. **依赖注入**:Spring 3的DI特性可以帮助管理GAE中的对象生命周期,例如,通过配置文件...
2. **数据存储**:Spring与GAE的数据存储API(如JDO或JPA)结合,可以提供一个统一的数据访问层,简化对Google Datastore的操作。 3. **调度任务**:Spring的TaskExecution和TaskScheduler模块可以与GAE的后台任务...
Hibernate作为ORM工具,可以将Java对象与GAE的数据存储服务(如Datastore)进行对接,简化数据库操作。GAE则为这个应用提供了弹性云环境,自动处理负载和扩展需求。 在实际的集成过程中,可能涉及到以下步骤: 1. ...
2. **整合JPA**:GAE支持JPA通过App Engine Datastore进行数据存储。我们需要在`appengine-web.xml`配置文件中启用JPA,并在`persistence.xml`中配置实体管理工厂。接着,定义实体类,使用JPA注解如`@Entity`、`@Id`...
设计的工具,它的主要功能是帮助用户将 GAE 的数据存储(Datastore)中的实体转换为 CSV 文件格式,同时也支持从这些 CSV 文件中重新导入数据到 Datastore,使用 Java Persistence API (JPA) 的参考模型进行操作。...
【描述】"NoEnemyLG_Android 使用 GAE 的 Android 后端客户端" 暗示项目是为名为 NoEnemyLG 的 Android 应用程序设计的,这个应用可能是一个游戏或具有特定功能的服务,其后端逻辑和数据存储在 GAE 上。这意味着 ...
需要注意的是,由于GAE的运行环境有其特殊性,如不支持JDBC驱动直接连接数据库,因此在数据存储方面通常会使用Google Cloud Datastore或其他云数据库。此外,GAE的内存和CPU资源有限制,可能需要优化Spring应用以...
5. **GAE的数据存储**:GAE提供了NoSQL的Datastore服务,可以替代传统的关系数据库。开发者需要理解其数据模型和查询方式,以适应非关系型数据库的特点。 6. **GAE的自动扩展**:GAE能够根据应用的负载自动扩展实例...
Java环境下,可以通过JDO或JPA来操作数据存储,同样也有类似的任务队列和HTTP服务。 2. **数据存储:Datastore** GAE的数据存储系统叫做Datastore,一个分布式、非关系型数据库。它支持强一致性读取和最终一致性...
AppEngine 更好地支持 Maven AppEngine 插件和 JDO 数据存储 API。 设置和使用 Maven + JDO 通常比让 JPA + Spring 在 AppEngine 上正常工作要容易得多。 但是,您学习的 Spring Data API 可以通过正确的配置使用 ...
开发者可以在 GAE 上免费或付费使用 Google 的基础设施,包括计算、存储和数据库服务。GAE 支持多种语言,包括 Java,这使得 GAESpringSecurityJPA 项目可以直接在 GAE 上运行,享受云服务带来的高可用性和可扩展性...
Java在App Engine上的应用通常使用Servlet和JSP(JavaServer Pages)技术来处理HTTP请求,构建后端逻辑,并使用JDO(Java Data Objects)或JPA(Java Persistence API)来与数据存储系统交互。 在【gae-flightlog-...
在Java开发中,可能使用了如Servlets、JSP(JavaServer Pages)等技术来构建动态Web页面,以及JDO(Java Data Objects)或JPA(Java Persistence API)进行数据持久化,与GAE的数据存储服务(如Datastore)交互。...
对于高并发场景,GAE提供了数据存储服务,如Datastore,它是一种NoSQL数据库,能自动处理分布式数据存储和扩展性问题。 此外,项目可能还涉及身份验证和授权机制,如OAuth2或JWT(JSON Web Tokens),确保只有经过...
例如,GAE的数据存储服务不支持关系数据库的SQL查询,而是采用NoSQL风格的API。因此,开发者需要理解DataNucleus在GAE环境下的配置和使用方法,包括实体类的注解、持久化策略以及事务管理。 在尝试部署到GAE时,...
它提供了动态扩展性,能够根据应用程序的需求自动调整资源,同时还提供了一系列云服务,如数据存储、身份验证、任务队列和邮件服务等。GAE 的一个重要特点是其“无服务器”架构,开发者只需关心应用程序的代码,而...
4. **数据存储**:在AppEngine上,数据通常存储在Google Cloud Datastore中,这是一个NoSQL数据库,支持灵活的数据模型和高可用性。开发者可以使用GAE的JDO(Java Data Objects)或JPA(Java Persistence API)来...
- **分布式存储系统 Megastore**: 提供高效、可靠的数据存储服务。 - **大规模分布式系统的监控基础架构 Dapper**: 用于监控分布式系统的性能和行为。 - **Google应用程序引擎 (GAE)**: 提供了一个可扩展的Web...
4. **数据存储**:GAE 提供了 NoSQL 数据存储服务,称为 Datastore。通过插件,你可以方便地创建实体模型,管理数据,并使用 JDO(Java Data Objects)或 JPA(Java Persistence API)进行数据操作。 5. **任务调度...
- **Cloud Datastore**: 使用可扩展的Cloud Datastore进行数据存储,涵盖查询、事务处理以及使用Java Persistence API (JPA)进行数据建模等内容。 - **Cloud SQL**: 介绍如何利用Cloud SQL来为App Engine应用程序...