我发现了一个不同的解决方案,没有浪费像生成一个类每个KEY
一样多的内存。我生成单个类,大致看起来像这样:
public class References {
// First, initialise all unique keys
public static final UniqueKey<TAuthorRecord> SysPk_14655 =
createUniqueKey(TAuthor.T_AUTHOR, TAuthor.ID);
// Then initialise all foreign keys
public static final Reference<TBookRecord, TAuthorRecord> SysFk_14666 =
createReference(SysPk_14655, TBook.T_BOOK, TBook.AUTHOR_ID);
public static final Reference<TBookRecord, TAuthorRecord> SysFk_14667 =
createReference(SysPk_14655, TBook.T_BOOK, TBook.CO_AUTHOR_ID);
// Factory method for unique keys
protected static <R extends Record> UniqueKey<R>
createUniqueKey(Table<R> table, TableField<R, ?>... fields) {
// Factory method for foreign keys referencing unique keys
protected static <R extends Record, U extends Record> Reference<R, U>
createReference(UniqueKey<U> key, Table<R> table, TableField<R, ?>... fields) {
}
从所生成的表格类的实际表然后可以参考和使用上述密钥。我按照BobG的建议查看了JPA注释。但我没有发现他们非常有用的描述:
- 多场键(
@IdClass
需要一个类型作为参数,我想避免这种类型)
- 多字段引用(怎么办呢?)
- 从一个表到另一个表使用不同的键的多个引用
- 唯一键与主键共享许多属性。
的一些评论中提到我为什么要建立这样一个发电机,因为有很多既定的框架。我正在为http://www.jooq.org做这个。我觉得jOOQ正在填补今天数据库抽象可能性的空白。
听起来像是在烫发空间填满时获取OutOfMemoryErrors的秘诀。 – duffymo 2011-05-02 18:26:59
谢谢duffymo。这就是我问的原因。我很好奇具体的数字,虽然 – 2011-05-02 18:27:54
没有,因为我不知道你产生什么。我很好奇 - 当你有很多持久化解决方案(直接JDBC,Hibernate,iBatis,TopLink,JPA等)时,为什么你认为这是必要的?你买的这些解决方案不是什么? – duffymo 2011-05-02 18:30:45