gpt4 book ai didi

java - com.google.appengine.api.datastore.Text 的替代品?

转载 作者:行者123 更新时间:2023-11-30 04:56:13 25 4
gpt4 key购买 nike

在 Google App Engine JPA 实体中,java.lang.String 限制为 500 个字符,而 com.google.appengine.api.datastore.Text具有无限大小(需要注意的是,entityManager.persist 不适用于大于 1 Mb 的实体 - 我相信,但找不到有关它的引用) .

但是,如果我使用 Google 特定的 Text 类型,我会将我的应用程序与 Google App Engine 紧密结合。我想知道是否有更轻量级的方法来实现相同的结果,例如通过一些标准注释。

也许,用 JSR-303 注释来注释 String。如果大小超过 500,它会知道使用非索引文本类型。示例:@Size(max = 3000)

显然我只是在做梦,但也许有一些标准方法可以避免 App Engine 特定的数据类型。有人知道吗?

更新:found issue 10, Support @Lob JPA annotation在 datanucleus-appengine 中Google App Engine 的 DataNucleus 插件

最佳答案

我猜你可能已经想到了这一点;但无论如何我都会发布这个,因为它添加了你的问题中未涵盖的一点。我的解决方案是将其设为私有(private),然后对于我的对象定义,我不会返回 Text 对象。我承认这并不能实现您避免使用 App Engine 特定数据类型的目标;但它至少使您不必在依赖于 Text 对象的一个​​类之外重写代码(如果您决定将应用程序从应用程序引擎移植出去)。

例如,假设文本是 blogPost 变量...

public class BlogPost {
private Text post;

// ...

public String getPost() {
return post.getValue();
}

public void setPost(String val) {
this.post = new Text(val);
}
}

如果该代码感觉有点草率,那么执行此操作可能会更有效(我不知道 Text#getValue 方法内部如何工作)...

public class BlogPost {
private Text post;
private String postValue;
// ...

public String getPost() {
return postValue;
}

public void setPost(String val) {
this.post = new Text(val);
this.postValue = val;
}
}

关于java - com.google.appengine.api.datastore.Text 的替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8458247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com