Кто-нибудь знает, как я могу создать Java POJO, который хранит двойное в памяти, но целое число на диске?
Я бы хотел хранить эти объекты на диске как целые числа, потому что у меня их 100 миллионов, и это сэкономило бы место. Однако иногда мой Java-код манипулирует значениями в памяти (не сохраняя их) и превращает их в действительные числа
Я пробовал что-то вроде:
@Entity
@Table(name = "POJO")
public class POJO {
@Id
@GeneratedValue
@Column(name = "id")
int id;
@Column(name = "value")
int valueInteger; // this is weird: in the database, we want to use integers, to save space. but in memory, sometimes we use real values
double value;
public int getValueInteger() {
return valueInteger;
}
public void setValueInteger(int valueInteger) {
this.valueInteger = valueInteger;
this.value = valueInteger;
}
public double getValue() {
return value;
}
public void setValue(double value) {
this.value = value;
// might want to call setValueInteger() here if consistency is required. Right now, I think it's not, so I'll leave it out.
}
}
Это не страшное решение, за исключением того, что объем памяти больше необходимого. Есть ли какой-нибудь способ, чтобы POJO имел только двойное значение (и, конечно, идентификатор) и давал команду hibernate принудительно преобразовывать двойное в целое при сохранении в базу данных (например, путем округления этого двойного)?
Спасибо за помощь!