Ich verwende spring
, spring-data
, spring-cronjobs
und java-mail
. Ich habe die Anforderung, die Änderungen in einer Tabelle, die in der my-sql
-Datenbank vorhanden ist, sofort zu scannen und eine E-Mail an den Administrator bezüglich der Änderungen zu senden.Wie können Datenbankänderungen mithilfe von Feder dynamisch nachverfolgt werden?
Alles, was ich tue, um dies zu erreichen, ist einen Cronjob auszuführen, um alle Änderungen in der Tabelle zu scannen, aber es ist ein schwerer Prozess, da die Tabelle mit monetären Transaktionen verbunden ist und die Anwendung viele Ressourcen verbraucht wird zu langsam.
Also, gibt es einen besseren Prozess, mit dem ich die aktuellen Änderungen in der Datenbank verfolgen kann. Zum Beispiel Wenn es eine Methode gibt, Beobachter im Frühling einzustellen, um einen Prozess beim Datenbankwechsel auszulösen, wäre es hilfreich.
Folgendes ist ein Beispiel für die Entität der Tabelle, die ich scanne.
/** Import statements **/
@Entity
public class UserWalletTransaction {
@Id
@GeneratedValue
private Long Id;
private String toAccount;
@ManyToOne(fetch = FetchType.LAZY)
User user;
@ManyToOne(fetch = FetchType.LAZY)
Wallet wallet;
private String senderOrMobile;
private String benificiaryName;
private String beniMobile;
private Double transferAmount;
private Double sTax;
private Double charge;
private Double netAmount;
private String apiTId;
private String apiComment;
private String agentId;
private Double apiSTax;
private Double apiCharge;
private Double apiNetAmount;
private Double apiBalanceAmount;
private String transactionMode;
private String bankName;
private String userTrackId;
private String referenceNumber;
private String operatorDescription;
private String mobileNumber;
private String rechargeDateTime;
private String operatorTransactionId;
private String hermesPnr;
private String utId;
private String status;
private Double previousAmount;
private Double balanceAmount;
private Double amountTransacted;
private String transactionType;
private boolean isRaised;
private boolean isRefunded;
@Column(name = "created_by")
private String createdBy;
@Column(name = "created_date")
private Date createdDate;
@Column(name = "updated_by")
private String updatedBy;
@Column(name = "updated_date")
private Date updatedDate;
private String operationPerformed;
@OneToOne
private UserWalletTransaction relationalTransaction;
private String errorComments;
@OneToOne
private User debitUser;
@OneToOne
private User creditUser;
@OneToOne
private ServiceProvider serviceProvider;
@OneToOne
private RefundRequest refundRequests;
..... Getters and setters......
}
Und das folgende Beispiel ist ein Cron-Job, den ich benutze, um die Mail nach dem Scannen der Datenbank zu feuern.
Bitte teilen Sie jede Methode, mit der ich die Leistung dieser Funktionalität verbessern kann. Danke im Voraus.
Haben Sie versucht, sich im Ruhezustand Abfangjäger zu suchen? https://docs.jboss.org/hibernate/orm/4.0/manual/en-US/html/events.html – GPI
Danke für die Info. Dies scheint hilfreich zu sein. Ich werde einige Beispiele ausprobieren. Wenn Sie bitte einige Beispiele angeben können, wäre es hilfreich. –
Warum benutzen Sie nicht einfach einen Auslöser dafür? Scheint eine bessere Lösung zu sein, als jedes Mal die Tabelle zu scannen. –