使用Oracle表分区的JPA还是Hibernate?

时间:2010-09-13 11:32:30

标签: java sql hibernate jpa

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

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

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

我如何对Hibernates或JPA做同样的事情?

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

感谢!!!

3 个答案:

答案 0 :(得分:3)

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

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

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

相关

  1. JPA Performance, Don't Ignore the Database

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:1)

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