0

我有一个网络服务,每天从各种来源获取大约 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 中执行此操作。

谢谢!

4

2 回答 2

1

JPA 不直接支持您需要的功能。有一个@PrePersist注释(连同其他几个),但这些只能用于例如监控系统,或对实体进行最后一刻的更改。JPA 不知道在数据库中执行的任何触发器,并且目前没有将两者联系起来的机制。

于 2013-02-04T21:17:52.273 回答
0

你说的指针是什么意思?你的意思是你不想插入记录?

通常,要在您的应用程序中执行此操作,您应该首先使用字符串查询对象,如果找不到,则仅保留一个新对象。

于 2013-02-05T14:07:47.553 回答