Skip to main content

Relacionar documentos en bases de datos diferentes

Relacionar documentos en bases de datos diferentes

Podemos mezclar proyectos ejb, para establecer referencias entre documentos que no se encuentran en la misma base de datos, o en un motor NoSQL del mismo tipo. Nos permite mezclar bases de datos y colecciones diferentes.
Contamos con dos bases de datos:
  • commondb
  • transporte

Esquema General


Contamos con los tres proyectos



Proyecto commonejb
El proyecto commonejb, se comunica con la base de datos commondb .

Es un proyecto con acceso a una base de datos comunes para muchas aplicaciones, esto lo podemos hacer mediante mecanismos usando Rest-Ful, pero en este ejemplo usaremos el proyecto como dependencia para otros proyectos.
Cambiamos el nombre del MongoClientProvider de cada proyecto para que no existan conflictos. Esta clase tiene la conexiĆ³n a la base de datos.
Podemos contar con bases de datos en el mismo servidor o en servidores remotos separados una de otra.

se mostrarĆ­a de esta manera

Contamos con un entity llamado Facultad que puede ser usado por muchas aplicaciones.

Entity Facultad


/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.avbravo.commonejb.entity;

import com.avbravo.ejbjmoordb.anotations.Embedded;
import com.avbravo.ejbjmoordb.anotations.Id;
import com.avbravo.ejbjmoordb.pojos.UserInfo;
import java.util.List;
import lombok.Getter;
import lombok.Setter;

/**
 *
 * @author avbravo
 */
@Getter
@Setter
public class Facultad {
    @Id
    private Integer idfacultad;
    private String facultad;
    private String activo;
      @Embedded
    List<UserInfo> userInfo;

    public Facultad() {
    }
      
      
}

El proyecto transporteejb
Da acceso a la base de datos transporte.

Si lo usamos para relacionarlo con otro proyecto , debemos usar la nomenclatura para el MongoClientProvider, repository,services con {nombreproyecto}



En las dependencias agregamos el proyecto commonejb

Podemos crear referencias a los documentos aunque no estƩn en la misma base de datos.
Deseamos relacionar la colecciĆ³n Solicitud en la base de datos transporte con la coleccion Facultad en la base de datos commondb.
Creamos un objeto de tipo List<Facultad> ya que deseamos almacenar una lista de facultades, es importante indicar en el repository la ruta donde esta ubicado el repository Facultad en el otro proyecto, de esta manera el framework, lo podrƔ encontrar fƔcilmente aunque no estƩn en el mismo servidor o use el mismo motor de la base de datos.

@Referenced(documment = "Facultad",
field = "idfacultad", javatype = "Integer", lazy = false,
repository = "com.avbravo.commonejb.repository.FacultadRepository")
List<Facultad> facultad;
exit: Ctrl + ↩



En este ejemplo creamos una lista de Facultades desde el Entity Solicitud en la base de datos transportes, que hace referencia a la colecciĆ³n Facultad que se encuentra en la otra base de datos commondb.

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.avbravo.transporteejb.entity;

import com.avbravo.commonejb.entity.Facultad;
import com.avbravo.ejbjmoordb.anotations.Embedded;
import com.avbravo.ejbjmoordb.anotations.Id;
import com.avbravo.ejbjmoordb.anotations.Referenced;
import com.avbravo.ejbjmoordb.pojos.UserInfo;
import java.util.Date;
import java.util.List;
import lombok.Getter;
import lombok.Setter;

/**
 *
 * @author avbravo
 */
@Getter
@Setter
public class Solicitud {
    @Id
    private Integer idsolicitud;
    private String periodoacademico;
    private Date fecha;
    private String numerogrupo;
    private String carrera;
     @Referenced(documment = "Facultad",
            field = "idfacultad", javatype = "Integer", lazy = false,
           repository = "com.avbravo.commonejb.repository.FacultadRepository")
    List<Facultad> facultad;

    private String responsable;
    private String telefono;
    private String email;
    private String mision;
   
    
    @Referenced(documment = "Usuario",
            field = "username", javatype = "String", lazy = false,
           repository = "com.avbravo.transporteejb.repository.UsuarioRepository")
    Usuario usuario;
   
    
    private String objetivo;
    private String lugares;
    
    private Date fechahorapartida;
    private String lugarpartida;
    
    private Date fechahoraregreso;
    
    private String lugarllegada;
    private String recursossolicitados;
    private String observaciones;
    
     @Referenced(documment = "Estatus",
            field = "idestatus", javatype = "String", lazy = false,
           repository = "com.avbravo.transporteejb.repository.EstatusRepository")
    Estatus estatus;
    
    private Date fechaestatus;
    
    private Integer pasajeros;
      @Referenced(documment = "Tiposolicitud",
            field = "idtiposolicitud", javatype = "String", lazy = false,
           repository = "com.avbravo.transporteejb.repository.TiposolicitudRepository")
   Tiposolicitud tiposolicitud;
      
      
       @Referenced(documment = "Unidad",
            field = "idunidad", javatype = "String", lazy = false,
            repository = "com.avbravo.transporteejb.repository.UnidadRepository")
    private List<Unidad> unidad;
      private String activo;
    
    @Embedded
    List<UserInfo> userInfo;
    
}


Proyecto web transporte

Solo necesitamos agregar la dependencia transporteejb, ya que commonejb, fue agregada a ese proyecto.






Comments

Popular posts from this blog

Tutorial bƔsico de aplicaciones Web con NetBeans parte 1

NetBeans ofrece un excelente soporte para el desarrollo de aplicaciones Web, en esta ocasiĆ³n lo haremos utilizando el Framework Java Server Faces 2.0. En el Menu Seleccionamos Nuevo->Proyecto y luego en Categorias Java Web y en tipo de Proyectos Web  Application indicamos el nombre del proyecto Seleccinamos el servidor Web, usamos GlassFish ya que este soporta EJB3.0 y JSF 2.0 Framework Java Server Faces El IDE genera el esquelto del proyecto Web Pages   almacenamos las paginas .html, xhtml, jsf, los archivos de recursos, los scripts .js, imagenes Source Packages    Son las clases Java  Test Packages    Son las clases que usamos para los Test Libraries     Tenemos las bibliotecas de Java y GlassFish necesarias para ejecutar la aplicaciĆ³n Web. Test Libraries     EstĆ”n las bibliotecas usadas para los test  Configuration Files    Archivos de configuraciĆ³n de la aplicaciĆ³n. Ejecutamos la...

Incrementar Memoria NetBeans

Algunas veces necesitamos incrementar la memoria para un mejor rendimiento. http://www.netbeans.org/community/releases/55/uml-download.html Este es un ejemplo para UML. DescripciĆ³n en ingles. Increasing Memory Settings (applicable to all builds) The default memory settings for NetBeans should be increased for UML projects. If you have the available memory, Locate your NetBeans installation directory ($install_dir). This can be found by starting up NetBeans and selecting Help -> About then select the Detail tab. Edit the $install_dir/etc/netbeans.conf file. Find the line defining netbeans_default_options . Increase the maximum memory attribute to -J-Xmx512m. If you experience heap overflows while working with larger files, you should increase this value further.

Cambiando el estado de un checkbox

Cambiando el Estado de un CheckBox Algunas veces deseamos controlar el estado de un checkbox o cambiarlo segĆ¹n determinadas condiciones. Pasos: 1. Creamos un proyecto Web. 2. En el diseƱador agregamos un checkbox y dos botones. * Dar click derecho en el checkbox y luego seleccionar Add Binding Attribute, para agregar los atributos al checkbox, de manera que los podamos usar en nuestro cĆ³digo. Generando automĆ”ticamente private Checkbox checkbox1 = new Checkbox(); public Checkbox getCheckbox1() { return checkbox1; } public void setCheckbox1(Checkbox c) { this.checkbox1 = c; } 3.Damos click derecho en el botĆ³n Habilitar, y seleccionamos Edit Action Event Handler. A continuaciĆ³n, agregamos el cĆ³digo: this.checkbox1.setSelected(true);, el mĆ©todo setSelected con valor true, marca el checkbox como seleccionado, y un valor de false, quita la marca. public String button1_action() { // TODO: Process the action. Return value is a navigation // ...