【发布时间】:2011-06-20 09:04:25
【问题描述】:
有谁知道我如何创建一个 Java POJO,它在内存中存储双精度值,但在磁盘上存储一个整数值?
我想将这些对象作为整数存储到磁盘上,因为我有 1 亿个这样的对象,这样可以节省空间。但是,有时我的 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 只有一个双精度数(当然还有 ID),并指示 hibernate 在存储到数据库时强制将双精度数转换为整数(例如,通过舍入该双精度数)?
感谢您的帮助!
【问题讨论】:
标签: java database hibernate memory store