我有一个web服务,每天从各种来源获得大约9GB的原始文本数据。绝大多数这是相对较短(100-300)的字符串,经常重复。我可能只有几千个独特的字符串JPA触发器在值已存在时替换插入的ID
我通常不想预先优化,但我们的存储问题很快就会成为开发中的问题。
我有一个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中做到这一点。
谢谢!
我可以放入一堆任意SQL,当JPA为我创建我的表时,这些SQL会运行吗? – Yablargo
这取决于您使用哪个JPA提供程序?例如,EclipseLink允许您执行此操作:您可以指定您自己的存储过程或自定义SQL查询来执行任何CRUD操作。有关更多详细信息,请参阅此链接:http://wiki.eclipse.org/EclipseLink/Examples/JPA/CRUDStoredProcedures – gcvt