我有一个网络服务,每天从各种来源获得大约9GB的原始文本数据。绝大多数是相对较短(100-300)的字符串,经常重复。我可能只有几千个独特的字符串
我通常不想进行预优化,但我们的存储问题很快就会成为开发中的问题。
我有一个JPA实体,并且为了这个帖子而简化。这是映射到父表的字符串/ id对。
@Entity
public class DeduplicatedString implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
private String value;
public DeduplicatedString() {
super();
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
我想设置一个JPA监听器(beforeInsert?)来在添加新字符串时检查现有数据,如果已找到完全匹配则返回现有记录。
我通常只设置一个插入触发器,并且不太确定如何在JPA中执行此操作。
谢谢!
答案 0 :(得分:1)
JPA不直接支持您需要的功能。有一个@PrePersist
注释(以及several others),但这些注释只能用于例如监控系统,或对实体进行最后更改。 JPA不知道在数据库中执行的任何触发器,并且目前没有机制来链接这两个触发器。
答案 1 :(得分:0)
指针是什么意思?你的意思是你不想插入记录吗?
通常,在您的应用程序中执行此操作时,您应首先使用字符串查询对象,并且只有在找不到该对象时才会保留新对象。