Páginas

jueves, 4 de diciembre de 2014

La API de JPA 2.1 (III) Creando un proyecto JPA 2.1 en eclipse: un poco de Java



Vamos a crear varias entidades. Como ahora hay movida con las elecciones locales, vamos a crear una tabla de partidos políticos.

package org.ximodante.entities.elections;

import java.io.Serializable;
import javax.persistence.*;

/**
 * Entity implementation class for Entity: party
 *
 */
@Entity
@Table(name = "elecparty") 
public class Party implements Serializable {

 

 private static final long serialVersionUID = 1L;
    
 @Id
 @Column(name = "id")
 @GeneratedValue(strategy = GenerationType.AUTO)
 private Long id;
 
 @Column(name = "initial")
 private String initial;
 
 @Column(name = "name")
 private String name;
 
 public Party() {
  super();
 }

 // Autogenerated getters and setters 
 
 public Party(String initial, String name) {
  super();
  this.initial = initial;
  this.name = name;
 }
 
 public Long getId() {
  return id;
 }

 public void setId(Long id) {
  this.id = id;
 }

 public String getInitial() {
  return initial;
 }

 public void setInitial(String initial) {
  this.initial = initial;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public static long getSerialversionuid() {
  return serialVersionUID;
 }
   
} 
package org.ximodante.test;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import org.ximodante.entities.elections.Party;

public class testEntityManager {

 /**
  * @param args
  */
 EntityManagerFactory emf = null;
 EntityManager em = null;
 
 public static void main(String[] args) {
  // TODO Auto-generated method stub

  EntityManagerFactory emf = Persistence.createEntityManagerFactory("Derby-v11");
  EntityManager em = emf.createEntityManager();
  
  persistSomeData(em);
  em.close();
  emf.close();
 }
 
 private static void persistSomeData (EntityManager em ) {
  em.getTransaction().begin();
    em.persist (new Party("PSPV-PSOE","Partit Socialista del Pais Valencià"));
    em.persist (new Party("PP"       ,"Partit Popular"));
    em.persist (new Party("EUPV"     ,"Esquerra Unida del Pais Valencià"));
    em.persist (new Party("UPyD"     ,"Unión Progreso y Democracia"));
    em.persist (new Party("Bloc"     ,"Compromis Bloc"));
    em.persist (new Party("ERC"      ,"Esquerra Republicana de Catalunya"));
     em.getTransaction().commit();   
 }

} 

Y podemos comprobar que:
  1. Se ha creado la BBDD base01
  2. Se ha creado nuestro esquema USER
  3. Se ha creado la tabla ELECPARTY
  4. Se han dado de altas los 6 partidos políticos. 
Respecto al esquema no le hemos dicho nada y lo ha creado como el nombre del usuario.
Si queremos podemos decirle que cree el esquema si en la anotación de la tabla se lo decimos con
 
@Table (name = "elecparty", schema="myschema") 

La API de JPA 2.1 (II) Creando un proyecto JPA 2.1 en eclipse: persistence.xml

Para ello nos hemos instalado el eclipse Luna para Java EE.

Primeramente abrimos una pantalla de comandos (shell) y arrancamos el servidor tal como vimos en el apartado anterior del blog.

Ahora abrimos el eclipse y creamos un nuevo proyecto de tipo JPA:
  • seleccionamos tipo JPA 2.1, 
  • definimos la conexion a la base de datos Derby que hicimos en el apartado anterior del blog y ademas le decimos que queremos un exquema también.
  •  cogemos el jar de cliente de Derby JDBC que nos suministra eclipse (aunque también podemos escoger el que nos hemos descargado de Derby en la carpeta lib, 
  • tomamos el runtime java 1.8 y 
  • (En principio escogí la libreria eclipseLink 2.5 que el mismo eclipse descarga), pero después . También podemos decirle que no seleccionamos ninguna. Y mas tarde descargamos la última versión de Hibernate y se la incluimos en el classpath.
  • Le pedimos que descubra las clases anotadas automaticamente sin que tengamos que definirlas en el "persistence.xml"
Ahora  tenenos que descargar el Hibernate última version, y se lo añadimos al classpath todo lo relacionado con el JPA y complemantarios.

Llemanos el "persistece.xml"
 
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="Derby-v11" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

          <properties>
            <!-- Configuring JDBC properties -->
            <property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/base01;create=true" />
            <property name="javax.persistence.jdbc.user" value="user" />
            <property name="javax.persistence.jdbc.password" value="password" />
            <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver" />

            <!-- Hibernate properties -->
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect" />
            <property name="hibernate.hbm2ddl.auto" value="update" />

            <!-- Configuring Connection Pool -->
            <property name="hibernate.c3p0.min_size" value="5" />
            <property name="hibernate.c3p0.max_size" value="20" />
            <property name="hibernate.c3p0.timeout" value="500" />
            <property name="hibernate.c3p0.max_statements" value="50" />
            <property name="hibernate.c3p0.idle_test_period" value="2000" />
          </properties>
    </persistence-unit>  
      
</persistence>
 
 

La API de JPA 2.1. (I) Instalando Apache Derby DB

Elegimos el SGBD de Apache porque:
  • Ocupa poco
  • Está hecho en java e integra bien en java
  • Permite instación como servidor local y también de red
  • Ha tenido actualizaciones en 2014
  • Y sobre todo porque es libre.
Primeramente vamos a la página de Apache Derby y la descargamos.

Creamos las variables de entorno. Como estamos en Widows 7 vamos a
  1. Equipo
  2. Propiedades del sistema
  3. Configuración avanzada del sistema
  4. Variables de entorno
Definimos las siguientes Variables del sistema:
  1. DERBY_HOME : Que apunta a la ruta completa donde está la carpeta que hemos descargado
  2. PATH: Le añadimos %DERBY_HOME%\bin;
Creamos una carpeta por ejemplo DERBYTUTOR

Vamos a correr DerbyDB como servidor en  red. Para ello necesitamos dos sesiones de símbolo de sistema, la primera es para controlar el servidor y la otra para controlar el cliente. Para ello nos situamos en ambas sesiones en el directori DERBYTUTOR

En la del servidor ejecutamos:
  • java -jar %DERBY_HOME%\lib\derbyrun.jar server start
 En la del cliente ejecutamos :
  • ij 
 Y tambien en el cliente aprovechando el interprete de comandos "ij", creamos una base de datos, creamos una tabla, añadimos registros y los mostramos y salimos del "ij":
  • CONNECT 'jdbc:derby://localhost:1527/seconddb;create=true'; 
    CREATE TABLE SECONDTABLE
        (ID INT PRIMARY KEY,
        NAME VARCHAR(14)); 
     
    INSERT INTO SECONDTABLE VALUES 
        (100,'ONE HUNDRED'),(200,'TWO HUNDRED'),(300,'THREE HUNDRED'); 
     
    SELECT * FROM SECONDTABLE; 
     
    exit; 
Y para parar el servidor:
  • java -jar %DERBY_HOME%\lib\derbyrun.jar server shutdown

miércoles, 3 de diciembre de 2014

La API de REST(I)

Primeramente conviene revisar los conceptos básicos de la API de REST con Asier Marqués.

Bienvenida

Primeramente agradecer a todas las personas que han incluido sus recursos en la red como una forma para beneficiar a toda la comunidad.

Para poder comenzar a mostrar páginas dignas doy las gracias a Alex Gorbatchev y su SintaxHighlighter, y todo el personal que nos lo enseña a utilizar como Daniel That o Dasubipar.

He modificado la plantilla en la zona <head> y he metido el código de SintaxHighlighter y a funcionar.