Мне нужен хороший пример реализации Composite Partitioning с Range Partitioning и List Partitioning в Hibernate с java, в основном у меня есть большие данные с устройств IOT и мне нужно разделить их с областью установленных устройств (около 1000 ~ 5000 устройств) которые имеют 30 областей с историей любого устройства, имеют более 5 лет, что может иметь одно устройство 2 ~ 3 миллиона записей (строка на устройство), поэтому, если я храню все записи устройств в одной таблице, у меня огромная проблема с CURD, поэтому я решил использовать Composite Partitioning для решения этой проблемы в ORACLE базе данных 19 c с другой стороны Я ленивый парень! поэтому я использую Hibernate в java для подключения моей базы данных и использую HQL для управления CURD с помощью DAO. И мне нужен способ реализации этого в Hibernate, чтобы иметь максимально возможную базу данных производительности и скорость кодирования, чтобы любой орган знал, как это сделать? Часть моих классов bean-компонентов:
@MappedSuperclass
public class SuperBean implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY,generator="native")
@GenericGenerator(name = "native",strategy = "native")
private long id;
@Temporal(TemporalType.TIMESTAMP)
// in oracle need trigger for update on change value!
@Column(name="date_update" ,nullable = false, columnDefinition = "TIMESTAMP default CURRENT_TIMESTAMP")
private Date updateIn = new Date();
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public Date getUpdateIn() {
return updateIn;
}
public void setUpdateIn(Date updateIn) {
this.updateIn = updateIn;
}
}
public class IotDeviceInfo extends SuperBean {
private int deviceId;
private String name;
private Area area;
// and other var
private Data data;
// Getter and Setters
}
Класс данных, с которым у меня проблема, и мне нужно реализовать составное секционирование с секционированием диапазона и секционированием списка:
public class Data extends SuperBean {
private Date time_from_device_info ;
private Date time_receive_data = new Date();
private long movement;
//Getter and setter
}
public class Area extends SuperBean {
private String name;
//Getter and setter
}