OZ Ejemplo Cajero ATM

¿Que vamos a desarrollar?

Una aplicación que simule el funcionamiento de un cajero automático, mostrando el uso de múltiples frameworks Java para crear un sistema modular y extendible.

Requisitos

  • Apache Maven >= 3.X
  • Java JDK >=  1.6
  • Netbeans >= 6.5
  • Base de Datos MySQL

Análisis

Supongamos que tenemos el siguiente requerimiento por parte del cliente o del analista:

Crear un cajero que permita realizar dos operaciones, Retirar efectivo y hacer Transferencias a otro Banco.

Veamos como se vería en un diagrama de casos de uso:

El usuario unicamente va a realizar dos operaciones retiro y transferencia.

Bien ahora la base de datos, vamos a utilizar este script para generarla.  Ejecutas el archivo en tu gestor favorito y te  creará el esquema llamado OZ_TEST, con las siguiente tablas:

Seguir leyendo

Database tools, DBeaver and Squirrel

Herramientas de Base de Datos, DBeaver y Squirrel

Existen muchos manejadores de base de datos y generalmente utilizamos las herramientas oficiales de cada provedor, por ejemplo para Oracle esta el SQL developer, para MySQL el MySQL Workbench, etc…

Principalmente utilizo MySQL, sin embargo en Kubuntu tengo algunos problemas con el Workbench ya que no funciona muy bien con conexiones remotas o con tuneling por SSH, así que no me queda de otra que buscar alternativas, afortunadamente existen dos completamente open source =)!!

Las herramietas que utilizo para estos casos son :

Ambas muy buenas y son multiplatafora!! (utilizan java), pienso que no es bueno compararlas ya que cada una tiene su fuerte, por ejemplo:

  • squirrel, soporta HQL para trabajar con Hibernate y JPA, genera scripts de datos tanto de la estructura de  las tablas como los datos dentro de las mismas, exporta en xls, csv.
  • dbeaver, soporta tunneling de SSH de forma nativa y descarga los drivers de base de datos de automáticamente.

Ambas generan el diagrama entidad relación, tienen función de acutocomplementar los querys, entre otras características =).

Aquí dejo algunas imágenes:

Seguir leyendo

Hibernate Composite Keys With Annotations

Hibernate, Llaves Compuestas Con Anotaciones

Dentro de las buenas y muy malas experiencias que me han tocado con Hibernate he aprendido que existen varios caminos y formas de utilizarlo, y en esta publicación quiero colocar la forma para crear una tabla con llaves compuestas utilizando anotaciones.

A pesar de que esto puede sonar una tarea común y corriente implica conocer algunos detalles que a veces son imperceptibles para los desarrolladores hasta que estamos frente al IDE (o editor de texto) y decimos «Y ahora como rayos hago esto??», en fin en mi experiencia esto es lo que  he encontrado:

Nota: Los ejemplos los hice en MySQL pero llevan la anotación SequenceGenerator por que funcionan también en Oracle sin modificar nada de códig

Seguir leyendo

Ingeniería en inversa en PHP con Doctrine (Reverse Engineering DB)

Bueno ahora voy a colocar como obtener las entidades y el mapeo desde una base de datos ya existente, sin embargo esto no es un proceso seguro ya que depende completamente de la base de datos, si tienes una base de datos compleja puede que el resultado no sea el esperado, yo recomiendo hacer el mapeo manualmente, pero si tu modelo de base es bueno y esta correctamente desarrollado puedes intentar la ingeniería en inversa.

Hay que tomar las consideraciones que vienen en la documentación:

Reverse Engineering is not always working perfectly depending on special cases.

Reverse Engineering is a one-time process that can get you started with a project. Converting an existing database schema into mapping files only detects about 70-80% of the necessary mapping information. Additionally the detection from an existing database cannot detect inverse associations, inheritance types, entities with foreign keys as primary keys and many of the semantical operations on associations such as cascade.

Requisitos:

Seguir leyendo

Manejador de base de datos Squirrel

Para realizar consultas a bases de datos existen multiples herramientas en el mercado, por lo general probamos las distribuciones oficiales de los fabricantes (sql devloper, mysql query browser) y de ahí software de terceros (Toad, DB visualizer, etc..)

Pero esta vez me llamo la atencion Squirrel en especial porque esta pensada para desarrollo con Java, ya que soporta consultas en HQL y además te deja configurar tu conexión con el archivo de hibernate y utilizar tus pojos.

Me agrado bastante, tiene buenas características y creo que puede ser muy útil sobre todo por ser multiplataforma (se ejecuta con la máquina virtual de Java).

Referencias:

http://squirrel-sql.sourceforge.net/

Saludos

GlassFish desde consola

Varias veces me ha tocado que al utilizar glassfish no me permite ingresar al administrador de consola, al parecer ocurre un error en la página y simplemente no la muestra :S…

Así que no me quedo de otra, más que buscar como hacer el deploy de mis aplicaciones via consola, afortunadamente hay bastante documentación en internet pero para hacer el camnino un poco más simple decidí escribir aqui los comandos que más utilizo:

# Crear el pool de conexiones (con MySql)

./asadmin create-jdbc-connection-pool --datasourceclassname com.mysql.jdbc.jdbc2.optional.MysqlDataSource --allownoncomponentcallers=true --property user=MyUser:password=MyPass:DatabaseName=MyDbName:ServerName=localhost:port=3306 MyPool

Nota: allownoncomponentcallers permite otorgar el acceso de otros recursos al pool.

#Test the connection:

./asadmin ping-connection-pool MyPool

#To make it avaliable to resource configuration:

./asadmin create-jdbc-resource --connectionpoolid MyPool jdbc/MyPool

#Deploy / Undeploy desde consola

./asadmin deploy MyFile.war
./asadmin undeploy MyFile.war

#List database resources and connetion pools

./asadmin --user admin list-jdbc-resources
./asadmin --user admin list-jdbc-connection-pool

#Delete resources and connection pools

./asadmin --user admin delete-jdbc-resource jdbc/MyPool
./asadmin --user admin delete-jdbc-connection-pool MyPool

#change admin pass

$GLASSFISH_HOME/bin/asadmin change-admin-password
Enter admin user name [default: admin]>
Enter admin password>
Enter new admin password>
Enter new admin password again>

#enable secure admin

./asadmin enable-secure-admin
./asadmin --host [host] --port [port] --domain_name [DOMAIN_NAME] enable-secure-admin
./asadmin --host [host] --port [port] --domain_name [DOMAIN_NAME] disable-secure-admin

#Install Glasfish as a Service

./asadmin create-service --name glassfish

Nota: Solo es soportado en algunos sistemas operativos y en ciertas versiones.

#Set Specific JDK
Agregar la siguiente línea al archivo asenv.conf , que se encuentra en $GLASSFISH_HOME/glassfish/conf/:
AS_JAVA=»/usr/java/default_jdk»

Como valor le indicamos la ruta se encuentra instalada la JDK  que utilizará el servidor.

Referencias

Mysql Workbench en Ubuntu 9.10

Mysql Workbench es la herramienta de modelado de base de datos para Mysql, entre sus características permite la ingeniería en reversa y syncronización con multiples esquemas, además de forma automatica te genera los scripts de las tablas.

Es multiplataforma, lo podemos descargar desde aquí (viene en paquete .deb), ya que lo tenemos lo instalamos dandolde doble click.

Al ejecutarlo en ubuntu 9.10, aparece el siguiente error :

Couldn’t load library libmysqlclient_r.so

Bastará con crear el siguiente enlace simbolico:

cd /usr/lib
sudo ln -s libmysqlclient.so.16 libmysqlclient_r.so

Para ejecutarlo vamos al menu «Applicaciones>Programación>» y seleccionamos «MySQL WorkBench» y listo ya podemos modelar bases de datos.

Saludos