martes, 29 de abril de 2014

Estructura Cliente Servidor- (Enlazar BBD mysql y Java Netbeans)

UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
INGENIERÍA EN SISTEMAS COMPUTACIONALES
PROGRAMACIÓN 5

Integrantes del grupo: William Potosí, Alexander Orbes
ESTRUCTURA CLIENTE – SERVIDOR
Es una arquitectura de procesamientos cooperativo donde uno de los componentes pide servicios a otro, el término cliente - servidor es originalmente aplicado a la arquitectura de software que describe el procesamiento entre dos o más programas: una aplicación y un servicio soportante y además es un modelo para construir sistemas de información, que se sustenta en la idea de repartir el tratamiento de la información y los datos por todo el sistema informático, permitiendo mejorar el rendimiento del sistema global de información.


Para tener esto en claro, podemos definir la estructura Cliente- Servidor con un gráfico que detalla todos los elementos de la estructura:


Servidor de Base de Datos: Podemos usar la herramienta de gestión de base de datos que deseemos para montar nuestro servidor, en este caso usaremos MySQL, es recomendable que el servidor de la base de datos sea de uso exclusivo de la gestión de base de datos, usando así ordenadores diferentes a estos para hacer el papel de clientes.
DAO (Data Acces Object): En esta están los DML (Lenguaje de Manipulación de Datos), los cuales son: INSERT, DELETE, UPDATE y SELECT.
MVC: Básicamente este es el patrón de arquitectura que usaremos para esta estructura cliente- servidor.
Vista: Es la interfaz que el usuario usa para comunicarse mediante la aplicación hacia la base de datos.
Lógica de Datos: Son todas las instrucciones y métodos que usa la aplicación para llevar a cabo las instrucciones requeridas para el funcionamiento de la aplicación.
NOTA: Las entidades nos permiten representar la información, mientras que las DAO las manipula.
Teniendo en cuenta todo lo anterior, vamos a aplicar esta teoría en un ejercicio simple.
Para esto vamos a crear las siguientes tablas de base de datos en el desarrollador de MySQL:
Usaremos estas líneas de código:
CREATE DATABASE notas;

USE notas;

/* Table: TAB_ESTUDIANTES                   */
/*==============================================================*/

CREATE TABLE TAB_ESTUDIANTES

(   ID_ESTUDIANTE        INTEGER NOT NULL AUTO_INCREMENT,
   CEDULA               VARCHAR(10),
   NOMBRES              VARCHAR(40),
   APELLIDOS            VARCHAR(40),
   DIRECCION            VARCHAR(40),
   TELEFONO             VARCHAR(40),
   PRIMARY KEY (ID_ESTUDIANTE) );

/* Table: TAB_MATERIAS                                          */
/*==============================================================*/
CREATE TABLE TAB_MATERIAS

(    ID_MATERIA           INTEGER NOT NULL AUTO_INCREMENT,
   NOMBRE_MATERIA       VARCHAR(40),
   PRIMARY KEY (ID_MATERIA) );
/* Table: TAB_NOTAS                                             */
/*==============================================================*/

CREATE TABLE TAB_NOTAS

(   ID_NOTA              INTEGER NOT NULL AUTO_INCREMENT,
   ID_ESTUDIANTE        INTEGER,
   ID_MATERIA           INTEGER,
   NOTA1                NUMERIC(8,2),
   NOTA2                NUMERIC(8,2),
   PRIMARY KEY (ID_NOTA));

ALTER TABLE TAB_NOTAS ADD CONSTRAINT FK_REFERENCE_1 FOREIGN KEY (ID_ESTUDIANTE)

      REFERENCES TAB_ESTUDIANTES (ID_ESTUDIANTE) ON DELETE RESTRICT ON UPDATE RESTRICT;

ALTER TABLE TAB_NOTAS ADD CONSTRAINT FK_REFERENCE_2 FOREIGN KEY (ID_MATERIA)

      REFERENCES TAB_MATERIAS (ID_MATERIA) ON DELETE RESTRICT ON UPDATE RESTRICT;

Habiendo ingresado en el código, guardamos este documento con el nombre correspondiente, con el cual nos encargaremos e enlazar la base de datos y la aplicación, en este caso: Netbeans.

Conociendo esto, vamos a abrir el desarrollador y crear un nuevo proyecto, luego de esto vamos a añadir las librerías correspondientes, para poder trabajar conjuntamente con nuestra base de datos:




Luego crearemos una nueva entidad de clases desde la base de datos que deseamos.







Después de este proceso, ya tendremos disponible nuestra base de datos, luego de esto vamos a importar las tablas que contiene la base de datos, en este caso: la base de datos notas tiene las tablas: tab_estudiantes, tab_materia y tab_notas.






Ahora podemos ver, las tablas de nuestra base de datos que han sido importados satisfactoriamente en Netbeans.


El siguiente paso, es añadir los JPAcontroller a Netbeans, por lo que debemos crear un nuevo controlador de clases JPA desde las clases entidad.








Con esto, hemos terminado el enlace de la base de datos de mysql y netbeans.
Ahora lo que resta, es poner en aplicación las instrucciones básicas de mysql, las que son: INSERT, DELETE Y UPDATE, para esto debemos crear una nueva clase y añadir el siguiente código:

package Prueba;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import modelo.dao.MateriaJpaController;
import modelo.dao.exceptions.NonexistentEntityException;
import modelo.entidades.Materia;

/**
  * @author William
 */

public class Prueba {
    public static void main(String[] args) {

        //Código para insertar información en una tabla de BDD.

        EntityManagerFactory emf = Persistence.createEntityManagerFactory("ControlNotasPU");
        MateriaJpaController dao = new MateriaJpaController(emf);
            Materia nueva= new Materia();
             nueva.setNombreMateria("PROGRAMACIÓN VISUAL");
         dao.create(nueva);  //Ejecuta la función INSERT en la tabla de BDD: tab_MATERIAS      
         Materia nueva1= new Materia();
                 nueva1.setNombreMateria("ALGEBRA");
         dao.create(nueva1);
                  Materia nueva2= new Materia();
                  nueva2.setNombreMateria("MATEMATICA APLICADA");
         dao.create(nueva2);
                  Materia nueva3= new Materia();
                  nueva3.setNombreMateria("ELECTRONICA");
         dao.create(nueva3);

        //Método eliminar
          List<Materia> lista =dao.findMateriaEntities();
        for (Materia mat: lista) {
            System.out.println(mat.getIdMateria()+"\t"+ mat.getNombreMateria());   
        }
        dao.destroy(5);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(Prueba.class.getName()).log(Level.SEVERE, null, ex);  
    }  

   //    INSTRUCCIÓN UPDATE
        Materia mat= dao.findMateria(4); //Buscar
        System.out.println(mat.getNombreMateria());
        mat.setNombreMateria("REDES LAN");
        try {
            dao.edit(mat);
        } catch (Exception ex) {
            Logger.getLogger(Prueba.class.getName()).log(Level.SEVERE, null, ex);
        }    }     }


No hay comentarios:

Publicar un comentario