有很多关于Java对象大小的Q& A,这很容易理解。但我想知道PermGen空间中Java类的大小。
我想知道这个的原因是因为我正在编写代码生成器,生成了很多类。基本上,我为数据库中的每个表/视图生成两个类。现在我也想建模外键关系。而不是维护一个复杂的,可序列化的对象结构(想想一个具有唯一键的表被属于具有其他外键的其他表的几个外键引用等),我宁愿每{{1}生成一个类每个UNIQUE KEY
一个班级。
以下是我的问题:
FOREIGN KEY
类,public
类和static
成员类之间是否存在差异?答案 0 :(得分:2)
我找到了一个不同的解决方案,而不是浪费尽可能多的内存,因为每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填补了当今数据库抽象可能性的空白。