java - JPA 和装饰者模式

标签 java jpa google-cloud-datastore decorator

我正在尝试创建一个部分依赖于人口普查部门 TIGER/Lines 数据 Shapefile 的应用程序,该文件具有此处定义的记录布局:

http://www.census.gov/geo/www/tiger/tgrshp2010/TGRSHP10AA.pdf

我的想法是使用装饰器模式来创建一个基要素类,其中包含所有数据类型共有的字段,然后通过装饰器模式为各个要素类型(州、县、国会选区等)扩展它。但是,我计划使用 Google App Engine 进行托管,因此我必须通过 JDO 或 JPA 来执行此操作。我更喜欢 JPA。

我可以映射装饰对象吗?我的想法是,基本要素类将使用@Entity 进行注释,然后扩展将包含特定于装饰对象的映射字段。由于 GAE 数据存储不是 RDBMS,我想我可以摆脱它。

最佳答案

如果你使用了Decorator模式,就意味着你使用了组合。所以你可以做的就是将你想要装饰的类标记为 Embeddable在你的装饰器中,将你的装饰类标记为 Embedded .

如果您更喜欢使用继承,您的基类不是一个实体,因为它只是您想要继承的东西,而不是存储它本身是数据库。要创建一个将从其他真实实体继承的基类,有一个注解:@MappedSuperclass

根据GAE docs , 两者均受支持。

希望对您有所帮助!

关于java - JPA 和装饰者模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5358158/

相关文章:

python - 将 Google Cloud Datastore 与 NDB API 一起使用?

google-app-engine - App Engine Datastore 上的 Golang - 使用 PutMulti 提高性能

java - Windows XP 防火墙阻止入站 UDP 数据包 : programmatic exception for Java program or workaround?

java - JEdi​​torPane、JTextPane 的 JTextArea 中的 HTML

java - Android:按钮虽然创建但为空

java - hibernate/JPA : only one entry can have specific field value

java - Google App Engine 数据存储中的多线程

Java:如何创建适用于我的日期类的方法

java - Play Framework 注入(inject)错误

java - JPA Query.getResultList() - 以通用方式使用