Mostrando entradas con la etiqueta JDBC. Mostrar todas las entradas
Mostrando entradas con la etiqueta JDBC. Mostrar todas las entradas

UDEMY-JAVA-JDBC-ORACLE

CURSO VIRTUAL EN UDEMY: PROGRAMACIÓN DE BASE DE DATOS ORACLE CON JAVA JDBC
ACCEDE AL CURSO
Cupón de descuento: JDBCORACLE10
PRESENTACIÓN
FUNDAMENTOS DE BASE DE DATOS ORACLE
INSTALACION DE ORACLE 11G PARTE 1
INSTALACION DE ORACLE 11G PARTE 2
CREACIÓN DEL ESQUEMA EUREKA
EL API JDBC
EL OBJETO STATEMENT
EL OBJETO PREPAREDSTATEMENT
EL OBJETO CALLABLESTATEMENT
PROGRAMACIÓN DE TRANSACCIONES

JDBC: Conexión con Bases de Datos

JDBC: Conexión con Bases de Datos
Muchas veces necesitamos con urgencia ejemplos de cómo realizar la conexión a fuentes de datos utilizando JDBC.
En este artículo te presento ejemplos que te pueden servir para esos casos que necesites conocer los parámetros de conexión con diferentes motores de bases de datos.
Los driver utilizados los puedes encontrar en la siguiente dirección:
https://github.com/gcoronelc/recursos/tree/master/jdbc_drivers
Conexión con MySQL
Para crear un nuevo usuario en MySQL puedes utilizar el siguiente script:
USE MYSQL;

GRANT ALL PRIVILEGES ON *.* TO 'eureka'@'%' 
IDENTIFIED BY 'admin' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON *.* TO 'eureka'@'localhost' 
IDENTIFIED BY 'admin' WITH GRANT OPTION;

FLUSH PRIVILEGES;
Es importante que verifiques el puerto del servidor, esto lo realizamos en el archivo my.ini.
Para la conexión con JDBC debe utilizar los siguientes parámetros:
String driver = "com.mysql.jdbc.Driver";
String urlDB = "jdbc:mysql://localhost:3306/base-de-datos";
String user = "eureka";
String pass = "admin";
Debes utilizar el nombre de tú base de datos y su respectivo usuario y clave.

JAVA ORIENTADO A OBJETOS

Aprenderás a aplicar de manera correcta la PROGRAMACIÓN EN CAPAS en la creación de SISTEMAS EMPRESARIALES.
Aprenderás a aplicar la ORIENTACIÓN A OBJETOS en la creación de SISTEMAS EMPRESARIALES.
Aprenderás a aplicar PATRONES DE SOFTWARE y BUENAS PRACTICAS en la creación de SISTEMAS EMPRESARIALES.
Aprenderás a aplicar CRITERIOS DE USABILIDAD para mejorar la EXPERIENCIA DEL USUARIO en la construcción de INTERFACES DE USUARIO.
Conexión con SQL Server
Lo primero que debes hacer es habilitar la autenticación mixta del servidor.
El driver utilizado para esta prueba es sqljdbc42.jar, proporcionado por Microsoft.
Utilizando una instancia no nombrada
En este caso se está utilizando la instancia no nombrada o instancia por defecto de SQL Server.
El puerto por defecto es el 1433, pero te recomiendo que lo verifiques.
Los parámetros para la conexión son los siguientes:
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String urlDB = "jdbc:sqlserver://localhost:1433;databaseName=base-de-datos";
String user = "eureka";
String pass = "admin";
Debes usar tu base de datos y su respectivo usuario y clave.
Para el ejemplo he creado el inicio de sesión eureka, con su clave admin.
Utilizando una instancia nombrada
Para esta prueba he instalado SQL Server Express, el nombre de la instancia es SQLEXPRESS y debes verificar el puerto:
Los parámetros para la conexión son los siguientes:
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String urlDB = " jdbc:sqlserver://localhost\\SQLEXPRESS:50136;databaseName=base-de-datos";
String user = "eureka";
String pass = "admin";
Debes usar tu base de datos y su respectivo usuario y clave.
Para el ejemplo he creado el inicio de sesión eureka, con su clave admin.

PROGRAMACIÓN DE
BASES DE DATOS ORACLE CON JAVA JDBC

Aprenderás a aplicar correctamente el API JDBC de Java para programar bases de datos ORACLE.
Aprenderás los conceptos fundamentales de Oracle Database y a crear el esquema de trabajo que se utilizará durante el curso.
Estarás capacitado para aplicar el API JDBC de Java para ejecutar consultas sin parámetros, consultas con parámetros, gestión de transacciones y ejecutar procedimientos almacenados que retornan cursor y que gestionan transacciones.
Estarás capacitado para desarrollar una aplicación de escritorio empresarial que ayude a las empresas a gestionar sus procesos comerciales.
Conexión con Oracle
En este caso tengo instalado Oracle XE, y lo primero que debes realizar es verificar los servicios. Son dos servicios que debes verificar: OracleServiceXE y OracleXETNSListener.
Otro punto importante es consultar el SID, esto lo puedes realizar en el SQL*Plus:
SQL> select sys_context('userenv','instance_name') from dual;

SYS_CONTEXT('USERENV','INSTANCE_NAME')
----------------------------------------------------------------
xe
Otra consulta útil es la siguiente:
SQL> select name, value from v$system_parameter
  2  where name in ('instance_name','service_names','db_domain');

NAME                           VALUE
------------------------------ ------------------------------
db_domain                      gustavo.pe
instance_name                  xe
service_names                  XE.gustavo.pe
Con esta consulta puedes ver el nombre de la instancia, el nombre del servicio y el dominio.
Cuando instalas el OracleXE el SID y el nombre del servicio son iguales a XE, por esa razón es indistinto utilizar cualquiera de los dos.
En este ejemplo, he cambiado el nombre del dominio, y por lo tanto cambia el nombre del servicio.
El puerto por defecto es el 1521, esto lo determina el listener.
Puedes ejecutar el siguiente comando en la consola de Windows para consultar el puerto del listener:
lsnrctl status
Conexión utilizando el SID
A continuación tienes los parámetros de conexión utilizando el SID:
String driver = "oracle.jdbc.OracleDriver";
String urlDB = "jdbc:oracle:thin:@localhost:1521:<SID>";
String user = "eureka";
String pass = "admin";
Conexión utilizando el nombre del servicio
A continuación tienes los parámetros de conexión utilizando el nombre del servicio:
String driver = "oracle.jdbc.OracleDriver";
String urlDB = "jdbc:oracle:thin:@localhost:1521/<nombre-del-servicio>";
String user = "eureka";
String pass = "admin";
CÓDIGO FUENTE - EUREKA-WEB-MYSQL-SPRING
En esta sección te presento un video de una aplicación web desarrollada SPRING FRAMEWORK y MYSQL.
Tú tienes acceso al código fuente de esta aplicación, después del video tienes el enlace.



CONSULTAS AVANZADAS CON JDBC

CONSULTAS AVANZADAS UTILIZANDO VISTAS Y JDBC
En este artículo voy a resolver un caso donde ilustrare como desarrollar consultas avanzadas con VISTAS y JDBC.
PROYECTO PROPUESTO
Base de Datos
Se trata de una base de datos en SQL Server llamada EDUTEC.
En esta base de datos donde se registra los cursos que se programan por ciclo, cada mes corresponde a un nuevo ciclo de cursos de extensión profesional que ofrece EDUTEC.
También se registran las matrículas y sus respectivas notas.
El script para crear la base de datos lo encuentras en:
https://github.com/gcoronelc/databases
Requerimiento
La gerencia de EDUTEC necesita una aplicación que le permita consultar la cantidad de alumnos matriculados, los ingresos y pago al profesor de cada uno de los cursos programados en un determinado ciclo.
La interfaz de usuario sugerida es la siguiente:
ANÁLISIS DEL REQUERIMIENTO
Obtener Resumen de Datos
Para muchos casos en los que se requieren resúmenes de datos es mejor crear una vista, ya que los datos resumidos en ella pueden servir para muchos reportes o consultas.
Otra de las ventajas de las vistas es que ocultan toda la complejidad de la sentencia SELECT y también estandarizan los nombres de las columnas.
Para este caso se ha diseñado la siguiente vista:
CREATE VIEW V_RESUMEN_CURSO(
  PERIODO, CICLO, TARIFA, NOMTARIFA, CURSO, NOMCURSO, 
  HORAS, SECCIONES, VACTOTAL, VACDISP, MATRICULADOS, 
  PRECIO, PAGOHORA, INGRESOS, PAGOPROF, UTILIDAD
) AS
WITH V_PREVIA AS(
  SELECT 
    LEFT(IdCiclo,4) PERIODO,
    IdCiclo, IdCurso,
    COUNT(IDCURSOPROG) SECCIONES,
    SUM(Vacantes + Matriculados) VAC_TOTAL,
    SUM(Vacantes) VAC_DISP,
    SUM(Matriculados) MATRICULADOS,
    SUM(Matriculados * PreCursoProg) INGRESOS
  FROM DBO.CursoProgramado
  WHERE Activo = 1
  GROUP BY IdCiclo, IdCurso)
SELECT 
  V.PERIODO,V.IdCiclo, T.IdTarifa, T.Descripcion, C.IdCurso, C.NomCurso,
  T.Horas, V.SECCIONES, V.VAC_TOTAL, V.VAC_DISP, V.MATRICULADOS,
  T.PrecioVenta, T.PagoHora, V.INGRESOS, 
  (T.Horas * T.PagoHora * V.SECCIONES) PAGOPROF,
  (V.INGRESOS - (T.Horas * T.PagoHora * V.SECCIONES)) UTILIDAD
FROM DBO.Tarifa T
JOIN DBO.Curso C ON T.IdTarifa = C.IdTarifa
JOIN V_PREVIA V ON C.IdCurso = V.IdCurso
JOIN DBO.Ciclo CI ON V.IdCiclo = CI.IdCiclo;
GO
A continuación se tiene una prueba de su ejecución:
SELECT *
 FROM V_RESUMEN_CURSO
 WHERE CICLO = '2017-02'
 ORDER BY CURSO;
GO
Arquitectura de la Aplicación
Se trata de una arquitectura en capas, tal como se ilustra en la siguiente imagen.
Identificación de Servicios
Los servicios que se necesitan son:
  • leerPeriodos: Este servicio permite obtener la lista de todos los periodos.
  • leerCiclos: Este servicio permite obtener todos los ciclos de un período.
  • leerResumenCurso: Este servicio permite obtener el resumen de cada curso de un período.
Servicio: leerPeriodos
Este servicio retorna todos los periodos registrados en la base de datos, no recibe ningún parámetro.
Servicio: leerCiclos
Este servicio retorna todos los ciclos de un periodo.
Servicio: leerResumenCurso
Para este caso, el dato de entrada del servicio debe ser el ciclo, por ejemplo 2017-01, por cada mes se tiene un ciclo, quiere decir que en un año se tienen 12 ciclos.
El servicio se encarga de consultar la base de datos, en este caso debe hacer uso de la vista V_RESUMEN_CURSO.
El resultado lo retorna en una lista de objetos Map, en caso de que el ciclo no sea correcto, la lista estará vacía.
CODIGO FUENTE - EUREKA-CS-ORACLE-JDBC
En esta sección te presento un video de una aplicación CLIENTE-SERVIDOR desarrollada con Java y Oracle.
Tú tienes acceso al código fuente de esta aplicación, después del video tienes el enlace.
PROGRAMACIÓN
Acceso a la Base de Datos
La clase AccesoDB es la que proporciona el método getConnection que permite obtener un objeto de tipo Connection que permite el acceso a la base de datos.
package pe.egcc.app.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 *
 * @author Gustavo Coronel
 * @blog gcoronelc.blogspot.com
 */
public final class AccesoDB {

  private AccesoDB() {
  }

  public static Connection getConnection() throws SQLException {
    Connection cn = null;
    
    try {
      // Datos Oracle
      String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
      String url = "jdbc:sqlserver://localhost:1433;databaseName=edutec";
      String user = "eureka";
      String pass = "admin";
      // Cargar el driver a memoria
      Class.forName(driver).newInstance();
      // Obtener el objeto Connection
      cn = DriverManager.getConnection(url, user, pass);
    } catch (SQLException e) {
      throw e;
    } catch (ClassNotFoundException e) {
      throw new SQLException("ERROR, no se encuentra el driver.");
    } catch (Exception e) {
      throw new SQLException("ERROR, no se tiene acceso al servidor.");
    }
    return cn;
  }
  
}
Capa Service
A continuación tienes la clase CursoService.
package pe.egcc.app.service;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import pe.egcc.app.db.AccesoDB;

public class CursoService {

  public List<Map<String, Object>> leerResumenCurso(String ciclo) {
    List<Map<String, Object>> lista = new ArrayList<>();
    Connection cn = null;
    try {
      cn = AccesoDB.getConnection();
      // Consulta
      String sql = "select ciclo, curso, nomcurso, secciones, "
              + "matriculados, ingresos, pagoprof, utilidad "
              + "from V_RESUMEN_CURSO "
              + "where ciclo = ?";
      PreparedStatement pstm = cn.prepareStatement(sql);
      pstm.setString(1, ciclo);
      ResultSet rs = pstm.executeQuery();
      // Convertir el rs en una lista
      while (rs.next()) {
        Map<String, Object> rec = new HashMap<>();
        rec.put("ciclo", rs.getString("ciclo"));
        rec.put("curso", rs.getString("curso"));
        rec.put("nomcurso", rs.getString("nomcurso"));
        rec.put("secciones", rs.getString("secciones"));
        rec.put("matriculados", rs.getDouble("matriculados"));
        rec.put("ingresos", rs.getInt("ingresos"));
        rec.put("pagoprof", rs.getDouble("pagoprof"));
        rec.put("utilidad", rs.getDouble("utilidad"));
        lista.add(rec);
      }
      rs.close();
      pstm.close();
    } catch (SQLException e) {
      throw new RuntimeException(e.getMessage());
    } catch (Exception e) {
      throw new RuntimeException("No se puede ejecutar la consulta");
    } finally {
      try {
        cn.close();
      } catch (Exception e) {
      }
    }
    return lista;
  }

  public List<String> leerPeriodos() {
    List<String> lista = new ArrayList<>();
    // Inicio de Proceso
    Connection cn = null;
    try {
      cn = AccesoDB.getConnection();
      String sql = "select distinct "
              + "left(idciclo,4) periodo "
              + "from ciclo order by 1 desc ";
      PreparedStatement pstm = cn.prepareStatement(sql);
      ResultSet rs = pstm.executeQuery();
      while (rs.next()) {
        lista.add(rs.getString("periodo"));
      }
      rs.close();
      pstm.close();
    } catch (SQLException e) {
      throw new RuntimeException(e.getMessage());
    } catch (Exception e) {
      throw new RuntimeException("No se puede ejecutar la consulta");
    } finally {
      try {
        cn.close();
      } catch (Exception e) {
      }
    }
    // Fin de Proceso
    return lista;
  }

  public List<String> leerCiclos(String periodo) {
    List<String> lista = new ArrayList<>();
    // Inicio de proceso
    Connection cn = null;
    try {
      cn = AccesoDB.getConnection();
      String sql = "select idciclo "
              + "from ciclo "
              + "where idciclo like concat(?,'%') "
              + "order by 1 desc";
      PreparedStatement pstm = cn.prepareStatement(sql);
      pstm.setString(1, periodo);
      ResultSet rs = pstm.executeQuery();
      while (rs.next()) {
        lista.add(rs.getString("idciclo"));
      }
      rs.close();
      pstm.close();
    } catch (SQLException e) {
      throw new RuntimeException(e.getMessage());
    } catch (Exception e) {
      throw new RuntimeException("No se puede ejecutar la consulta");
    } finally {
      try {
        cn.close();
      } catch (Exception e) {
      }
    }
    // Fin de proceso
    return lista;
  }

} 
Capa Controller
A continuación tienes la clase CursoController.
package pe.egcc.app.controller;

import java.util.List;
import java.util.Map;
import pe.egcc.app.service.CursoService;

/**
 *
 * @author Gustavo Coronel
 * @blog gcoronelc.blogspot.com
 * @email gcoronelc@gmail.com
 */
public class CursoController {

  private CursoService cursoService;

  public CursoController() {
    cursoService = new CursoService();
  }

  public List<String> leerPeriodos() {
    return cursoService.leerPeriodos();
  }

  public List<String> leerCiclos(String periodo) {
    return cursoService.leerCiclos(periodo);
  }

  public List<Map<String, Object>> leerResumenCurso(String ciclo) {
    return cursoService.leerResumenCurso(ciclo);
  }

}

Capa View
A continuación tienes el formulario:
Constructor del Formulario
A continuación se tiene el constructor del formulario:
public ConResumenCursoView() {
  initComponents();
  llenarPeriodos();
}

private void llenarPeriodos(){
  
  // Obtener periodos
  CursoController cursoController = new CursoController();
  List periodos = cursoController.leerPeriodos();
  
  // llenar el combo
  cboPeriodo.removeAllItems();
  for(String periodo: periodos){
    cboPeriodo.addItem(periodo);
  }
  cboPeriodo.setSelectedIndex(-1);
  
}
Control: cboPeriodo
A continuación se tiene la programación del combo cboPeriodo, cada vez que se selecciona un nuevo elemento se debe actualizar el combo cboCiclo:
private void cboPeriodoActionPerformed(java.awt.event.ActionEvent evt) {   
                                        
  // Limpiar combo de ciclos
  cboCiclo.removeAllItems();
  // Verificar periodo seleccionado
  int index = cboPeriodo.getSelectedIndex();
  if( index == -1 ) {
    return;
  }
  // Obtener periodo seleccionado
  String periodo = cboPeriodo.getSelectedItem().toString();
  // Traer Ciclos
  CursoController cursoController = new CursoController();
  List lista = cursoController.leerCiclos(periodo);
  // LLEnar combo de ciclos
  for(String ciclo: lista){
    cboCiclo.addItem(ciclo);
  }
  cboCiclo.setSelectedIndex(-1);

}
Control: btnConsultar
A continuación se tiene la programación del botón btnConsultar, en este caso se debe recoger el ciclo seleccionado en cboCiclo para poder ejecutar la consulta.
private void btnConsultarActionPerformed(java.awt.event.ActionEvent evt) {                                             
  // Limpiamos la tabla
  DefaultTableModel tabla;
  tabla = (DefaultTableModel) tblRepo.getModel();
  tabla.setRowCount(0);
  // Se verifica si hay un ciclo seleccionado
  if( cboCiclo.getSelectedIndex() == -1 ){
    return;
  }
  try {
    // Datos
    String ciclo = cboCiclo.getSelectedItem().toString();
    // Realizar consulta
    CursoController cursoController = new CursoController();
    List<Map<String,Object>> lista = cursoController.leerResumenCurso(ciclo);
    // Mostrar resultado
    for(Map<String,Object> rec: lista){
      Object[] rowData = {
        rec.get("ciclo"), rec.get("curso"), rec.get("nomcurso"), 
        rec.get("secciones"), rec.get("matriculados"),
        rec.get("ingresos"), rec.get("pagoprof"),rec.get("utilidad")
      };
      tabla.addRow(rowData);
    }
  } catch (Exception e) {
    JOptionPane.showMessageDialog(rootPane, e.getMessage(),
            "ERROR", JOptionPane.ERROR_MESSAGE);
  }
}
Finalmente, espero que este ejemplo te sea útil para entender la programación en capas y programación orientada a servicios.
CODIGO FUENTE - EUREKA-WEB-MYSQL-SPRING
En esta sección te presento un video de una aplicación web desarrollada SPRING FRAMEWORK y MYSQL.
Tú tienes acceso al código fuente de esta aplicación, después del video tienes el enlace.



SEPARATA DE JAVA CLIENTE SERVIDOR

JAVA CLIENTE SERVIDOR - JDBC
PRESENTACIÓN

Pretender hacer la programación una actividad muy rentable, implica elegir bien el lenguaje, pienso que Java es una excelente elección.

Java lo utilizan las empresas mas grandes del mundo para desarrollar el core de sus negocios, por ejemplo, las empresas de telecomunicación, los bancos, empresas industriales, etc.

En este manual encontrarás información importante para poder programar bases de datos con JDBC. Este es el material que utilizo en el curso que imparto en SistemasUNI.

MANUAL
CÓDIGO FUENTE

En esta sección te presento un video de una aplicación CLIENTE-SERVIDOR.

Tú tienes acceso al código fuente de esta aplicación, después del video esta el enlace.




EUREKA-WEB-MYSQL-SPRING

SQL SERVER ORACLE MYSQL JAVA JDBC MVC DAO PATRONES ANDROID SERVLETS JSP WEB JAVASCRIPT JSON
DESCRIPCIÓN
En este video te explico cómo ejecutar el código fuente de una aplicación Java Web, utilizando HTML, CSS, JavaScript, AJAX y JSON, base de datos MYSQL y Spring Framework.
IMÁGENES DEL APLICATIVO
A continuación te muestro algunas imágenes del aplicativo.
CÓMO OBTENER EL CÓDIGO FUENTE
ABONO O TRANSFERENCIA A CUENTA BANCARIA
Si estás interesado en el código fuente, el costo es de 200.0 Soles.
El abono lo puedes hacer en una de las siguientes cuentas:
  • BCP: 191-10378619-0-52
Luego envías un correo a egcc.fuente@gmail.com con los siguientes datos:
  1. Foto del voucher.
  2. Identificador del código fuente: EUREKA-WEB-MYSQL-SPRING
Luego te respondere en el mismo correo, indicando el enlace para que descargues el código fuente.
PAGO POR PAYPAL
Si estás interesado en el código fuente, su costo es de 70 Dólares.
Debes tener cuenta en PayPal.
Después de realizar el pago, tienes acceso al código fuente.


SEMINARIO:
ACCESO A BASE DE DATOS CON JDBC

SEMINARIO: ACCESO A BASE DE DATOS CON JDBC - GUSTAVO CORONEL
CONTEXTO
Cuando desarrollas una aplicación, en algún momento vas a requerir acceder a una capa de persistencia, como por ejemplo bases de datos.
En esta oportunidad aprenderás a acceder a bases de datos relacionales usando Java JDBC.
El API JDBC de Java te permite realizar todo tipo de operaciones en la base de datos, como por ejemplo, ejecutar consultas, manejar transacciones y ejecutar procedimientos almacenados.
Si quieres asistir al taller online visita el siguiente enlace: Acceso al Taller Online
PRESENTACIÓN
Si quieres asistir al taller online visita el siguiente enlace: Acceso al Taller Online
A continuación tienes la presentación del seminario.
VIDEO DEL SEMINARIO
Si quieres asistir al taller online visita el siguiente enlace: Acceso al Taller Online
A continuación tienes el video del seminario.
CODIGO FUENTE
En esta sección te presento un video de una aplicación CLIENTE-SERVIDOR desarrollada con Java y Oracle.
Tú tienes acceso al código fuente de esta aplicación, después del video tienes el enlace.



EUREKA-WEB-ORACLE-JDBC

CÓDIGO FUENTE DE UNA APLICACIÓN JAVA WEB CON MVC
DESCRIPCIÓN
En esta oportunidad te presento un video donde te explico cómo ejecutar el código fuente de una aplicación Java Web, utilizando HTML, CSS, JavaScript, AJAX y JSON, en la capa de persistencia se utiliza JDBC y base de datos Oracle XE 11g.
CÓMO OBTENER EL CÓDIGO FUENTE
ABONO O TRANSFERENCIA A CUENTA BANCARIA
Si estas interesado en el código fuente, el costo es de 100.0 Soles.
El abono lo puedes hacer en una de las siguientes cuentas:
  • BCP: 191-10378619-0-52
Luego envías un correo a egcc.fuente@gmail.com con los siguientes datos:
  1. Foto del voucher.
  2. Identificador del código fuente: EUREKA-WEB-ORACLE-JDBC
Luego te respondere en el mismo correo, indicando el enlace para que descargues el código fuente.
PAGO POR PAYPAL
Si estás interesado en el código fuente, su costo es de 35 Dólares.
Debes tener cuenta en PayPal.
Después de realizar el pago, tienes acceso al código fuente.


PROGRAMANDO PENSANDO EN SERVICIOS - Parte 2

PROGRAMANDO PENSANDO EN SERVICIOS – EJEMPLO 1
EJEMPLO 1
Este primer ejemplo tiene como finalidad entender el concepto de programación en capas y programar pensando en servicios.
REQUERIMIENTO
Crear un programa para calcular la suma y el producto de dos números.
ANÁLISIS
Se necesita un componente con dos servicios:
  1. Calcular la suma de dos números.
  2. Calcular el producto de dos números.
IMPLEMENTACIÓN
En el próximo articulo estare desarrollando el patrón DTO.


CODIGO FUENTE
En esta sección te presento un video que una aplicación CLIENTE-SERVIDOR.
Tú tienes acceso al código fuente de esta aplicación, después del video tienes el enlace.



PROGRAMANDO PENSANDO EN SERVICIOS – Parte 1

PROGRAMANDO PENSANDO EN SERVICIOS – PARTE 1
PENSANDO EN SERVICIOS
Como docente de programación, una de las preguntas que los estudiantes realizan con mucha frecuencia es:
¿Cómo empiezo el proyecto?
La mayoría que se inicia en programación, como es lógico, no tiene claro cómo debe iniciar su proyecto, esto se complica aún más cuando su primer profesor le indica que realice una ventana, y para programarla debe hacer doble click en el botón y empiece a programar.
Pienso, que una parte del problema está en que lo primero que se enseña a los futuros programadores es poner el código de la lógica de un requerimiento en el evento click de un botón, por lo tanto, creen que es así como se debe programar todas las ventanas que requiere su aplicación.
Este estilo de programación no creo que sea el más adecuado, tiene muchos problemas, como por ejemplo:
  1. Repites bloques de código en varias partes de tu aplicación, esto dificulta su mantenimiento.
  2. El mantenimiento de la aplicación rápidamente se vuelve complicado, en muy poco tiempo, tu aplicación se parece más al juego de Jenga.
  3. Escalar tu aplicación, por ejemplo, de Cliente-Servidor a Web se hace prácticamente imposible.
  4. Si cuando estas a la mitad de un proyecto, te cambian de motor de base de datos, actualizar el código se hace una tarea muy complicada.
Voy hacer referencia a Danny Thorpe:
Programar sin una arquitectura en mente es como explorar una gruta sólo con una linterna: no sabes dónde estás, dónde has estado ni a dónde vas.
Pienso que primero debemos pensar en una arquitectura, por ejemplo, pensar en dos capas, una capa de servicios (service) donde se implemente la solución del problema a resolver, y una capa para la interfaz de usuario (view).
Pensar en una capa de servicios para implementar la solución de un requerimiento o problema da muchas ventajas, entre las cuales tenemos:
  1. Permite concentrarnos en la solución.
  2. Facilita las pruebas, algo que no debes dejar de hacer.
  3. Tu solución puedes escalarla fácilmente.
  4. El mantenimiento del código es más fácil.
En el siguiente artículo estaré desarrollando un ejemplo ilustrativo.


CODIGO FUENTE
En esta sección te presento un video que una aplicación CLIENTE-SERVIDOR.
Tú tienes acceso al código fuente de esta aplicación, después del video tienes el enlace.



EUREKA-CS-ORACLE-JDBC

SQL SERVER ORACLE MYSQL JAVA JAVAEE JDBC MVC DAO PATRONES ANDROID SERVLETS JSP WEB
DESCRIPCIÓN
En esta oportunidad te presento un video donde te explico cómo ejecutar el código fuente de una aplicación Cliente-Servidor desarrollada con Java, JDBC y base de datos Oracle XE 11g.
CÓMO OBTENER EL CÓDIGO FUENTE
ABONO O TRANSFERENCIA A CUENTA BANCARIA
Si estás interesado en el código fuente, su costo es de 100.0 Soles.
El abono lo puedes hacer en una de las siguientes cuentas:
  • BCP: 191-10378619-0-52
Luego envías un correo a egcc.fuente@gmail.com con los siguientes datos:
  1. Foto del voucher.
  2. Identificador del código fuente: EUREKA-CS-ORACLE-JDBC
Luego te respondere en el mismo correo, indicando el enlace para que descargues el código fuente.
PAGO POR PAYPAL
Si estás interesado en el código fuente, su costo es de 35 Dólares.
Debes tener cuenta en PayPal.
Después de realizar el pago, tienes acceso al código fuente.