Iniciando un proyecto con appfuse 2.0M5

Víctor Fariña General, Technology Leave a Comment

Hay una cambio de época con la aparición de Appfuse. Antes, en la programacion Java para la web todo era oscuro, para iniciar un proyecto tardabas dias en establecer el esqueleto de la aplicacion, y para añadir funcionalidad, replicabas cientos de lineas que ya tenías en librerías o guardadas en algun archivo de texto.

Con appfuse crear el esqueleto de una aplicacion web con Java es extremadamente sencillo, vamos a ver lo facil que es crear una aplicacion java con las operaciones basicas CRUD .

Instalamos Maven 2, Java 5 y Mysql .(creo que esto no hace falta explicarlo)

Instalamos appfuse en la modalidad mas sencilla empleando para la presentacion JSF (el resto de combinaciones se pueden ver aquí):

mvn archetype:create -DarchetypeGroupId=org.appfuse -DarchetypeArtifactId=appfuse-basic-jsf -DremoteRepositories=http://static.appfuse.org/repository -DarchetypeVersion=2.0-m5 -DgroupId=com.mycompany.app -DartifactId=myproject

Sustituimos com.company.app por el paqquete que queramos y myproject igual.
Ahora generamos con maven todo lo necesario para empezar a desarrollar desde eclipse, nos situamos en el directorio myproject recien creado:

$ mvn integration-test (nos bajamos los jars necesarios y pasamos los tests)
$ mvn jetty:run-war (probamos la simple aplicacion accesible a través de http://localhost:8080)
$ mvn install eclipse:eclipse (instala lo necesario para que el eclipse se entere del proyecto .project y .classpath entre otros)
$ mvn -Declipse.workspace=<path-to-eclipse-workspace> eclipse:add-maven-repo  (para que el eclipse reconozca la variable M2 del appfuse, es necesario ejecutar esto indicando el workspace de nuestro eclipse ~/workspace).Mas aquí.

Ahora que tenemos la base instalada, ya desde el eclipse importamos el proyecto:
File > Import > Existing Projects into Workspace

Empezamos a desarrollar un nuevo POJO llamado Persona con todo lo que le rodea (Modelo, Servicio y Web):
Creamos el paquete com.mycompany.app.model y dentro de el la clase Persona que extiende BaseObject:

package com.mycompany.app.model;

import org.appfuse.model.BaseObject;

import javax.persistence.Entity;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.Column;

public class Persona extends BaseObject {
private Long id;
private String firstName;
private String lastName;

/*
Generate your getters and setters using your favorite IDE:
In Eclipse:
Right-click -> Source -> Generate Getters and Setters
*/
}

Sobre la persistencia tenemos toda la info aqui.
Añadimos anotaciones para Hibernate: Entity identifica la clase con la tabla:

@Entity
public class Persona extends BaseObject {

Ahora indicamos cual es la PK (Primary Key) y como se generará:

@Id @GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
return this.id;
}

El resto de campos se declaran con la anotacion Column:

@Column(name=”first_name”, length=50)
public String getFirstName() {
return this.firstName;
}

@Column(name=”last_name”, length=50)
public String getLastName() {
return this.lastName;
}

Con esto ya tenemos creado nuestro Pojo Persona, ahora mapeamos esta clase dentro del archivo de configuracion de Hibernate (src/main/resources/hibernate.cfg.xml):

<mapping class=”com.mycompany.app.model.Persona”/>

Ahora si ejecutamos el siguiente comando maven, genera la tabla de la base de datos asociada a este POJO:

$ mvn compile hibernate3:hbm2ddl

Finalmente para que se genere la capa de servicio y las paginas web ejecutamos:

$ mvn appfuse:gen -Dentity
$ mvn appfuse:install -Dentity

Y probamos la aplicacion en la pagina http://localhost:8080 publicando el resultado con Jetty:

$ mvn jetty:run-war

Como diría Matt Raible …

Yeah Baby, Yeah:

BUILD SUCCESSFUL
Total time: 9 seconds

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.