POJOs sin complejos
(This is a reprint of the original post)
De nuevo aprovecho esta columna para comentar libros técnicos. El que me ocupa hoy es POJOs in Action. Los POJOs son, sencillamente, un nombre sexy para reivindicar el valor de los objetos Java de toda la vida (en contraste a los EJBs, se entiende). Ya lo he dicho alguna otra vez, pero lo reitero: la complejidad de desarrollar EJBs no sirve para justificarlo todo. Considero que los nuevos frameworks ligeros para Java (Spring e Hibernate son la punta de lanza) son muy interesantes, pero no son la solución a todos los problemas. Muchas de las dificultades para desarrollar aplicaciones de tipo empresarial son inherentes al dominio o a las limitaciones de las tecnologías software. No se trata sólo de los EJBs, sino de cuestiones más profundas, como la dificultad de hacer persistente la información, la gestión de la concurrencia o el acceso distribuido. También participa la cíclica reinvención de los clientes ligeros y los clientes pesados.
Tras haber tomado postura, paso ya a hablar del libro. Ciertamente, estoy algo decepcionado. La calidad del resto de títulos de la serie "In Action" me hacía esperar algo más. No es que el libro esté mal, pero en ocasiones es repetitivo. Aunque seguramente lo que menos me haya gustado sean algunas opciones de diseño que defiende el autor. Por ejemplo, podemos discutir si las excepciones deben ser "checked" o "unchecked", pero me sorprende que el autor proponga prescindir de las excepciones de negocio y utilizar en su lugar códigos de retorno. Me parece un salto hacia atrás. Tampoco comparto la opinión del autor cuando señala a los DTOs (o Value Objects, según otros, aunque yo estoy con Fowler y creo que una cosa son DTOs y otra son VOs) aportan más incomodidades que ventajas. Desde mi punto de vista, los IDEs actuales y las herramientas de generación de código hacen que sea muy fácil escribir DTOs. También valoro mucho la capacidad que tienen los DTOs para desacoplar los modelos entre capas (o aumentar el encapsulamiento de la capa de negocio, como se prefiera). En mi opinión, no conviene entusiasmarse con la posibilidad que brindan Hibernate y otros ORM para "devolver" objetos de negocio a la capa de presentación. Obviamente, es más rápido y sencillo, pero se está introduciendo un acoplamiento.