Spring Roo Ejemplo básico con PostgreSQL

Proyecto Spring Roo con PostgreSQL en 6 pasos

[ENGLISH VERSION] Spring Roo basic example with PostgreSQL

 
Vamos a hacer unas pruebas iniciales con Spring Roo Project para ver si lo incluimos en los entornos de desarrollo del proyecto Learning Project. Para hacer un desarrollo lo más rápido posible y hacer una evaluación vamos a utilizar una única tabla de las que se recogen en el proyecto aquí tienes toda la información.

Spring Roo

A next-generation rapid application development tool for Java developers. With Roo you can easily build full Java applications in minutes.Spring Roo

En definitiva vamos a ver que aplicación CRUD podemos generar con Spring Roo para la base de datos customerdbroo donde vamos a crear la tabla cb_language con la siguiente estructura en base de datos:

Esquema de la tabla cb_language

Esquema de la tabla cb_language

cb_language

Tabla con los idiomas registrados en la aplicación, se podrá relacionar con múltiples tablas.

En este tutorial aprenderemos a hacer una aplicación Web desde cero usando Spring Roo con PostgreSQL, lo que haremos:

Características Spring Roo

Spring Roo se presenta como una herramienta ligera para hacer más rápido la consecución de resultado instantáneos, veremos si estos se adecuan a nuestras necesidades básicas, el código generado es Java por lo que entendemos que podremos personalizar todo el código generado. o comprobaremos.
Spring Roo se pretende diferenciar de otras herramientas por:

  • Resultados rápidos
  • 100% desarrollado en Java
  • Fácil de usar
  • Rápido y sencillo de borrar
  • Totalmente libre
  • Comunidad activa
  • Integración tecnológica
  • Extensión mediante Roo add-ons
  • Arquitectura con certificación Spring

Preparación del entorno

Para estas pruebas vamos a trabajar con el entorno proporcionado por Spring Tool Suite (STS), aquí puedes descargar la versión que necesites para tu sistema operativo, Spring Tool Suite (STS) proporciona soporte para Spring Roo 2.0.0 está disponible a partir de STS 3.7.0, en el enlace de la descarga encontrarás toda la información.

Ahora vamos a incluir Roo en nuestro STS IDE:

  • Abre tu IDE STS
  • Abre el cuadro de mandos (dashboard) de STS
  • Haz clic en el tab Extensions y busca Spring Roo
  • Instala Spring IDE – Roo Extension.
  • Reinicia STS

Configurando Spring Roo 2.0.0 en tu STS:

  • Selecciona en el menú Window y abre “Preferences > Spring > Roo Support”
  • En “Roo Support” pulsamos el botón “Add” para la nueva instalación.
  • En “Roo Configure Roo Installation” pulsa el botón “Browse”, entonces selecciona el directorio en el que tienes descomprimido Spring Roo 2.0.0
  • Confirma la instalación
  • Ahora Roo está instalado en tu STS

Con esto ya dejamos nuestro IDE configurado para utilizar Spring Roo.

Ahora solo falta que instalemos PostgreSQL en nuestro equipo si no lo tenemos ya instalado, en la publicación Tutorial Postgresql (1): Preparando el entorno tienes toda la información y los enlaces necesarios para la descarga y configuración básica.
 

Creación del proyecto y configuración

Con el IDE STS ya preparado para Spring Roo, vamos a crear el proyecto, para ello nos dirigimos al panel de control (dashboard) donde encontraremos una opción: Spring Roo Project que nos permite generar un proyecto Spring Roo como puedes ver en la imagen:

Spring Roo Project Creación del proyecto

Spring Roo Project Creación del proyecto

Ahora en la pantalla de creación de nuevo rellenamos la información que se nos pide como se muestra en la imagen y le damos a siguiente (next):

Spring Roo Project Creación del nuevo proyecto

Spring Roo Project Creación del nuevo proyecto

Una vez hecha la selección nos aparecerá el siguiente mensaje en pantalla: “Please click ‘Finish’ to create the new project using Roo”, y solo nos quedará pulsar el botón de FINISH. Ahora ya tenemos nuestro proyecto creado y la consola para Spring Roo que utilizaremos para ir creando la unidad de persistencia, la tabla, y la generación MVC del proyecto web, a continuación vamos a explicar su uso utilizándola, en la imagen puedes ver el proyecto y la consola que utilizaremos.

Vamos a realizar nuestra configuración con PostgreSQL para la base de datos que vamos a crear y que llamaremos customerdbroo.

jpa setup --provider HIBERNATE --database POSTGRES --databaseName customerdbroo

Al ejecutar esto en la consola Roo nos muestra las acciones realizadas, recuerda refrescar el proyecto para recargar los nuevos ficheros creados:

Spring Roo Project - Roo configuración de la base de datos

Spring Roo Project – Roo configuración de la base de datos

Como puedes ver en la imagen se han creado los ficheros de configuración de la aplicación, la persistencia y el que vamos a tocar ahora database.properties donde completamos el usuario y contraseña de acceso a la base de datos, así quedará finalmente:

#Updated at Wed Nov 04 23:04:43 CET 2015
#Wed Nov 04 23:04:43 CET 2015
database.driverClassName=org.postgresql.Driver
database.url=jdbc\:postgresql\://localhost\:5432/customerdbroo
database.username=xulescode
database.password=xulescode

 
Te recomiendo que explores los ficheros creados para familiarizarte con el entorno, aunque de momento el único fichero que tenemos que tocar es el que hemos configurado.
 

Creación de la entidad para cb_language

Ahora ya podemos crear nuestros objetos del dominio y los campos con los definiremos nuestra clase para cb_language. Ahora usaremos el comando entity jpa para crear nuestra entidad, este comando tiene una serie de atributos de los cuales vamos a utilizar

  • class que nos sirve para especificar con que dominio estamos, y que después, cuando creemos otras tablas, o posteriormente, queramos añadir nuevos campos nos permitirá especificar que entidad estamos modificando.
  • testAutomatically atributo que crea los test de integración para un objeto de dominio

Una vez aclarado esto vamos a crear la entidad CbLanguage ejecutando en la consola Roo:

entity jpa --class ~.domain.CbLanguage --testAutomatically

 
Acuérdate de refrescar el proyecto para ver las acciones realizadas, estas se indican en la consola como sigue:

roo> entity jpa --class ~.domain.CbLanguage --testAutomatically
Created SRC_MAIN_JAVA/org/xulescode/mode/domain
Created SRC_MAIN_JAVA/org/xulescode/mode/domain/CbLanguage.java
Created SRC_TEST_JAVA/org/xulescode/mode/domain
Created SRC_TEST_JAVA/org/xulescode/mode/domain/CbLanguageDataOnDemand.java
Created SRC_TEST_JAVA/org/xulescode/mode/domain/CbLanguageIntegrationTest.java
Created SRC_MAIN_JAVA/org/xulescode/mode/domain/CbLanguage_Roo_Configurable.aj
Created SRC_MAIN_JAVA/org/xulescode/mode/domain/CbLanguage_Roo_Jpa_Entity.aj
Created SRC_MAIN_JAVA/org/xulescode/mode/domain/CbLanguage_Roo_Jpa_ActiveRecord.aj
Created SRC_MAIN_JAVA/org/xulescode/mode/domain/CbLanguage_Roo_ToString.aj
Created SRC_TEST_JAVA/org/xulescode/mode/domain/CbLanguageDataOnDemand_Roo_DataOnDemand.aj
Created SRC_TEST_JAVA/org/xulescode/mode/domain/CbLanguageIntegrationTest_Roo_IntegrationTest.aj
Created SRC_TEST_JAVA/org/xulescode/mode/domain/CbLanguageIntegrationTest_Roo_Configurable.aj
Created SRC_TEST_JAVA/org/xulescode/mode/domain/CbLanguageDataOnDemand_Roo_Configurable.aj

 
Ahora vamos a añadir los campos, el primero que vamos a añadir es idlanguage que según la estructura definida inicialmente para la tabla debería ser la clave primaria, en esta primera aproximación a Spring Roo no he encontrado la forma de indicar que quiero que esta sea la clave primaria y con este nombre, al final veremos porque sucede esto y cual es la clave primaria que nos genera Spring Roo automáticamente. Para añadir un nuevo campo la estructura es sencilla usamos el comando field seguido del tipo de dato y ahora podemos usar algunos atributos, en este enlace tienes más atributos disponibles, los que utilizamos aquí son los siguientes:

  • –fieldName idlanguage indicamos el nombre del campo
  • –notNull indicamos que el campo no puede ser NULL.
  • –sizeMax 6 indicamos el tamaño máximo, también podemos indicar el mínimo con sizeMin
  • –class ~.domain.CbLanguage como ya expliqué antes nos sirve para indicar con que dominio estamos trabajando, ahora realmente no nos haría falta porque ya estamos trabajando dentro del dominio CbLanguage

Con lo que la creación de nuestro primer campo quedaría así:

field string --fieldName idlanguage --notNull --sizeMax 6 --class ~.domain.CbLanguage

 
Este es el resultado que se muestra en nuestra consola para nuestro primer campo, lo indico simplemente para que te fijes que ahora en la consola estamos trabajando con el dominio CbLanguage (~.domain.CbLanguage roo>):

~.domain.CbLanguage roo> field string --fieldName idlanguage --notNull --sizeMax 6 --class ~.domain.CbLanguage
Updated SRC_MAIN_JAVA/org/xulescode/mode/domain/CbLanguage.java
Updated SRC_TEST_JAVA/org/xulescode/mode/domain/CbLanguageDataOnDemand_Roo_DataOnDemand.aj
Updated SRC_MAIN_JAVA/org/xulescode/mode/domain/CbLanguage_Roo_Jpa_ActiveRecord.aj
Created SRC_MAIN_JAVA/org/xulescode/mode/domain/CbLanguage_Roo_JavaBean.aj

 
Añadimos el resto de campos sin profundizar de momento mucho más:

field string --fieldName namelanguage --notNull --sizeMax 60 --unique 
field string --fieldName isactive --notNull --sizeMax 1 --value "N"
field string --fieldName languageiso --sizeMax 2 
field string --fieldName countrycode --sizeMax 2 
field string --fieldName isbaselanguage --notNull --sizeMax 1  --value "N"

 
Esta es el resultado de los campos que hemos creado en CbLanguage:

package org.xulescode.mode.domain;
import org.springframework.roo.addon.javabean.annotations.RooJavaBean;
import org.springframework.roo.addon.javabean.annotations.RooToString;
import org.springframework.roo.addon.jpa.annotations.activerecord.RooJpaActiveRecord;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.persistence.Column;
import org.springframework.beans.factory.annotation.Value;

@RooJavaBean
@RooToString
@RooJpaActiveRecord
public class CbLanguage {

    /**
     */
    @NotNull
    @Size(max = 6)
    private String idlanguage;

    /**
     */
    @NotNull
    @Column(unique = true)
    @Size(max = 60)
    private String namelanguage;

    /**
     */
    @NotNull
    @Value("N")
    @Size(max = 1)
    private String isactive;

    /**
     */
    @Size(max = 2)
    private String languageiso;

    /**
     */
    @Size(max = 2)
    private String countrycode;

    /**
     */
    @NotNull
    @Value("N")
    @Size(max = 1)
    private String isbaselanguage;
}

 
Ahora ejecutamos los test que hemos creado automáticamente con el comando para maven perform tests, como se explica con más detalle en el apartado de la documentación de referencia. Utilizando nuestro STS vamos a Run As > Maven test
Podemos personalizar nuestro código Java, si quieres ver algo más aquí tienes un ejemplo: Edit, modify and customize the Roo-generated code, en esta publicación no entraremos en este apartado.

 

Resolviendo dependencias

Una vez finalizado esto, y por lo menos en mi caso, se observa en el proyecto la indicación de que tenemos errores en nuestro fichero pom.xml, aquí fue donde perdí más tiempo en el tutorial, hasta que me dí cuenta que había problemas de configuración en las definiciones utilizadas en el proyecto, estás son las correcciones que yo he hecho para que todo funcione correctamente:

		<repository>
			<id>com.springsource.repository.bundles.release</id>
			<name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Releases</name>
			<url>http://repository.springsource.com/maven/bundles/release</url>
		</repository>
		<repository>
			<id>com.springsource.repository.bundles.external</id>
			<name>SpringSource Enterprise Bundle Repository - External Bundle Releases</name>
			<url>http://repository.springsource.com/maven/bundles/external</url>
		</repository>
		<repository>
			<id>org.springframework.maven.release</id>
			<name>Spring Maven Release Repository</name>
			<url>http://repo.springsource.org/libs-release-local</url>
			<releases>
				<enabled>true</enabled>
			</releases>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
		</repository>

 

Creación y configuración del MVC para la web

Siguiendo la referencia del proyecto de ejemplo de la documentación de Spring Roo, a continuación, generamos la aplicación Web con la que gestionaremos los idiomas de la clase CbLanguage, así que para ello vamos a ejecutar los comandos web mvc. En primer lugar usaremos web mvc setup para configurar todos los controladores de la aplicación seguido a continuación del comando web mvc all:

~.domain.CbLanguage roo> web mvc setup
~.domain.CbLanguage roo> web mvc all --package ~.web

 
Una vez finalizado ya tenemos lista nuestra aplicación para funcionar.
 

Despliegue del proyecto y pruebas

Antes de ejecutar nuestro proyecto situándonos sobre el fichero pom.xml ejecutamos Run As >Maven install, una vez hecho esto debemos compilar nuestro proyecto, por eso, situándonos desde el mismo sitio ejecutamos ahora Run As >Maven build, y nos aparecerá un menú, tal que así:

Spring Roo Project Roo Maven package

Spring Roo Project Roo Maven package

Estamos utilizando M2Eclipse que nos proporciona una integración para Apache Maven dentro del IDE, como ves en la foto aparecen varias opciones, en tu caso, aparecerá una sin ninguna definición, y esto es porque aún no has definido ninguna meta (Goal), selecciona uno y donde pone Goals introduce package, que es el comando para compilar nuestro proyecto.
 
Hecho esto ya estamos listos para ejecutar nuestro proyecto, sitúate encima de él y selecciona la opción Run As > Run on Server, este es el resultado:

Spring Roo Project Roo Web

Spring Roo Project Roo Web

Creación de un nuevo idioma:

Spring Roo Project Roo Web Crear elemento

Spring Roo Project Roo Web Crear elemento

Listado de los idiomas creados para nuestra entidad CbLanguage, donde tenemos las opción de edición, ver y borrado, completando así nuestra aplicación CRUD.

Spring Roo Project Roo Web Listado de los elementos

Spring Roo Project Roo Web Listado de los elementos

Como puedes ver la aplicación está funcionando y lista, con la configuración que tenemos cada vez que ejecutemos el proyecto se creará de nuevo la base de datos, si no queremos esto simplemente editamos nuestro fichero persistence.xml:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
            <!-- value="create" to build a new database on each run; value="update" to modify an existing database; value="create-drop" means the same as "create" but also drops tables when Hibernate closes; value="validate" makes no changes to the database -->
            <property name="hibernate.hbm2ddl.auto" value="update"/>
            <property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/>
            <property name="hibernate.connection.charSet" value="UTF-8"/>
            <!-- Uncomment the following two properties for JBoss only -->
            <!-- property name="hibernate.validator.apply_to_ddl" value="false" /-->
            <!-- property name="hibernate.validator.autoregister_listeners" value="false" /-->
        </properties>
    </persistence-unit>
</persistence>

 
Aquí, modificamos la propiedad hibernate.hbm2ddl.auto, y la cambiamos de create a update, así, ya no borraremos los datos cada vez que ejecutemos el proyecto.

Finalizado el tutorial estas son mis conclusiones

  • Spring Roo es una herramienta potente para generar una aplicación rápidamente tal y como se promete.
  • No me gusta de Spring Roo la limitación a la hora de generar código por la consola Roo, como por ejemplo, definir tu propia clave primaria, entiendo que si se puede hacer, pero a posteriori, modificando el código Java, quiero explorar más sobre esto, pero es la parte que menos me gusta.
    • Corrijo mi precipitada conclusión para señalar como me indican en un comentario que si podemos identificar nuestra propia clave primaria, y de manera muy fácil, añadimos los siguientes parámetros –identifierField idLanguage –identifierType java.lang.String, y ya se genera, la clave primaria.
    • field string --fieldName idlanguage --notNull --sizeMax 6 --identifierField idLanguage --identifierType java.lang.String --class ~.domain.CbLanguage
      
    • Lo que sigue sin convencerme del todo es la generación en la consola Roo de las entidades, esto es un apreciación personal ya que su funcionalidad hay está, me llama o me gusta más la opción de ingeniería inversa, que probaré sin lugar a dudas.
  • La generación inicial de la estructura web es rápida y sencilla.
  • No me gustan las escasas posibilidades que se introducen en la generación con web mvc
    • También corrijo está conclusión por que no expresa exactamente lo que yo quería, vengo de probar Openxava, donde las cosas se hacen de otra forma, y me gusto más (de momento) su planteamiento. Para valorar en su justa medida a Spring Roo necesito hacer más pruebas, y ver como más detalle los add-ons que aporta y que si me parencen muy interesante.
    • Lo que te genera el Scaffold en una versión sencilla de lo mínimo necesario para la gestión de la entidad que has generado. Esto, por supuesto, es modificable y ampliable como tu creas necesario en tu proyecto. Además Spring Roo ofrece la posibilidad de automatizar operaciones generando complementos (add-on) que puedes instalar de forma fácil y sencilla gracias a los nuevos cambios introducidos en la versión 2.0 para su gestión y instalación como add-on suite aporte por Jose Manuel Vivó Arnal
  • Las ventajas que tiene Spring Roo es toda la integración con Spring con lo que fácilmente vamos a poder usar Spring Security, por ejemplo, ejecutando por consola: security setup.

Conclusión

Finalizando, me gusta la integración con Spring y sus herramientas, pero no me convence ni la creación de tablas, ni la generación del esqueleto de la web, ya que creo que debería aportar más opciones, esta es una conclusión inicial ya que la inclusión de Add-ons y la ingeniería inversa podrían cambiar totalmente mi apreciación inicial.Xules

 
Me queda pendiente probar algo más prometedor en relación con la base de datos, y es que hay una opción para hacer ingeniería inversa de nuestra base de datos ya creada, y esta opción si funciona bien si podría cubrir mis expectativas creadas, ya que inicialmente me quedo un poco decepcionado. Le daremos otra oportunidad para decidir si lo incluimos entre los frameworks de prueba en Learning Project.

 

Documentación utilizada

  • Spring Roo Project: página principal del proyecto, desde aquí puedes acceder a toda la documentación (inglés).
  • Spring Roo and JPA Entities: explicación y aclaración de las relaciones entre entidades en Spring Roo (inglés).
  • Apache Maven
  • Maven in five minutes: por si no tienes ningún conocimiento sobre Maven, aquí tienes una introducción básica.
  • Para preguntas sobre Spring Roo podemos usar StackOverflow , donde nos ayudarán a resolver nuestras dudas y ayudr con ello a conocer mejor la herramienta.
  • Complementos (add-ons): añado el interesante enlace que me aportan en los comentarios sobre un add-on suite que parece muy interesante para el desarrollo con Spring Roo: gvNIX. Incluye funcionalidades como integración con jQuery, Bootstrap, Dandelion-datatables, Auditoria con Histórico de cambios, Jasper Reports… aporte por Jose Manuel Vivó Arnal

 

Espero que te haya sido útilXules

5 respuestas en “Spring Roo Ejemplo básico con PostgreSQL

  1. Jose Manuel Vivó Arnal

    Hola Xules,

    Primero, felicitarte por tu magnifico Post. Siempre se agradece encontrar guías como esta que pueden ayudar a la gente a mejorar su forma de trabajar.

    Me gustaría hacerte unos pequeños apuntes que pueden ser complementarios y que, además, pueden resolver algunas dudas que te aparecen:

    Identificador de la entidad
    Sobre la configuración de la claves primaria de las entidades: en la documentación de referencia puedes encontrar las opciones que ofrece el comando –identifier* que te permite gestionar este aspecto de la entidad. Por ejemplo, para generar el idLanguage como identificador de tipo String simplemente usa el comando:

    entity jpa --class ~.domain.CbLanguage --testAutomatically --identifierField idLanguage --identifierType java.lang.String

    Esto te creará la clase de la entidad así:

    @RooJavaBean
    @RooToString
    @RooJpaActiveRecord(identifierField = "idLanguage", identifierType = String.class)
    public class CbLanguage {
    }

    Lo que puede desconcertar es que la propiedad idLanguage se genera dentro del fichero CbLanguage_Roo_Jpa_Entity.aj y no en la propia clase, pero el resultado es el mismo y siempre puedes hacer un Refactor / push-in (más información sobre esto aquí) para incluirlo en la clase original (a partir de ese momento Spring Roo deja en tus manos la gestión de la propiedad) y así poderle añadir la notación para validar su tamaño (@Size).

    Resolviendo dependencias
    Lo que comentas en este apartado es bastante extraño ya que, en teoría, las dependencias de Spring Roo están accesibles desde los repositorios estándar de Maven (como puedes ver aquí).
    Si quieres, crea una consulta en StackOverflow con más datos y estaremos encantados de ayudarte.

    La capa Web
    Lo que te genera el Scaffold en una versión sencilla de lo mínimo necesario para la gestión de la entidad que has generado. Esto, por supuesto, es modificable y ampliable como tu creas necesario en tu proyecto. Además Spring Roo ofrece la posibilidad de automatizar operaciones generando complementos (add-on) que puedes instalar de forma fácil y sencilla gracias a los nuevos cambios introducidos en la versión 2.0 para su gestión y instalación como add-on suite

    Complementos (add-ons)
    Sobre los add-ons quería añadir un enlace a un add-on suite que creo que os puede ser interesante para el desarrollo con Spring Roo: gvNIX. Incluye funcionalidades como integración con jQuery, Bootstrap, Dandelion-datatables, Auditoria con Histórico de cambios, Jasper Reports…

    Para terminar, animarte a ti y a cualquiera que tenga preguntas sobre Spring Roo a usar StackOverflow ya que nos permitirá compartir mejor el conocimiento de esta herramienta.

    Un saludo,
    Chema.

  2. Julio Yáñez Novo

    Hola Chema.

    Muchas gracias por tu aporte, esto es exactamente, lo que estoy buscando yo con la publicación de estos tutoriales, con tu explicación sobre la posibilidad de incluir idlanguage como clave, modifica y mucho mis conclusiones, y me dispongo a incluir Spring Roo dentro de mi proyecto Learning Project, para el desarrollo entero de una aplicación, y así poder comparar Spring Roo con OpenXava, JSF-Primefaces, y otros, futuros desarrollos.

    Lo antes posible modificaré esta publicación para incluir tu aporte.

    Resolviendo dependencias

    Al final me decidí a incluirlo en mi introducción, por si a alguien le pasaba lo mismo, lo analizaré otra vez antes de incluir la incidencia en StackOverflow.

    Complementos add-ons

    Me parecen muy interesantes y es algo que hecho de menos en otros frameworks Java.

    Como te decía, me has convencido para desarrollar el tutorial entero para obtener una aplicación funcional como la que he desarrollado para Openxava.

    Saludos.

    Xules

  3. Sin Nombre

    Gracias por el aporte.
    Muy buena documentación inicial.

    Estoy adentrandome en este mundo porque me parece muy interesante.
    Tengo una duda sobre si usar MySQL Server o PostgreSQL.

    ¿ Cúal es la diferencia ?
    ¿ Puedo tener ambos instalado sin tener problemas de conflictos de puertos u otros ?
    Anteriormente para realizar otras actividades relacionadas con PHP , instalé WAMP server
    ¿ Puedo utilizar algo de WAMP server para estos menesteres ?
    – Te lo comento porque no se a quién preguntar , que conozca este tema.

    Gracias por tu atención y trabajo.

    1. Julio Yáñez Novo Autor de la entrada

      Muy buenas, respondo a tus preguntas:

      Tengo una duda sobre si usar MySQL Server o PostgreSQL.

      Puedes usar cualquiera de las dos bases de datos, dependiendo del proyecto te aconsejaría una u otra (mi preferencia es PostgreSQL), si conoces MySQL te aconsejaría que usarás está para facilitar tu aprendizaje, de todas formas si quieres aprender PostgreSQL está es una buena oportunidad, aquí te explico como instalarlo y utilizarlo, también, puedes encontrar el desarrollo de la base de datos que utilizo Customerdb en SQL: Tutorial PosgreSQL (1): Preparando el entorno.

      ¿ Cúal es la diferencia ?

      Ambas son bases de datos relacionales que difieren en su implementación y en la forma de almacenamiento de las tablas en las bases de datos, también encontrarás diferencias en su implementación SQL, esta es una explicación muy resumida. MySQL ha llevado el liderazgo en la web en implementaciones de blogs (WordPress, Joomla,…) y ecommerce (Prestashop,…), PostgreSQL no es tan utilizado en estos entornos, pero si en el desarrollo de aplicaciones empresariales ya que su respuesta, fiabilidad, y el funcionamiento de los procesos almacenados hace que sea un competidor de Oracle, encontrarás, por ejemplo, que muchos ERP están utilizando PostgreSQL.

      ¿ Puedo tener ambos instalado sin tener problemas de conflictos de puertos u otros ?

      Puedes instalar ambas bases de datos al mismo tiempo, solo dependerá de los recursos de tu equipo, por defecto, PostgreSQL se instala en el puerto 5432 y MySQL en el puerto 3306, en ambas este es un parámetro configurable.

      ¿ Puedo utilizar algo de WAMP server para estos menesteres ?

      No, necesitas un servidor de aplicaciones Java como Apache o Pivotal que es el que trae por defecto STS (Spring Tool Suite) que es el IDE que te aconsejo que utilices para desarrollar con Spring Roo.
      Apache o Pivotal son implementaciones de software open source de Java Servlet, JavaServer Pages, Java Expression Language y las tecnologías Java WebSocket, en esta publicación: Añadiendo Apache Tomcat a Spring Tool Suite, donde explico como instalar Apache Tomcat en STS puedes encontrar información sobre este servidor.

      Espero que mis respuestas te ayuden en tu elección. Saludos.

      1. Sin Nombre

        Buenas.
        1 millón de gracias por la respuesta.
        A voz de pronto , tengo configurado en el IDE Eclipse , el plugin STS , Spring Roo , un servidor Apache Tomcat 8.0 , Maven2 , además añadí el gvNiX a la consola del IDE , lo tengo todo listo para empezar a trabajar , mi duda era sobre que sistema de base de datos usar y si podía ocurrir algún problema por usar ambas bd por si necesitaba seguir un ejemplo o hacer alguna prueba con una u otra.

        Una vez más gracias por su atención y paciencia.
        Todo lo que usted me ofrezca será bien acogido.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *