Folgenden Pseudo-Code möchte ich gerne umsetzen:
Was ich hier erreichen möchte ist eine Art Fremdschlüsselbeziehung zu wrappen.
Also Testklasse2 KANN als Konstruktor-Parameter 2 entweder null übergeben bekommen wenn keine Fremdschlüsselbeziehung vorhanden sein soll oder eben die ID des bezogenen Objekts test1.
ts.persist() ist eine Funktion, welche letztendlich ein INSERT durchführt.
Damit nun die ts.loadByName() auch das korrekte, in der DB gespeicherte Objekt mit der ID zurückerhält, müsste ja gewartet werden bis der persist-Vorgang abgeschlossen ist.
Aber selbst wenn ich das mittels einer CompletableFuture-Async-Funktion durchführe, würde ja die test2 nicht das korrekte test1-Objekt bekommen, sondern nur null.
So wie ich das sehe müsste ich alle weiteren Schritte dann wirklich in eine .thenRunAsync() setzen, was aber redundanten Code bedeuten würde.
Gibt es hier eine bessere oder schönere Lösung?
Ich habe bereits mit JPA gearbeitet wo das zwar super funktioniert, das ist jedoch für meine Zwecke nicht wirklich nutzbar.
Java:
Testklasse1 test1 = null;
if(setTestKlasse1()) {
test1 = new Testklasse1("Test 1");
Test1Service ts = new Test1Service();
ts.persist(test1);
test1 = ts.loadByName(test1.getName())
}
Testklass2 test2 = new Testklasse2("Test 2", test1 == null ? null : test1.getId());
Test2Service ts2 = new Test2Service();
ts2.persist(test2);
Was ich hier erreichen möchte ist eine Art Fremdschlüsselbeziehung zu wrappen.
Also Testklasse2 KANN als Konstruktor-Parameter 2 entweder null übergeben bekommen wenn keine Fremdschlüsselbeziehung vorhanden sein soll oder eben die ID des bezogenen Objekts test1.
ts.persist() ist eine Funktion, welche letztendlich ein INSERT durchführt.
Damit nun die ts.loadByName() auch das korrekte, in der DB gespeicherte Objekt mit der ID zurückerhält, müsste ja gewartet werden bis der persist-Vorgang abgeschlossen ist.
Aber selbst wenn ich das mittels einer CompletableFuture-Async-Funktion durchführe, würde ja die test2 nicht das korrekte test1-Objekt bekommen, sondern nur null.
So wie ich das sehe müsste ich alle weiteren Schritte dann wirklich in eine .thenRunAsync() setzen, was aber redundanten Code bedeuten würde.
Gibt es hier eine bessere oder schönere Lösung?
Ich habe bereits mit JPA gearbeitet wo das zwar super funktioniert, das ist jedoch für meine Zwecke nicht wirklich nutzbar.