mysql - hibernate 性能 : the same base class for a lot of children

标签 mysql oracle hibernate

我有很多类 C1、C2、..、Cn (n~100)。每个类都有对其他类(子类)的引用。但是一个类可以在不同的类中引用( child 可以有不同类型的 parent )。例如,C1 可能有以下 child :C2、C3、C4。但 C2 也可能是 C4 的子代。

class C1 extends AbstractEntity{
   C2 c2;
   C3 c3;
   C4 c4;
}

class C4 extends AbstractEntity {
   C2 c2;
   C5 c5;
}

有了一个实体,我想得到它的父实体。所以我创建了 AbstractEntity 类

class abstract AbstractEntity{
   Long id;
   AbstractEntity parent;
}

当我在 Hibernate 中使用 JPA 注释将对象持久保存到数据库时。所以我得到以下 AbstractEntity 表:

table AbstractEntity (id long primary key, parent_id long foreign key references AbstractEntity(id), discriminator varchar(40));

现在要对具体实体执行任何操作(添加、更新、删除),将执行与 AbstractEntity 的连接。对于每个操作!因此所有操作都需要访问同一个表。这将如何影响性能?这是否允许我同时对不同的资源类型执行操作,它们不会阻塞吗?

我知道在交易期间并不是整个表都被锁定,这在很大程度上取决于所使用的 DBMS。但总的来说,在使用 hibernate 时,最好考虑摆脱大量子类的公共(public)父类(super class)的方法?如果 DBMS 真的很重要,那就是 MySQL 和 Oracle。

最佳答案

对不同子类的操作不会互相阻塞。 hibernate 不会自己阻塞表。查看性能是否足够好的最简单方法是尝试。

关于mysql - hibernate 性能 : the same base class for a lot of children,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12227263/

相关文章:

sql - 单个 Oracle 语句中 OR 子句的最大数量是多少?

sql - 错误 - 未在预期位置找到关键字

hibernate - Hibernate 4 中的新 XSD 模式

MySQL按两列从组中选择最后一行

php - 优化使用 Magento 的网站

sql - Oracle:当同一查询中更具体的值为空时,如何获取默认值?

java - 正确映射 JPA 实体

mysql - 反向子句 IN 命名查询 Hibernate

php - 扩展 MySQL 语句

mysql - 在 Solr 中创建两个使用相同模式的实例的最佳方法是什么?