Desarrollando una aplicación con Vaadin Framework + Add-on Vaadin SQLContainer + Microsoft SQL Server 2008 R2

Vaadin1En este tutorial os presento una sencilla aplicación utilizando el Framework Vaadin y su Add-on SQLContainer para la gestión y el acceso a bases de datos.

El objetivo es realizar la configuración de la conexión a la base de datos, una consulta SQL y mostrar su resultado por el navegador.

 

 

Hardware utilizado:

  • Portátil MacBook Pro 13" (2,5 Ghz Intel Core i5, 16 GB DDR3)
  • Sistema Operativo: Mac OS X 10.8.2

Software requerido:

El desarrollo de sofware empresarial JavaEE con el Add-on SQLContainer de Vaadin es el más sencillo que se puede realizar mediante Vaadin Framework pero no por ello menos importante. Existen add-0n's desarrollados por la comunidad de desarrolladores de Vaadin, pero también existen una serie de ellos que están certificados por la propia compañía, como es el caso de SQLContainer.

Admite dos tipos de acceso a base de datos. Usando TableQuery, nos permitirá mediante consultas generadas pre-hechas buscar, actualizar e insertar datos directamente desde el contenedor en una tabla de la base de datos (de forma automática), mientras que FreeformQuery nos permitirá utilizar nuestra propia consulta, normalmente más compleja, para buscar datos y nuestras propias opciones para escribir, filtrar así como establecer el control de la carga cuando las consultas devuelven muchos resultados.

Además de las opciones de configuración de la conexión con la base de datos, Vaadin SQLContainer también extiende la interfaz para implementar reglas de filtrado más avanzados contra la base de datos. Por último, el Add-on también ofrece un pool de conexiones para JDBC (SimpleJDBCConnectionPool) y otro para JavaEE (J2EEConnectionPool), así como el soporte integrado para transacciones; el modo auto-commit también se proporciona.

Actualmente las BD soportadas por SQLContainer y TableQuery por defecto son:

  • HSQLDB [1.8 o posterior]
  • MySQL [5.1 o posterior]
  • PostgreSQL [8.4 o posterior]
  • Oracle Database [10g o posterior]
  • Microsoft SQL Server [2005 o posterior]

Comencemos:

PASO 1:

En esta ocasión he utilizado SQL Server 2008 R2. Creamos una tabla muy sencilla con unos datos de ejemplo.

CREATE TABLE Prueba (id INT PRIMARY KEY, nombre nvarchar (50))
INSERT INTO Prueba VALUES(1, 'Contacto 1');
INSERT INTO Prueba VALUES(2, 'Contacto 2');
INSERT INTO Prueba VALUES(3, 'Contacto 3');
INSERT INTO Prueba VALUES(4, 'Contacto 4');
INSERT INTO Prueba VALUES(5, 'Contacto 5');

PASO 2:

Creación de un proyecto Vaadin desde Eclipse, seguid los pasos descritos en este enlace.

PASO 3:

Copiamos los .jar del controlador JDBC y del Add-on en el proyecto dentro de la siguiente carpeta WEB-INF/lib.

PASO 4:

En la clase principal extendida  Application creada automáticamente al generar el proyecto en este caso llamada EjemploVaadinAplicacion.java escribimos el siguiente código (observar que está comentado).

package com.vaadin.demo.ejemplovaadin;
import com.vaadin.Application;
import com.vaadin.ui.*;
import java.sql.*;
import com.vaadin.addon.sqlcontainer.SQLContainer;
import com.vaadin.addon.sqlcontainer.connection.SimpleJDBCConnectionPool;
import com.vaadin.addon.sqlcontainer.query.FreeformQuery;
 
public class EjemploVaadinAplicacion extends Application {
  @Override
  public void init() {
    Window mainWindow = new Window("Consulta demo Vaadin");
    SimpleJDBCConnectionPool connectionPool;
    Table table = null;
    try {
      connectionPool = new SimpleJDBCConnectionPool("com.microsoft.sqlserver.jdbc.SQLServerDriver",
        "jdbc:sqlserver://direccionDelServidor:1433;databaseName=nombreBaseDatos;", 
        "usuario", "contraseña", 2, 5);
 
      SQLContainer container = null;
      container = new SQLContainer(new FreeformQuery("SELECT * FROM Prueba" , connectionPool));
 
      table = new Table(null, container); //Establecemos el tamaño de Grid
      table.setWidth("100%"); //Ocupa todo el ancho del navegador
      table.setHeight("170px"); //Altura del Grid.
 
      //Opciones en la selección del Grid
      table.setSelectable(true); //Hacemos que se puedan seleccionar las filas del Grid.
      table.setMultiSelect(true);//Selección de múltiples filas del Grid.
 
      table.setContainerDataSource(container);
 
      //Establecemos el nombre de las cabeceras de las columnas
      table.setColumnHeaders(new String[] { "ID Contacto", "Nombre Contacto" });
    } catch (SQLException e){
      System.out.println("SQL Exception: "+ e.toString());
    }
      mainWindow.addComponent(table); setMainWindow(mainWindow);
  }
}

PASO 5:

Y el resultado es el siguiente:

DesarrolloEjemploVaadin

Enlaces de interés y bibliografía consultada:

Pagina oficial https://vaadin.com

Libro oficial https://vaadin.com/book

Capítulo Vaadin SQLContainer https://vaadin.com/book/-/page/sqlcontainer.html

Post relacionados:

Vaadin – Aplicaciones web Java como si fuesen de escritorio