Datenbankstil-Option
Hibernate bietet nicht an, eine Option zu seinem insert into
hinzuzufügen Aussagen. Und ich weiß nicht, ob die gleiche Option für MS SQL verfügbar ist.
Aber wenn Sie eine solche Option finden, können Sie die Insert-Anweisung abfangen und selbst hinzufügen:
public class IgnoreRowOnDupInterceptor extends EmptyInterceptor {
public String onPrepareStatement(String sql) {
if (sql.startsWith("insert into avaya_cm_cdr") {
return sql.replace("insert into",
"insert /*+ ignore_row_on_dupkey_index(avaya_cm_cdr, i_avaya_cm_cdr_nodub) */ into");
}
return sql;
}
}
Sie müssen diesen Interceptor in Ihrer persistence.xml
deklarieren :
<property name="hibernate.ejb.interceptor" value="...IgnoreRowOnDupInterceptor" />
JPA-Stiloption
Sie könnten sich die letzte Zeile aus der letzten Analyse merken (oder sie aus der Datenbank abrufen) und die Datei bis zu dieser Zeile überspringen. In diesem Fall würden Sie sogar die Zeit sparen, jedes vorhandene Element immer wieder neu zu analysieren.
Aus meiner Sicht ist dies der JPA-Weg, da man die Datenbank meist nur als Speicher nutzt und die Geschäftslogik in der (Java-)Anwendung behält.