【问题标题】:JPA or Hibernates With Oracle Table Partitions?使用 Oracle 表分区的 JPA 或休眠?
【发布时间】:2010-09-13 11:32:30
【问题描述】:

我需要在我的应用程序中使用实体框架,并且我在 Oracle 数据库中使用了表 - 分区。使用简单的 JDBC,我可以从特定分区中选择数据。但我不知道我是否可以对休眠或 Eclipse 链接(JPA)做同样的事情。如果有人知道该怎么做,请告诉我。

通常 JDBC 中的 select 语句 - SQL 是,

select * from TABLE_NAME partiton(PARTITON_NAME) where FIELD_NAME='PARAMETER_VALUE';

我怎样才能对 Hibernates 或 JPA 做同样的事情?

请至少分享一个学习资源的链接。

谢谢!!!

【问题讨论】:

    标签: java sql hibernate jpa


    【解决方案1】:

    JPA 或任何其他 ORM 框架本身不支持 Oracle 分区表(至少据我所知)。

    根据您的问题的性质,有不同的可能解决方案:

    • 重构您的类,以便在现实生活中需要区别对待的数据属于单独的类。有时这称为垂直分区(分区不是跨行,而是跨列)。
    • 在下面使用 Oracle 分区表并使用来自 JPA 的本机 SQL 查询或存储过程。这只是一个可能的解决方案(我没有尝试过)。
    • 使用Hibernate Shards。尽管 Hibernate Shards 的典型用例不是针对单个数据库,但它为应用程序开发人员提供了分布式数据库的单一视图。

    相关

    1. JPA Performance, Don't Ignore the Database

    【讨论】:

    【解决方案2】:

    EclipseLink 支持使用不同选项进行分区或分片。

    您可以在此处找到有关此内容和示例的更多信息:

    http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Data_Partitioning

    【讨论】:

      【解决方案3】:

      表分区是物理级别的数据组织。总之,分区是一个穷人索引。与后者一样,它应该对用户完全透明。允许 SQL 查询引用整个表,但不能引用分区。然后,查询优化器的工作来决定它是否可以利用某个分区或索引。

      【讨论】:

      • 您只能在单个数据库服务器上投入如此多的处理能力。在某些时候,您需要横向扩展,以提高性能、可靠性或成本。分片是一种可能的解决方案。
      猜你喜欢
      • 1970-01-01
      • 2013-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-28
      相关资源
      最近更新 更多