Me pregunto si hay una práctica aprobada en una aplicación multiproceso. ¿Debo tener un DAO por hilo o simplemente hacer que un DAO sea un hilo único seguro?¿Un DAO por hilo o DAO con hilo?
Respuesta
Esto realmente depende mucho del mecanismo que está utilizando para el acceso a los datos. Si tiene un acceso a datos muy escalable y muchos hilos, puede ser ventajoso usar algún tipo de acceso a datos estáticos de hilo.
Si no tiene acceso a datos escalables, su proveedor no admite múltiples hilos por proceso, o simplemente no necesita la escalabilidad en ese punto, usar un singleton con la sincronización adecuada es más simple y más fácil de implementar .
Para la mayoría de las aplicaciones de estilo empresarial, personalmente creo que el enfoque singleton es más fácil de mantener, y probablemente sea mejor, aunque solo sea mucho más fácil de probar de forma efectiva. Es probable que no sea necesario tener varios hilos para el acceso a los datos, ya que el acceso a los datos probablemente no sea un cuello de botella que afecte la usabilidad (si diseña correctamente y las solicitudes por lotes son adecuadas).
Usar el enfoque que mejor se adapte a su arquitectura de la aplicación, a menos que:
1) Sus objetos de acceso a datos son caros para crear, en cuyo caso se debe inclinarse hacia un producto único seguro para subprocesos.
2) Sus objetos mantienen el estado mutable, como en el Active Record pattern. (El estado de configuración DAO inmutable, como los umbrales de tiempo de espera, no cuenta.)
- 1. ¿Llamar a un DAO desde otro DAO?
- 2. ¿Puede un DAO llamar a DAO?
- 3. DAO y Servicio?
- 4. DAO, Spring e Hibernate
- 5. Patrón de diseño DAO
- 6. patrón y relaciones dao
- 7. Estructura del paquete DAO
- 8. SpringMVC Anotaciones para la interfaz DAO y aplicación DAO
- 9. Pruebas unitarias DAO
- 10. Generador DAO para java
- 11. DTO DAO POCO BO
- 12. Escribir pruebas para DAO
- 13. DAO genérico en Java
- 14. herramienta Generador de DAO con Llanura JDBC
- 15. Android - Uso del patrón Dao con contentProvider
- 16. Uso de DAO con objetos compuestos
- 17. DAO de validar la entrada
- 18. Patrón DAO vs ORM (hibernación)
- 19. ¿Debo pasar o encapsular una conexión en un DAO?
- 20. cómo crear un DAO para unir tablas?
- 21. ORMLite para Android: Enlace DAO con Roboguice
- 22. ¿Cómo diseñar una clase DAO?
- 23. Patrón DAO y objetos modelo
- 24. Encontré JPA, o similar, no aliento el patrón DAO
- 25. Boost.Thread o solo :: hilo?
- 26. controladores, clases de entidad o dao: ¿qué va a dónde?
- 27. Resumen de consultas con nombre en un resumen JPA DAO
- 28. DAO de JavaEE6: ¿Debería ser @Stateless o @ApplicationScoped?
- 29. Un hilo por cliente. ¿Realizable?
- 30. Dónde debe colocarse "@Transactional" Service Layer o DAO
Mis DAO se conectan realmente a dos fuentes: SimpleDB y una API de PHP a través de RPC. Mi suposición es que probablemente debería usar DAO por hilo con aproximadamente 100 hilos para evitar problemas de cuello de botella. ¿Ves alguna razón obvia para no hacerlo en este caso? – pondermatic
Probablemente sea mejor hacer que el DAO sea único, e internamente, simplemente trabaje de forma asíncrona. Luego puede escalar usando un ThreadPool según sea necesario ... Esto es especialmente cierto para PHP API, ya que las solicitudes web funcionan muy bien de manera asincrónica, y la mayoría de los marcos web tienen un buen soporte para esto ... –