- 浏览: 197333 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 802ThreadLocal 是线程内部变量,以空间换时间的做法,将 ... -
httpsession 详细内容整理
2011-03-13 22:25 1587最近在做登录和权限控制模块,用到了session,发现sess ... -
jstl 标签
2011-03-10 21:55 956核心标签库 它是JSTL中的核心库,为日常任务提供 ... -
项目中遇到的一些问题记录
2011-02-14 15:39 10001,项目无法连接数据库, can't open connect ... -
ioc 容器中进行 事务管理
2011-01-21 21:43 842spring中进行事务管理,是使用了动态代理技术,为 拦截的b ... -
java项目 异常处理 机制
2011-01-20 17:05 1031项目中 发现有好多异常需要检查处理,老大要求有异常直接抛出,不 ... -
gae 数据存储区 的 事务说明
2011-01-19 22:36 966事务 App Engine 数据存 ... -
gae 数据存储的 索引说明
2011-01-19 22:34 1016引入索引 App Engine 数据存储区会为应用程序要 ... -
gae 数据存储的 查询说明
2011-01-19 22:34 1299查询和索引 每个数据存储区查询都使用一个索引,即包含按指 ... -
filter 的执行顺序
2011-01-12 15:33 1032我记得是按 filter-mapping的顺序来执行的, 心里 ... -
java reflect 系列1
2010-12-23 14:24 675class Dog{ privat ... -
timer 计时器的使用
2010-10-27 11:52 793等等 一会出 -
抓取网页
2010-10-22 10:51 1028public static String getHtml ... -
eclipse 下安装插件
2010-09-21 11:50 894从别人那里搞的eclipse的安装tips Eclipse的插 ... -
在eclipse中安装velocity编辑器、Freemarker编辑器
2010-09-19 12:58 4984记录以便今后 ... -
jsp el 表达式介绍
2010-09-14 16:52 889JSP EL简介 语 法结构 ${ex ... -
html 动态引入 其他文件
2010-09-14 16:46 1054<!-- #include PathType = Fil ... -
ssi server side include
2010-09-14 16:46 11411.简介: SSI全称(Server Side In ... -
java学习笔记1
2009-11-03 22:16 845java JDK 的安装就不说了,主要是安装完成后配置JAV ...
相关推荐
数据生成是通过 CPIM 和 Kundera GAE 数据存储扩展提供的。 ###Bulild 只需运行: mvn clean package 创建了一个可执行的 jar。 请注意,pom 文件包含的修改版本和作为依赖项,这些在 maven 的公共存储库中不...
实现了spring3+springmvc+jpa2.0+gae之间的集成,项目可直接运行
GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则
Eclipse开发 Gae,Struts2,Spring,云计算,学习gae云计算的好例子
pass之GAE入门教程, 学习GAE
《GAE编程指南》是一种云计算服务,跟其他的同类产品不同,它提供了一种简单的应用程序...你将会学到有关App Engine的应用程序服务器架构、运行时环境以及可伸缩数据存储区等知识,还可以学到一些应用程序优化方法。
图自编码器GAE的pytorch实现,参考论文vgae
《GAE编程指南》是一种云计算服务,跟其他的同类产品不同,它提供了一种简单的应用程序...你将会学到有关App Engine的应用程序服务器架构、运行时环境以及可伸缩数据存储区等知识,还可以学到一些应用程序优化方法。
GAE平台开发应用时,简单的webapp框架的使用
图形自动编码器GAE的pytorch实现,可参考论文VGAE
云计算下的PaaS中的GAE和SAE平台
基于Google App Engine(GAE)的Java和GWT应用开发_Google App Engine Java and GWT Application Development Nov.2010
实现了gae与spring3之间的集成
使用 Bigtable、Blobstore 和 Google Storage 实现 GAE 存储
GAE上可以用的JAVA Blog源代码 可以在GAE上直接使用,支持图片上传等。 源代码是修改其他网友的普通blog程序而来,只做了必要的修改,原结构保留 最新版本请去主页下载 http://redpower1998.appspot.com 主页包括...
在,它使用进行数据存储查询。得到帮助$ java -jar kitten-1.0-SNAPSHOT-shaded.jar --help NAME kitten - GAE Datastore command line utilitySYNOPSIS kitten [(-A <appId> | --appId )] [(-h | --help)] [(-P ...
百度的bae跟谷歌的gae对比,百度的资源限制很少,但是资源很少,教程很少。。
GAE 集成程序,共有三个软件包,解压后安装包里的python然后运行SDU里的exe文件,最后运行客户端加服务端中localproxy中的proxy.py就可以了
关于GAE的教程、工具与文档(建站) 全
DSQL扩展了gae数据存储区,以实现各种数据存储区之间的本地联接,以及为未索引的属性提供本地过滤。 DSQL使用熟悉的sql语法。 SQL联接使用数据存储统计信息进行了优化。 假定数据存储架构的设计类似于关系数据库。...