Einzelnen Beitrag anzeigen

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