Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 我们的数据库大约有2000个表,我应该使用ORM框架吗?_Hibernate_Jpa_Spring Data Jpa - Fatal编程技术网

Hibernate 我们的数据库大约有2000个表,我应该使用ORM框架吗?

Hibernate 我们的数据库大约有2000个表,我应该使用ORM框架吗?,hibernate,jpa,spring-data-jpa,Hibernate,Jpa,Spring Data Jpa,我正在参与一个非常古老的系统项目,我们必须将它重写为java。因此,我们需要确定将使用哪些框架。我们将使用JPA和hibernate,但是DB有大约2000个表。。。这将导致实体、元模型和存储库过多。 所以问题是我应该在这个项目中使用JPA/hibernate吗?我担心初始化、开发和内存加载的性能。有人能给点建议吗?在您的案例中,混合技术将是最佳的:对象/实体+使用ORM(HQL/JPQL)的查询。不需要对存在的每个表进行映射。有必要审核应用程序中的所有表及其大小和工作需求。估计其中哪些在加载

我正在参与一个非常古老的系统项目,我们必须将它重写为java。因此,我们需要确定将使用哪些框架。我们将使用JPA和hibernate,但是DB有大约2000个表。。。这将导致实体、元模型和存储库过多。


所以问题是我应该在这个项目中使用JPA/hibernate吗?我担心初始化、开发和内存加载的性能。有人能给点建议吗?

在您的案例中,混合技术将是最佳的:对象/实体+使用ORM(HQL/JPQL)的查询。不需要对存在的每个表进行映射。有必要审核应用程序中的所有表及其大小和工作需求。估计其中哪些在加载对象/实体时需要大量内存。对于大型表或不包含大型业务逻辑的表,请使用查询。可能不需要连接某些表。在可能的情况下,使用阅读策略懒惰而不是急切是正确的

也许在遗留数据库中,逻辑的主要部分放在存储过程上。这种情况经常发生,这导致在转换到ORM抽象的过程中遇到很大的困难。在这种情况下,至少暂时将该逻辑的某些部分保留为其原始形式是合理的

您还可以仅使用JDBC,但这将导致Java和SQL中的并行编程

最后:别担心,对于性能问题,根本不需要冠军级的数据库

Upd.

  • 我可以建议不要读取大的记录集(包括使用分页),这样就不会出现错误 接收到集合中的许多对象

  • 通过查询有选择地读取单个表的字段,而不是
    读整张桌子

  • 在可能的情况下,还可以创建“轻”类版本,并减少
    有助于实体加载的字段数


感谢您的建议,我可能会使用混合技术,但是,经过调查,大约有1000个实体将映射到表,但我不想使用唯一的JDBC。我也在考虑spring数据JPA,你认为呢?我在回答中补充了一些要点。在我最大的项目(DBOracle11上的大银行)中,它是JDBC,但无论如何,您必须尝试。。。