He buscado mucha información sobre el patrón DAO y entiendo el punto. Pero siento que la mayoría de las explicaciones no cuentan toda la historia y me refiero a dónde usarías realmente tu DAO. Así por ejemplo, si tengo una clase de usuario y una UserDAO correspondiente que es capaz de guardar y restaurar los usuarios para mí, que es la forma correcta:Patrón DAO y objetos modelo
El controlador crea el objeto de usuario y la pasa al UserDAO a guardarla en la base de datos
el controlador crea el objeto de usuario y en su constructor del objeto de usuario hace una llamada a la UserDAO con el fin de salvar a sí mismo en la base de datos
Este es un olor de código y que son falta un "UserManager" de clase extra que el controlador pedirá para crear el usuario. El UserManager es responsable de crear el usuario y pidiendo al UserDAO para guardarlo
Realmente siento que la tercera opción es la mejor, porque todo lo que el controlador es responsable de es delegar la solicitud al modelo de objeto correcto . ¿Cuál es tu forma favorita? Me estoy perdiendo de algo ?
Solo para agregar a esto; Por lo general, también creo un objeto UserServices que es responsable de gestionar la sesión/transacción. Luego tengo el UserDAO que solo es responsable de hacer las consultas invocadas desde UserServices. – sbrattla
@sbrattla - Si está utilizando transacciones de usuario, esto definitivamente puede tener sentido. Estaba asumiendo automáticamente transacciones EJB, aunque OP no las mencionó. Kneejerk :) – kostja
@Tom si no está de acuerdo, por favor elabore – kostja