Die Kernschicht hat:
Dienste-> Wo Die Logik lautet (Schnittstellen und ihre Implementierungen).
Entitäten -> Diese werden in der gesamten Anwendung verwendet.
Repository-> Schnittstellen, die die Infrastrukturschicht implementieren muss.
Die Infrastruktur Layer verfügt über die Implementierung der Repository-Schnittstellen, der JPA-Entitäten, Aufrufe an die Datenbank (Ruhezustand) und einige Funktionen zur Umwandlung der JPA-Entitäten in Kernentitäten (Mapper?).
Spring Data bietet eine sehr nützliche Möglichkeit, CRUD-Operationen zu implementieren:
Code: Select all
public interface UserRepository extends JpaRepository {
}
UPDATE:
Meine Bedenken bei der Verwendung von Spring-Daten rühren daher, dass ich die JPA-Entitäten in die Domäne einbinden muss, was theoretisch gegen die hexagonale Architektur verstoßen würde.
Also habe ich darüber nachgedacht, die Domänenentitäten von den JPA-Entitäten zu trennen. Aber wenn ich das mache, weiß ich nicht, wohin das Repository von Spring Data gehen soll, und finde auch keinen Weg, die JPA-Entitäten in Domänenentitäten umzuwandeln.
Um es etwas besser zu veranschaulichen, gehe ich davon aus, dass ich von meiner Anwendung aus eine Verbindung zu einer Datenbank herstellen muss, um eine Benutzertabelle zu lesen.
Dies könnte die Domain-Entität sein:
Code: Select all
public class UserDomain{
private String name;
....//More fields, getters, and setters.
< /code>
Ab meinem Verständnis sollten die Dienste die Logik enthalten und die Domäneneinheiten betreibt. < /p>
public interface UserService{
public void create(UserDomain user);
...
< /code>
Die Implementierung: < /p>
public class UserServiceImpl implements UserService{
public void create(UserDomain user) {
... //Calling the repository(Spring Data Repository?)
@Entity
@Table(name="users")
public class User{
@Column(name="name")
private String name;
... // More Fields, getters, and setters
< /code>
Ich denke, die Schnittstelle, in der ich Springdaten aufrufe Noch eine Klasse (und Adapter?), Um diese Zuordnung zu machen. Ist dieser Ansatz korrekt oder gibt es einen anderen Weg? Entschuldigung für den langen Beitrag, ich hoffe ich habe mich klar gemacht.