martes, 24 de septiembre de 2013

Bases de datos embebidas en Java: Derby vs HSQLDB

Buenas en este nuevo post voy a tratar el tema de bases de datos locales en Java. Para ello me voy a centrar en el vídeo que voy colgar donde voy a repasar cómo conectarse a una base de datos usando Netbeans, crear tablas, ejecutar comandos para añadir, eliminar y modificar datos y poder usar esa base de datos en una aplicación que diseñemos nosotros.

Para ello voy a analizar la pestaña de ‘Prestaciones’ de Netbeans en la que tenemos el nodo ‘Bases de datos’
Voy a empezar comentando cómo conectarse a una base de datos MySQL situada en un servidor, ya sea local a través de wamp o en red. Como sabes, de vídeos explicando cómo conectarse a un servidor MySQL hay muchos. De hecho puedes crear tu base de datos usando wamp y conectándote al PhpMyAdmin, donde dispones de un entorno muy completo para trabajar con ella, y luego conectarte a través de Netbeans para, por ejemplo, visualizar los datos y de paso probar que la cadena de conexión es correcta para usarla en tu aplicación.
Pero yo en lo que me quiero centrar es en el uso de bases de datos locales o embebidas en Java. Si para .NET está Access o SQLCompact, para Android tenemos SQLLite, para Java hay dos motores famosos para poder usar bases de datos locales que son Apache Derby o DbDerby y HSQLDB.
Voy a explicar cómo Netbeans te puede ayudar en la creación de un proyecto con un formulario maestro-detalle en el que podrás trabajar con tu base de datos embebida (también podrías configurarlo para usar una base de datos MySQL situada en un servidor). Para ello usaremos la API de persistencia para Java JPA. Netbeans nos creará la unidad de persistencia y las clases de entidad a partir de la base de datos que usemos. JPA es un modelo de persistencia para mapear bases de datos relaciones en Java. Vamos a persistir (guardar) los datos que están en los objetos de nuestra aplicación en una base de datos relacional.
Anteriormente a JPA el trabajo con bases de datos era creando los métodos que hacían las diferentes operaciones con la base de datos escribiendo directamente las sentencias SQL en el código de nuestra aplicación. Para crear una aplicación tipo CRUD pues se creaba un método para conectarse a la base datos, otros para insertar un registro, otro para eliminar un registro y otro para actualizar un registro dado. Aquí hay una captura del proyecto pero en el link de más abajo está. Uso un formulario simple con unos jTextFields, un JTable (cuyo modelo será un AbstractDataModel) y un botón para crear nuevo registro, otro para eliminar registro y otro para guardar los cambios. El proyecto usa Java 7, ya que verás que el Class.forName no lo uso y eso es novedad en la versión 7 de Java (en pocas palabras que en versiones anteriores de Java no funcionará).


En este link está el código de los proyectos creados en el videotutorial y verás que hay un proyecto de aplicación para java llamado DerbyJavaApplication con un formulario en el que vamos a usar una base de datos Derby a la antigua usanza, es decir, escribiendo el código SQL para que nos conectemos a la base de datos (de paso también verificaremos que existe y si no existe la crearemos, junto con una tabla llamada clientes en el esquema APP), actualicemos, eliminemos y salvemos los datos. El código está disponible pero en el siguiente post lo explicaré más al detalle.