Definir llave primaría con @Id

Tutorial de JPA @IdAl igual que en las tablas, las entidades también requieren un identificador( @Id ), dicho identificador deberá de diferenciar a la entidad del resto. Como regla general, todas las entidades deberán definir in ID, de lo contrario provocaremos que el EntityManager marque error a la hora de instanciarlo.

El ID es importante porque será utilizando por EntityManager a la hora de persistir un objeto, y es por este que puede determinar sobre que registro hacer el select, update o delete. JPA soporta ID simples de un solo campo o ID complejos, formados por más de un campo, sin embargo, esta sección abordaremos únicamente los ID simples y abordaremos las llaves compuestas en la siguiente sección del tutorial.

as

Mapeo de tablas con @Table

Tutorial de JPA @TableEn la sección hablaremos de la anotación @Table  y su importancia a la hora de definir entidades. La anotación @Table es utilizada para indicarle a JPA contra que tabla debe de mapear una entidad, de esta manera cuando se realice una persistencia, borrado o select de la entidad, JPA sabrá contra que tabla de la base de datos deberá interactuar.

Anotación @Table

Como comenté, esta anotación se utiliza para indicar la tabla contra la que mapea la entidad, pero también tiene otras propiedades interesantes como las que se muestra a continuación:

  • name: se utiliza para poner el nombre real de la tabla en la base de datos, es recomendable que el nombre sea exacto respetando mayúsculas y minúsculas, sobre todo cuando trabajamos en Linux.
  • schema: se utiliza para indicar el schema en el que se encuentra la tabla. Esta propiedad por lo general no es necesaria, a menos que la tabla se encuentre en un schema diferente al que utilizamos para logeamos.
  • Indexes: JPA permite indicar los índex que tiene nuestra tabla, esta opción toma relevancia cuando indicamos que JPA cree las tablas por nosotros (más adelante veremos esta característica).

Veamos cómo quedaría @Table en la entidad Employee que revisamos en la unidad pasada: as

Declarar entidades con @Entity

Tutorial de JPA @EntityUna de las grandes ventajas de JPA es que nos permite manipular la base de datos a través de objetos, estos objetos son conocidos como Entity, las cuales son clases comunes y corrientes también llamada POJO’s (Plain Old Java Objects), estas clases tiene la particularidad de ser clases que están mapeadas contra una tabla de la base de datos, dicho mapeo se lleva a cabo generalmente mediante Anotaciones. Dichas anotaciones brindan los suficientes metadatos como para poder por relacionar las clases contra las tablas y las propiedades contra las columnas. Es de esta forma que JPA es capaz de interactuar con la base de datos a través de las clases.

A lo largo de este capítulo y los siguientes estaremos estudiando las diversas anotaciones que nos permitirán crear nuestras Entity así como relacionar entidades con otras.

 

Anotación @Entity

Como ya discutimos hace un momento, las entidades son POJO’s por lo que son simples clases Java como cualquier otra, sin embargo, JPA debe de ser capaz de identificar que clases son Entity para de esta forma poderlas administrar. Es aquí donde nace la importancia de la anotación @Entity, esta anotación se debe de definir a nivel de clase y sirve únicamente para indicarle a JPA que esa clase es una Entity, veamos el siguiente ejemplo:

as

EntityManager y el archivo persistence.xml

Tutorial de JPA persistence.xmlEn esta sección hablaremos de cómo crear el archivo persistence.xml y como establecer conexión con la base de datos. Cabe mencionar que para fines de practicidad estaremos trabajando con MySQL, el Gestor de bases de datos relacional más popular del mundo y que además tiene una versión gratuita, por lo cual será necesario que descarguemos e instalemos MySQL, así como el cliente workbench que los puedes descargar directamente desde la página oficial de MySQL.

as

Crear un proyecto JPA

Tutorial de JPAEn la actualidad existe diversos IDE’s que nos permitirán crear proyecto JPA y en general todos ofrecen las mismas opciones por lo que en realidad sea cual sea el IDE que quieras utilizar tendrá el mismo resultado, sin embargo, para este tutorial utilizaremos NetBeans, el cual lo puedes descargar en http://netbeans.org. NetBeans es un proyecto OpenSource por lo que lo podrás descargar libremente y sin ningún costo.

Ahora bien, para maximizar la portabilidad y facilitar las librerías utilizaremos un Maven, la cual es una herramienta para la gestión de dependencias y construcción de proyectos similar a Apache Ant, aunque más potente. Si quieres aprender más de Maven te recomiendo el libro Maven: The Definitive Guide.

Por el momento no te preocupes si no has trabajado con NetBeans o Maven, ya que aquí mismo te diremos paso a paso como hacer todos los pasos para configurar tu proyecto.

 

Creando un proyecto Maven

Lo primero que tendremos que hacer será abrir NetBeans y en el menú superior pincharemos la opción File >New Project  y nos arrojara la siguiente pantalla:

Projecto JPA - Nuevo as

Faces de los compiladores

Compiladores

Hoy en día estamos tan acostumbrados a usar compiladores para generar nuestros programas, que nos resulta algo completamente natural y fácil de utiliza, esta simple como escribo mi programa, guardo y le doy ejecutar, ya ni siquiera nos preocupamos por compilar el programa para que esté listo para funcionar, y eso es lo que convierte a los nuevos lenguajes de programación en un éxito. Sin embargo, pocas veces estamos conscientes del proceso de compilación como tal, pocas personas conocen el procesamiento interno y los pasos que debe hacer un compilador antes de entregarnos un programa compilado. Pues bien, durante mi estancia por la universidad tuve la fortuna de que me enseñaran como es que funciona un compilador, las fases y lo más importante, a hacer uno.

Escribir un compilador no es simple, ya que se tiene que realizar en varias fases y cada una de ellas ataca al proceso de compilación desde un ángulo distinto pero relacionado. Pero antes de entrar en materia me gustaría presentarles el compilador que yo desarrolle, al cual bautice con el nombre de Oscar++ (Crean o no batalle mucho pensando en el nombre), el cual es un compilador bastante simple que procesa solo unas cuantas expresiones, que para aquel entonces que estaba apenas en la universidad ya era un gran logro. Les dejo una imagen para que vean un poco de lo que hablo:

Compiladores Oscar++

as

Introducción a los patrones de diseño (Libro)

Tras dos años de arduo trabajo he concluido la publicación de mi libro “Introducción a los patrones de diseño”, en el cual explico la importancia de la utilización de los patrones en la Ing. de Software, abordando un total de 25 patrones.

Introducción a los patrones de diseño - un enfoque práctico

Hoy en día aprender patrones de diseño no es una cualidad más, si no una obligación. Y es que estudiar y comprender los patrones de diseño nos convierte en un mejor programador/arquitecto y es clave para conseguir una mejor posición en el mundo laboral.

Este libro fue creado con la intención de enseñar a sus lectores cómo utilizar los patrones de diseño de una forma clara y simple desde un enfoque práctico y con escenarios del mundo real.

Tengo que aceptar que este no es un libro convencional de patrones de diseño debido, principalmente, por que as

Servidores Virtuales

Servidores Virtuales

Hoy en día los servidores virtuales en la nube han dominado casi por completo el mercado de servidores. Es impresionante ver lo fácil y económico que puede ser tener tu propio servidor montado en la nube a precios tan accesibles que la gente los renta solo por hobby o solo para introducirse en el mundo de la administración de servidores.

Les debo de confesar que hasta un tiempo atrás me surgió la necesidad de adquirir mi propio servidor, por lo general en los proyectos en los que trabaja el cliente o la compañía me proporcionaban los servidores y si necesitaba algo mas solo tenía que mandar un correo y listo, en un par de días me respondían que ya estaban listo que el requerimiento y todos felices. Sin embargo, hora que yo he decidido adquirir mi propio servidor por motivos personales que espero contarles más adelante me he dado cuenta de lo complicado o confuso que puede resultar este mundo, al menos para mi que me he especializado mucho más en el Software que en Hardware y redes. as

toString elegantes con ReflectionToStringBuilder

ReflectionToStringBuilder

En esta ocasión les quiero platicar de una fantástica clase de utilidad que yo he utilizado con frecuencia en el desarrollo de software, Esta clase es ReflectionToStringBuilder la cual es parte de la librería commonds-lang de Apache fundation. Mediante esta clase podemos imprimir de forma muy rápida las propiedades de toda una clase con solo una línea de código. Seguramente en varias ocasiones has tenido que imprimir mediante System.out.println( myObject.getPropiedad() ) las propiedades de una clase para depurar los valores o los has tenido que imprimir directamente en el Log de la aplicación como logger.debug( myObject.getPropiedad() ). En tal caso tenemos que realizar esto por cada propiedad de la clase que deseamos depurar. Si eres de los que hace esto con regularidad entonces este Artículo te interesa. as

A/B Testing

A/B Testing

El A/B Testing es una técnica que se utiliza frecuentemente como parte de una estrategia de marketing o estrategias digitales para medir el rendimientos de dos modelos que están puestos a prueba al mismo tiempo, midiendo cuál de los dos modelos tiene un impacto mejor ante nuestros clientes y por lo tanto, puede representar que se interesen por nuestros productos o que lleguen incluso a comprarlos.

En el mundo del diseño web, el A/B Testing es muy utilizado para medir el desempeño de los sitios web, como lo son las Landing pages, tiendas virtuales, campañas de Email o cualquier sección de un sitio web.

as