Hallo zusammen,
ich habe eine Anwendung, die auf Daten in einer Datenbank mittels JPA zugreift.
Ich habe bisher folgende Struktur:
Zunächst zum CustomerManagement:
1. Sollte update nicht statisch sein? Oder was sind die Vorteile, dass es nicht statisch ist? Ansonsten könnte ich viel bequemer einfach aufrufen: CustomerManagement.update(myCustomer). So muss ich immer erst eine Instanz erzeugen.
2. Sollte ich hier direkt mit dem EntityManager arbeiten? Bsp:
Wo ist denn CustomerManagement angesiedelt? In der Datenbankschicht oder Geschäftslogikschicht? Denn wenn Geschäftslogikschicht, dann würde ich noch eine extra Database-Class schreiben:
Oder nehme ich dafür eine andere Klasse? Bspw:
CustomerManagement wird zu CustomerDAO und CustomerManagement enthält die Geschäftslogik?
Würde mich sehr interessieren, wie man das am besten macht.
Gruß
Mike
ich habe eine Anwendung, die auf Daten in einer Datenbank mittels JPA zugreift.
Ich habe bisher folgende Struktur:
Code:
public class Customer {
// Enthält nun Attribute wie "Name", "Straße" etc., die mittels JPA Annotationen versehen werden
}
Code:
public class CustomerManagement {
// Im Grunde mein DAO. Enthält Methoden wie "findBy...", "update", "delete" etc.
}
Zunächst zum CustomerManagement:
1. Sollte update nicht statisch sein? Oder was sind die Vorteile, dass es nicht statisch ist? Ansonsten könnte ich viel bequemer einfach aufrufen: CustomerManagement.update(myCustomer). So muss ich immer erst eine Instanz erzeugen.
2. Sollte ich hier direkt mit dem EntityManager arbeiten? Bsp:
Code:
public void update(Customer customer) {
entityManager.merge(customer);
}
Wo ist denn CustomerManagement angesiedelt? In der Datenbankschicht oder Geschäftslogikschicht? Denn wenn Geschäftslogikschicht, dann würde ich noch eine extra Database-Class schreiben:
Code:
public class Database {
public static void updateCustomer(Customer customer) {
entityManager.merge(customer);
}
}
[code]
Mir stellt sich nun die Frage, wo ich die Geschäftslogik unterbringen soll. Bspw eine Methode: verifyCustomer(Customer customer), die die Daten eines Kunden hinsichtlich Geschäftslogik prüft. Also nicht DB-orientiert, sondern aus der Geschäftslogik heraus soll die Prüfung erfolgen.
Packe ich das nun in die CustomerManagement-Klasse oder in die Customer-Klasse?
[code]
public class Customer {
public boolean verify() {
....
}
}
Code:
public class CustomerManagement {
public boolean verify(Customer customer) {
....
}
}
Oder nehme ich dafür eine andere Klasse? Bspw:
CustomerManagement wird zu CustomerDAO und CustomerManagement enthält die Geschäftslogik?
Würde mich sehr interessieren, wie man das am besten macht.
Gruß
Mike