我有一個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