sábado, 18 de marzo de 2017

En el tutorial anterior hablamos de las Propiedades JavaFX, más específicamente el como crearlas y utilizarlas, en este nuevo tutorial veremos como dos propiedades pueden mantener sus valores sincronizados, es decir, si la propiedad A esta enlazada con la propiedad B cualquier cambio en el valor de B se reflejará en A, no funciona al inverso, a esto se le llama: unidirectional binding, si que el enlace sea en doble vía, es decir, deseamos que cualquier cambio de A se refleje en B y un cambio en B se refleje en A necesitamos un bidirectional binding.

Las propiedades JavaFX cuentan con el método addListener() que podemos usar para registrar un método que será notificado cuando el valor de una propiedad cambie, la sobrecarga de este método nos permite utilizar dos interfaces, ChangeListener y InvalidationListener, para indicar cual será el método que recibirá las notificaciones, cuando ya no deseemos recibir notificaciones usaremos removeListener().

Una propiedad en JavaFX en básicamente una clase wrapper que encapsula los campos de un objeto añadiéndoles funcionalidades extras, como: la capacidad notificar los cambios en sus valores o permitir enlaces entre propiedades similares, una propiedad JavaFX puede ser de lectura/escritura o solo-lectura, para cada tipo simple, como: String, Double, etc. tenemos su correspondiente clase wrapper como: StringProperty, DoubleProperty, etc., para tipos complejos tenemos ObjectProperty<T>.

Lo primero que necesitamos hacer para este tutorial es descargar el HSQLDB, una vez tengamos la carpeta descargada y extraída, ya que se encuentra en un archivo comprimido, ejecutamos el archivo hsqldb/bin/runServer.bat este se encargará de iniciar HSQLDB en modo servidor y además crea una base de datos llamada test que tiene un alias vacío.

En este tutorial veremos como podemos obtener un grupo de librerías con Maven y luego utilizarlas en un proyecto Java Ant con el IDE Netbeans, usaremos Maven para obtener la librería y todas sus dependencias requeridas, hacer esto con Ant suele ser muy complicado si la biblioteca tiene muchas dependencias, se puede utilizar Ivy pero eso será para otro tutorial, por ahora Maven administrará nuestras dependencias y luego las convertiremos en una librería que podemos usar con Ant.

El método grid nos permite posicionar los widgets en una celda en especifico, indicamos la celda usando el índice de fila y columna correspondiente, el ancho y la altura de cada celda son configurables, además un widget puede ocupar varias celdas si lo deseamos, usando grid podemos crear fácilmente interfaces gráficas de usuario tipo formulario.

domingo, 12 de marzo de 2017

Seguimos con nuestra serie de cursos sobre acceso a datos con Spring, seguimos trabajando sobre el proyecto del tutorial anterior Spring Data JPA, en esta ocasión integraremos la librería QueryDSL a nuestro proyecto, la misma nos permite generar consultas de una manera, rápida, consistente y segura, esta librería fue en principio diseñada para HQL Hibernate pero hoy en día soporta varias tecnologías de persistencia de datos, como: JPA, JDBC, Lucene, MongoDB, etc. 

En el tutorial anterior Hibernate JPA logramos reducir y simplificar el código de acceso a datos, comparando con lo que hicimos en el curso acceso a datos con JDBC obtuvimos, grandes beneficios, aun así, en este momento todavía tenemos gran cantidad de código repetitivo, por ejemplo, para cada entidad JPA debemos escribir las operaciones CRUD (crear, leer, actualizar, borrar), Spring Data genera automáticamente estas y otras operaciones que son de uso común, además nos provee una manera simple para crear consultas y obtener los datos.

En los tutoriales previos de acceso a datos veíamos como la clase JdbcTemplate de Spring realiza gran parte del trabajo por nosotros, aun así, ya sea si utilizamos la API JDBC directamente o la clase JdbcTemplate siempre tenemos que convertir los datos obtenidos de la BD en objetos Java para manipularlos en nuestra aplicación y hacer el proceso inverso para almacenarlos nuevamente el la BD, para facilitarnos el trabajo existen frameworks que se encargan de realizar esta tarea, ello son los ORM.

spring orm hibernate jpa

Las aplicaciones basadas en Spring Framework soportan I18N, este término en una forma abreviada de la palabra (internationalization) ya que entre la letra inicial I y la letra final N existen 18 caracteres, I18N no es más que la capacidad que tiene una aplicación de poder manejarse en distintos idiomas, es decir podremos mostrar los textos o mensajes de la aplicación en diversos idiomas.