En esta cuarta entraga trataremos acerca de la capa Dao, donde se creará la clase DaoPais, el PersistenceManagerFactory(PMF) y un automatizador de consultas Querys.
Empecemos por la creación del PersistenceManagerFactory, el cual usa un archivo de configuración llamado "jdoconfig.xml" el cual se encuentra almacenado en la carpeta "META-INF", este archivo contiene las configuraciones que permiten acceder al Google DataStore. En el siguiente archivo usted puede ver el archivo "jdoconfig.xml"
El archivo "jdoconfig.xml" se crea automáticamente al crear un proyecto GAE, además existe otro archivo adicional en el META-INF para persistencia con JPA, el cual pueden eliminar, ya que en este ejemplo no usamos JPA.
Ahora es importante recordar el atributo "name" de la etiqueta "persistence-manager-factory", ya que lo usaremos al momento de la creación de la clase PMF.
<persistence-manager-factory name="transactions-optional">
Ahora es momento de crear la clase PMF que usara el archivo de configuración "jdoconfig.xml" para poder establecer conectividad con Google cloud DataStore
La clase PMF es una clase Singleton, el cual asegura la creación de un solo objeto para la conectividad al Google Cloud DataStore, claro esto es porque el PMF permite crear varios PersistenceManager para poder realizar peticiones y respuestas de los almacenes de datos.
En estas líneas dejo el código fuente para la creación del PMF:
package com.indiant.dao;
import javax.jdo.JDOHelper;
import javax.jdo.PersistenceManagerFactory;
public class PMF {
private static final PersistenceManagerFactory PMF=
JDOHelper.getPersistenceManagerFactory("transactions-optional");
private PMF(){
}
public static PersistenceManagerFactory getPMF(){
return PMF;
}
}
import javax.jdo.JDOHelper;
import javax.jdo.PersistenceManagerFactory;
public class PMF {
private static final PersistenceManagerFactory PMF=
JDOHelper.getPersistenceManagerFactory("transactions-optional");
private PMF(){
}
public static PersistenceManagerFactory getPMF(){
return PMF;
}
}
Una vez creado nuestro PMF, es momento de crear nuestro automatizador de consultas para poder realizar operaciones "INSERT, UPDATE, DELETE y SELECT" en los almacenes de datos.
Dejo la lineas para que puedan crear la clase Querys y si realizan más automatizaciones no duden en compartirlo.
package com.indiant.dao;
import java.util.ArrayList;
import java.util.List;
import javax.jdo.PersistenceManager;
import javax.jdo.Query;
import com.indiant.shared.BeanParametro;
public class Querys {
private PersistenceManager pm;
public Querys(){
}
public Querys(PersistenceManager pm){
this.pm=pm;
}
public boolean mantenimiento(BeanParametro parametro) throws Exception{
try{
if(parametro.getTipoOperacion().equalsIgnoreCase("I") ||
parametro.getTipoOperacion().equalsIgnoreCase("A")){
pm.makePersistent(parametro.getBean());
return true;
}else if(parametro.getTipoOperacion().equalsIgnoreCase("E")){
Object bean=pm.getObjectById(parametro.getBean().getClass(),parametro.getId());
pm.deletePersistent(bean);
return true;
}else{
throw new Exception("No se ha definido operacion");
}
}catch(Exception ex){
throw ex;
}
}
public List<?> getListBean(Class<?> nomClass)throws Exception{
Query query=pm.newQuery(nomClass);
try{
List lista=new ArrayList();
lista.addAll((List)query.execute());
return lista;
}catch(Exception ex){
throw ex;
}finally{
query.closeAll();
}
}
}
import java.util.ArrayList;
import java.util.List;
import javax.jdo.PersistenceManager;
import javax.jdo.Query;
import com.indiant.shared.BeanParametro;
public class Querys {
private PersistenceManager pm;
public Querys(){
}
public Querys(PersistenceManager pm){
this.pm=pm;
}
public boolean mantenimiento(BeanParametro parametro) throws Exception{
try{
if(parametro.getTipoOperacion().equalsIgnoreCase("I") ||
parametro.getTipoOperacion().equalsIgnoreCase("A")){
pm.makePersistent(parametro.getBean());
return true;
}else if(parametro.getTipoOperacion().equalsIgnoreCase("E")){
Object bean=pm.getObjectById(parametro.getBean().getClass(),parametro.getId());
pm.deletePersistent(bean);
return true;
}else{
throw new Exception("No se ha definido operacion");
}
}catch(Exception ex){
throw ex;
}
}
public List<?> getListBean(Class<?> nomClass)throws Exception{
Query query=pm.newQuery(nomClass);
try{
List lista=new ArrayList();
lista.addAll((List)query.execute());
return lista;
}catch(Exception ex){
throw ex;
}finally{
query.closeAll();
}
}
}
Bueno llego el momento de crear la clase DaoPais, el cual permitirá realizar operaciones sobre la entity Pais almacenada en el Google Cloud DataStore, es importante que sepan que en el Google Cloud DataStore no se crearán la entidades si usteded no las guarda en esta entidad.
Dejo la lineas que permiten crear Dao Pais:
package com.indiant.dao;
import java.util.List;
import javax.jdo.PersistenceManager;
import com.indiant.beans.Pais;
import com.indiant.shared.BeanParametro;
public class DaoPais {
private PersistenceManager pm;
public DaoPais(PersistenceManager pm){
this.pm=pm;
}
public boolean mantenimiento(BeanParametro parametro) throws Exception{
Querys query=new Querys(pm);
return query.mantenimiento(parametro);
}
public List<Pais> getListBean() throws Exception{
Querys query=new Querys(pm);
return (List<Pais>)query.getListBean(Pais.class);
}
}
import java.util.List;
import javax.jdo.PersistenceManager;
import com.indiant.beans.Pais;
import com.indiant.shared.BeanParametro;
public class DaoPais {
private PersistenceManager pm;
public DaoPais(PersistenceManager pm){
this.pm=pm;
}
public boolean mantenimiento(BeanParametro parametro) throws Exception{
Querys query=new Querys(pm);
return query.mantenimiento(parametro);
}
public List<Pais> getListBean() throws Exception{
Querys query=new Querys(pm);
return (List<Pais>)query.getListBean(Pais.class);
}
}
Bueno con esto hemos culminado, en la quinta entrada seguiremos con la capa de Logic y Process.
Escrito por:
Ronald Tejada
Comentarios
Publicar un comentario