Fin de Blog

Este Blog no tendrá más actualizaciones.
Pronto se creará uno mas completo en marceloagustini.com

CrudRepository, Spring al rescate de nuestro generico.

Spring framework es algo enorme, monstruoso con patterns inagotables.
Decir que lucha codo a codo con EJB ya es comparar dos cosas cada vez mas diferentes.
Si, con Spring Boot, por ejemplo, estamos mas cerca de un Node.JS que un EJB Container simplemente porque Spring intenta ser totalmente independiente de cualquier especificación.
Pero antes de comenzar a hablar muy brevemente de CrudRepository podemos estar totalmente de acuerdo en que Spring framework evoluciona favorablemente. Eso no lo podemos discutir.

Que es CrudRepository?

Bien, por empezar CRUD es algo que todos realizamos en el desarrollo de software. Y hasta no hace mucho tiempo, cuando los genéricos se implementaron en lenguajes Java y C# pudimos utilizarlos hasta construir un DAO totalmente vacío y heredado.

Si bien, hoy no voy a hablar en detalle de un GenericDAO, lo usual es crearse uno propio por única vez para todos los proyectos que lo utilicen.

CrudRepository es una interfaz de Spring, que nos provee este mecanismo sin necesidad de construir nuestro GenericDAO.

Algunos puntos interesantes, solo se utiliza la interfaz, no se utiliza la implementación. Y lo mas interesante es que maneja métodos de búsquedas y ordenamientos de manera automática. Por ejemplo:

public interface PersonRepository extends Repository<User, Long> { … }

List<Person> findByLastname(String lastname);

El metodo finByLastName creado por nosotros no necesita implementación y Query alguna, al escribirla en la interfaz ya puede ser utilizado en cualquier Controller.

Increíble, verdad? Esto solo es el comienzo.

AngularJS, ese pequeño enorme framework

Estoy renovando web y reactivando el Blog, estos Tips que siempre son útiles para algunos developers como yo.

Si bien siempre he sido del palo del Java, voy a compartir una realidad de mi trabajo. Simplemente se trata del framework web.
Cuando mi apreciado colega, Silvio Moschen me pregunta: si hoy debes comenzar un proyecto, cuales frameworks elegirías?
Fue entonces que me di cuenta que no lo sabía en concreto, me puse a imaginar esto:

Backend y lógica enterprise:

  • Spring Framework con AOP y HIBERNATE de ORM
  • Spring Security
  • Spring MVC con REST Controllers.
  • Puede ser EJB si dispongo del contenedor. Me es igual a Spring.
  • Luego, dependiendo de otras cuestiones, en Java siempre obtenemos las librerías que quisiéramos sin movernos de Maven. Por ejemplo, si me piden Excel, cargo el Apache Poi y asunto terminado.

Hasta ahora todo Ok, pero notamos que Spring es mi solución ideal del backend… no es mi mejor opción en la web. Por que?

Tengo para seleccionar frameworks que he utilizado con mucha frecuencia y mis opiniones al respecto, porque como se sabe, sólo debemos opinar de aquello que conocemos:

  • JSF 2.x: A mi parecer, en su momento estuvo bien, a pesar de su lentitud en renderizados pero se potenciaba mucho con sus add-ons como PrimeFaces. Ahora está fuera de tiempo, por ejemplo, Bootstrap ya no es posible utilizarlo con el, por lo menos de una manera humana. La falta de novedad al respecto creo que me da la razón.
  • ExtJS: Puro JavaScript, bastante complejo y códigos algo extensos para su batería de controles. Lo bueno es que puedes controlar todo. Digamos que es un framework de bajo nivel si lo vemos desde el browser. Su calidad de propietario me han hecho desistir de ExtJS.
  • ZK Framework: Fue mi alternativa al ExtJS cuando la busqué, un framework con controles Javascript mas unificado al Java. Con opciones MVC y MVVM, este último fue el que utilicé. Me parece (solo es mi opinion) que MVC ya está sintiendo el tiempo. Es propietario con una versión Community muy completa. Tengo varios sistemas actuales en él, pues es un framework muy ágil y simple de utilizar.
  • Spring MVC: Me gustó pero luego, con Ajax a los parches, dejó de gustarme.
    Sigue flojo en Bindings de clases y prácticamente no tienes un MVVM resuelto.
    Se quedó en el tiempo y su MVC puro y duro lo hicieron complejo. Entiéndase, busco soluciones que se amolden al tiempo y la web crece día a día.
  • AngularJS o similares: Una luz dentro del túnel. Es la forma que lo describo. Con una ingeniería perfecta, la gente de AngularJS nos ofrece la perfecta solución desacoplada entre backend y frontend.
    Sin dudas sería mi opción, a pesar de su falta de controles, es una opción que no me complica el layout html y tampoco me obliga a utilizar una tecnología de servidor concreta, pero claro, se recomienda Rest.

Espero que les sea de útil referencia.

SOA, ejemplo en la vida real

Si usted ingresa a algún portal de empleos IT, verá que SOA ya es un requerimiento.
Muchos años nos vimos obligados a pensar la teoría y la práctica de SOA como un mecanismo paralelo. Ahora simplemente se está aplicando en empresas de calibre medianos y/o pesados con BMPN o similares.
Si realmente quiere ver como o en qué escenario aplicarlo, esta webpage  nos muestra de manera simple y práctica cuando podemos optar por SOA en nuestra organización desde el punto de vista IT.
Los arquitectos SOA son requeridos por fin, en este 2015.