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

Utilizando Bootstrap

Ahi la va tercera entrega

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.