Hibernate Shards 分区包oracle虚拟主键

在网上百度了一把,没有找到合适的解决方案,有些推荐GoogleHibernate Shards 分区包,粗略的了解了下,不太适合。其实目前的情况很简单,就是一般查询时,在Where条件后增加分区字段 而尽量不改动程序。 想过 Hibernate 事件监听,感觉太复杂, 最终,想到了一个觉得可行的方法, 将分区字段加入到 主键中。 理由:分区字段是非空的、查询更新时与主键一起出现,觉得没有问题,就开始动手实验。
建表语句:
[sql] view plain copy print
1.create table clientinfo (
2.userID NUMBER(14) not null,
3.REGION NUMBER(5) not null,
4.username VARCHAR2(16) not null,
5.age number(3) ,
6.address VARCHAR2(128) ,
7.CHANGEDATE DATE,
8.primary key (userid)
9.)PARTITION BY LIST(REGION)
10.(
11.PARTITION clientinfo100 VALUES (100),
12.PARTITION clientinfo101 VALUES (101),
13.PARTITION clientinfo240 VALUES (270)
14.);
create table clientinfo  (
   userID               NUMBER(14)                      not null,
   REGION               NUMBER(5)                       not null,
   username             VARCHAR2(16)                    not null,
   age                  number(3)             ,
   address              VARCHAR2(128)         ,
   CHANGEDATE           DATE,
   primary key (userid)
)PARTITION BY LIST(REGION)
(
PARTITION  clientinfo100 VALUES (100),
PARTITION  clientinfo101 VALUES (101),
PARTITION  clientinfo240 VALUES (270)
);
 
java 代码:
VO ClientInfoVO
[java] view plain copy print
1.package com.qingcaolin;
2.
3.import java.util.Date;
4.
5.import javax.persistence.Column;
6.import javax.persistence.Entity;
7.import javax.persistence.Id;
8.import javax.persistence.IdClass;
9.import javax.persistence.Inheritance;
10.import javax.persistence.InheritanceType;
11.import javax.persistence.Table;
12.
13./**
14.* region 库表实际非主键, 该表根据region分区,加入虚拟主键提高查询速度
15.*
16.* @author qingcaolin
17.*
18.*/
19.@Entity
20.@IdClass(ClientInfoVOPK.class)
21.@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
22.@Table(name = "CLIENTINFO")
23.public class ClientInfoVO {
24.
25.@Id
26.@Column(name = "userId")
27.private Long userId;
28.@Id
29.@Column(name = "REGION")
30.private Long region;
31.
32.@Column(name = "USERNAME")
33.private String userName;
34.
35.@Column(name = "AGE")
36.private Long age;
37.
38.@Column(name = "address")
39.private String address;
40.
41.@Column(name = "CHANGEDATE")
42.private Date changedate;
43.
44.public ClientInfoVO(){}
45.
46.public ClientInfoVOPK getPk() {
47.ClientInfoVOPK pk = new ClientInfoVOPK();
48.pk.setUserId(userId);
49.pk.setRegion(region);
50.return pk;
51.}
本文转自:oracle认证:http://www.51CTO提醒您,请勿滥发广告!/

你可能感兴趣的:(Hibernate,Google,百度,Oracle认证,Shards,虚拟主键)