AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Facade Pattern und DAO Pattern Java
Thema durchsuchen
Ansicht
Themen-Optionen

Facade Pattern und DAO Pattern Java

Ein Thema von BörmtDieBuse · begonnen am 19. Mai 2015 · letzter Beitrag vom 19. Mai 2015
Antwort Antwort
BörmtDieBuse

Registriert seit: 25. Mär 2015
26 Beiträge
 
#1

Facade Pattern und DAO Pattern Java

  Alt 19. Mai 2015, 09:47
Hallo zusammen,

ich schreibe gerade eine PC Anwendung für eine Datenbank, die Oberfläche ist nicht webbasiert, sie muss mit Swing erstellt werden.
Je mehr ich mich in das Thema Design Pattern einlese desto mehr bin ich verwirrt.

Mein Programm ist folgendermaßen aufgebaut:
UI---Businesslogic---Persistence

Businesslogic und Persistence sind jeweils eine Facade.

Um auf die DB zuzugreifen benutze ich Hibernate. Ein DAO Pattern mit den Tabellen habe ich auch schon erstellt.

Ich versteh aber nicht wie von meiner Persistenceschicht auf mein DAO Pattern zugreifen kann.
Muss ich alle DAOs als Instanz in der Persistenceschicht anlegen, oder wie verbinde ich die beiden.
Danke schonmal im Voraus.

Grüße
Börmt
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#2

AW: Facade Pattern und DAO Pattern Java

  Alt 19. Mai 2015, 11:10
Wenn ich dich richtig verstanden haben, ist dein Problem, an welcher Stelle du die konkreten DAOs (die Hibernate kennen) erstellen musst.

Wie hier beschrieben kann du eine abstrakte Factory benutzen, die du in die Businesslogik hereinreichst.
Die Implementierung der Factory kennt/erstellt dann die Implementierungen der DAOs für Hibernate.

EDIT: Ich bin mir aber nicht sicher, wie sinnvoll es ist, Hibernate bzw. JPA wegzuabstrahieren. Es ist ja schon eine ziemlich gute Abstraktion.

Geändert von BUG (19. Mai 2015 um 11:24 Uhr)
  Mit Zitat antworten Zitat
BörmtDieBuse

Registriert seit: 25. Mär 2015
26 Beiträge
 
#3

AW: Facade Pattern und DAO Pattern Java

  Alt 19. Mai 2015, 13:10
Die DAOs habe ich schon per Hand einfach erstellt.

Mein Problem ist, das ich nicht weiß wie ich von der persistenceschicht(Facade) auf die DAO schicht komm.
Meine CRUD Operationen müssen ja alle in einer DAO sein, oder?

Bsp.

Code:
public interface UserDetailsDAO {

   List<UserDetails> getAllUserDetails();

   UserDetails getUserDetails(String surname, String name);

   void updateUserDetails(UserDetails userdetails);
   
   void deleteUserDetails(UserDetails userdetails);
}
Wenn ich jetzt einen User löschen möchte, muss ich dann eine Instanz von UserDetailsDAO in class PersistenceFacadeImpl erstellen, um die Daten weiterzugeben?
Das scheint mir aber etwas falsch zu sein, da ich dann für jede Tabelle(Entity) eine Instanz in der Klasse PersistenceFacadeImpl anlegen müsste.

Code:
public class PersistenceFacadeImpl implements IPersistenceFacade {

   private SessionFactory sessionFactory;
   private Session session;
   private UserDetailsDAO userDetails;
   // Mit Instanz erlaubt? oder ohne?
   
 public PersistenceFacadeImpl(SessionFactory sessionFactory, Session session) {
   this.sessionFactory = sessionFactory;   
   this.session = session;
}
   
 /**
  * createUser(), in UserDetailsDAO?
  */
   @Override
   public void createUser(String surname, String name) {
      UserDetails user = new UserDetails();
      user.setName(name);
      user.setSurname(surname);
      session.save(user);
      
   }

   @Override
   public void deleteUser(String surname, String name) {
      //Find user with query
      //Delete user
      //Respond to User if delete was successful
      String queryString = "from UserDetails where surname:surname and name=:name";
      Query query = session.createQuery(queryString);
      List<UserDetails> result = query.list();
      UserDetails result2 = result.get(0);
      userDetails.deleteUserDetails(result2);
      
   }
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz