You are on page 1of 28

Escuela Profesional de Ingeniera de Sistemas

Asignatura:

Programacin Avanzada
2016 - I

Tutor Virtual:
Ing. Mg. Omar Antonio Snchez Guevara
sguevarao@crece.uss.edu.pe
Introduccin al Curso
Propsito del Curso

Su objeto de estudio es el diseo y desarrollo de


aplicaciones de escritorio con acceso a base de
dato relacionales.

Basado en una arquitectura en niveles, haciendo


uso de un lenguaje orientado a objetos como Java
y como administrador de base de datos
relacionales como PostgreSQL
Fundamentos de Programacin

Estructura de Datos

Programacin Orientada a Objetos

Programacin Avanzada

Desarrollo de Aplicaciones
Semana 1:
Arquitectura y Plataforma
de una aplicacin de
empresa
La Empresa Actual
Una empresa es una organizacin econmica y las
aplicaciones de empresa son aquellas aplicaciones
de software que facilitan diversas actividades
dentro de una empresa.
Crear aplicaciones para una empresa siempre ha
sido un reto.
Complejidad de procesos.
Diversidad de Aplicaciones
Arquitectura de 2 niveles
Arquitectura de tres niveles
Arquitectura N niveles
Interfaz de usuario.- Interaccin del usuario con la aplicacin.
Puede ser un navegador Web ejecutado mediante unos
cortafuegos, una aplicacin de escritorio o incluso un dispositivo
inalmbrico.
Lgica de presentacin.- Define lo que muestra la interfaz de
usuario y como gestiona las demandas del usuario. Puede que
sea necesario contar con versiones de la lgica de presentacin
ligeramente diferentes para satisfacer al cliente.
Lgica de empresa.- Las reglas de empresa de la aplicacin, a
menudo a travs de la interaccin con los datos de la aplicacin.
Servicios de infraestructura.- La funcionalidad adicional
requerida por los componentes de la aplicacin, tales como
mensajera y apoyo transaccional.
Capa de datos.- Donde residen los datos de la empresa.
Plataforma de Desarrollo
Lenguaje de Programacin Orientado a Objetos
Java JDK, JRE
Sistema Administrador de Base de Datos
PostgreSQL
Conectividad
JDBC.- Java Data Base Connectivity
Reportes
JasperReports Library es de cdigo abierto ms popular
del mundo Java.
iReportDesigner es un diseador visual de informes para
JasperReports.
Semana 2:
Persistencia de Datos
Servicio de BD en PostgreSQL
Ofrece un servicio de base de datos robusta, en el
almacenamiento de los datos, su fcil interaccin con
los lenguajes permite una utilizacin completa.

JDBC
JDBC (Java Database Connectivity), es el API para la
conexin a bases de datos desde el lenguaje Java, lo
que nos permite ejecutar operaciones sobre bases
de datos, realizando estas operaciones con lenguaje
SQL de la base de datos.
JPA
Java Persistence API es el standard de Java
encargado de automatizar dentro de lo posible la
persistencia de nuestros objetos en base de datos.
Combina ideas y conceptos de los principales
frameworks de persistencia, como Hibernate,
Toplink y JDO.
El mapeo objeto-relacional. Es la relacin entre
entidades Java y tablas de la base de datos se
realiza mediante anotaciones en las propias clases
de entidad.
Mapeo Objeto - Relacional en Java
Tcnica en la que se las tablas, columnas y
relaciones de una base de datos se convierten a
clases, atributos y tipos de datos de un lenguaje de
programacin orientado a objetos, creando una
base de datos virtual.
Permiten trabajar con objetos, en vez de tablas y
columnas, donde un registro en una tabla se
representa por una instancia de la entidad.
Este mapeo permite generar automticamente el
cdigo SQL necesario para consultar y actualizar la
base de datos.
Semana 3:
Consultas Simples y
Compuestas para Acceder
a Datos
Acceso a Datos
Representacin en Java de las clases
de acceso a base de datos
Clase java.sql.DriverManager
Static Connection getConnection(String url,
String user, String password)
Crea una conexin a la base de datos
Clase java.sql.Connnection
Statement createStatement()
Crea un objeto para ejecutar sentencias SQL.
void close()
Cierra la conexin a la BD
ResulSet executeQuery(String sql)
Ejecuta consulta SQL y retorna resultado.
Clase java.sql.ResultSet
ResultSetMetaData getMetaData()
Obtiene metadatos del resultado
Otros:
Int executeUpdate(Sring sql)
Ejecuta INSERT, UPDATE o DELETE. Tambin ejecuta DDL (Ejm.
CREATE TABLE). Retorna nmero de registros afectados o -1 para
sentencias que no cuentan actualizacin.
boolean execute(String sql)
Ejecuta sentencia SQL. Retorna true si obtiene resultado
int getUpdateCount()
Retorna nmero de registros afectados
ResultSet getResult()
Retorna el resultado de una consulta o null de acuerdo a si ltima
sentencia fue Consulta.
protected Connection Conectar()
{
String strHost;
String strPort;
String strDatabase;
String strUser;
String strPassword;
String strCadenaConexion;
try {
strHost = "localhost";
strPort = "5432";
strDatabase = "PEDIDOS"; //Nombre de Base de Datos
strUser = "administrador";
strPassword = "administrador";
strCadenaConexion = "jdbc:postgresql://" + strHost + ":" + strPort + "/" + strDatabase;
Class.forName("org.postgresql.Driver");
return DriverManager.getConnection(strCadenaConexion,strUser,strPassword);
}catch (ClassNotFoundException | SQLException ex) {
System.out.println(ex.getMessage());
return null;
}
}
Protected ResultSet Retornar_Datos(String Comando_SQL)
{
Connection conect;
Statement state; //Interprete de Setencias SQL
ResultSet resultado; //Retornador de Resultados
try {
conect = Conectar(); //Abrir Conexion
state = conect.createStatement();
resultado = state.executeQuery(Comando_SQL);
conect.close(); //Cerrar Conexion
return resultado;
} catch (SQLException ex) {
System.out.println("Error...." + ex.toString());
return null;
}
}
protected boolean Ejecuta_Sql(String Comando_SQL)
{ //Comando SQL (Insert, Update, Delete)
Connection conect;
Statement state; //Interprete de Setencias SQL
try {
conect = Conectar(); //Abrir Conexion
state = conect.createStatement();
state.executeUpdate(Comando_SQL);
//Ejecuta el comando SQL(Insert, Update, Delete)

conect.close(); //Cerrar Conexion


state.close();
return true;
} catch (SQLException ex) {
System.out.println("Error...." + ex.toString());
return false;
}
}
protected boolean Ejecuta_Transaccion_Sql(List ComandoTransaccion_SQL)
{
Connection conect;
Statement state; //Interprete de Sentencias SQL
conect = Conectar(); //Abrir Conexin
try {
conect.setAutoCommit(false); //Deshabilita Ejecucin Automtica de Sentencias SQL
state=conect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
for (int i = 0; i<ComandoTransaccion_SQL.size(); i++)
{
state.executeUpdate( (String)ComandoTransaccion_SQL.get(i) );
}
conect.commit(); //Compromete las sentencias SQL
state.close();
conect.close(); //Cerrar Conexion
return true;
}catch (SQLException ex) {
System.out.println("Error...." + ex.toString());
try {
conect.rollback(); //Anula las sentencias SQL
conect.close();
System.out.println("Transaccin Fallida! No Hay Registro en BD");
return false;
} catch (SQLException se) {
System.out.println("Error...." + se.toString()); return false;
}
}
}
protected boolean Ejecuta_Procedimiento(String Procedimiento_Sql)
{
Connection conect;
CallableStatement callstate; //Interprete Procedimientos SQL
boolean rpta_procedimiento; //Resultado Procedimiento(Insert,Update,Delete)
try {
conect = Conectar(); //Abrir Conexion
callstate = conect.prepareCall(Procedimiento_Sql);
callstate.registerOutParameter(1, Types.BOOLEAN);
callstate.execute();
rpta_procedimiento = callstate.getBoolean(1);
conect.close();
callstate.close();
return rpta_procedimiento;
} catch (SQLException ex) {
return false;
}
}
protected boolean Ejecuta_Transaccion_Procedimiento(List ProcedimientoTransaccion_Sql){
Connection conect;
CallableStatement callstate; //Interprete de Procedimientos SQL
conect = Conectar(); //Abrir Conexion
try {
conect.setAutoCommit(false); //Deshabilita Ejecucin Automtica de Procedimientos SQL
for (int i = 0; i < ProcedimientoTransaccion_Sql.size(); i++) {
callstate = conect.prepareCall((String) ProcedimientoTransaccion_Sql.get(i));
callstate.registerOutParameter(1, Types.BOOLEAN);
callstate.execute();
if (!callstate.getBoolean(1)) {
conect.rollback(); //Anula las procedimientos SQL
conect.close();
return false; }
}
conect.commit(); //Compromete los Procedimientos SQL
conect.close(); return true;
} catch (SQLException ex) {
System.out.println("Error...." + ex.toString());
try {
conect.rollback(); conect.close();
System.out.println("Transaccion Fallada... No ay Registro en la Base de Datos");
return false;
} catch (SQLException se) {
System.out.println("Error...." + se.toString()); return false;
}
}
}

You might also like