我正在尝试创建一个部分依赖于人口普查部门 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/