You are on page 1of 44

Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

1. Introducción.

Spring

Spring JDBC Security Spring MVC Spring JSP


DI AOP
Arquitectura

PostgreSql

Definición Datos Manipulación Datos

Base Datos

Arquitectura

Modelo MVC

Conceptos Arquitectura web

Figura. Organización del Curso

El curso esta dividido en 4 bloques de aprendizaje, cada bloque se centra en


una área general de conocimiento en el desarrollo de aplicaciones web con
Spring y PostgreSql.

El primer bloque, expone los principales conceptos que se deben manejar


en los desarrollos de aplicaciones web.

El segundo bloque, expone el modelo MVC que es la base sobre la cual se


han diseñado los diferentes patrones y framework’s de trabajo.

El tercer bloque, comprende el aprendizaje de PostgreSql, desde la


arquitectura hasta la creación de objetos.

El cuarto bloque, expone los fundamentos del Framework Spring, la


Inyección de Dependencia (DI) y la Programación Orientada a Aspectos
(AOP), los módulos que comprenden la arquitectura de Spring, la
persistencia de datos con JDBC, seguridad de aplicaciones y el modelo vista
de Spring.

1
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

2. Conceptos base.

2.1. Aplicaciones web empresariales.

Figura. Aplicaciones web.

Los desarrolladores de hoy reconocen cada vez más la necesidad de crear


aplicaciones portátiles que aprovechen la velocidad, seguridad y
confiabilidad de la tecnología del lado del servidor.

En el mundo de la tecnología de la información, las aplicaciones


empresariales deben estar diseñadas y construidas por cada vez menos
dinero, con mayor velocidad y con menos recursos.

Algunas características comunes de las aplicaciones web empresariales,


son:

ƒ Escalables
o Deberían poder soportar más carga de trabajo sin necesidad de
modificar el software
ƒ Seguras
o No todos los usuarios pueden acceder a la misma funcionalidad
ƒ Manejo de interfaz
o De entorno de ventanas
o Web: en intranet e internet
ƒ Separación clara entre vista y modelo
ƒ Acceso a bases de datos (BD)
o BD relacionales
o XML
o Otros archivos
ƒ Transaccionales
ƒ Arquitecturas multi-capa

2
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

2.2. Visión general de la plataforma J2SE.

Figura. Plataforma Java SE

Las tecnologías Java y de interfaces de programación de aplicaciones (API)


son la base de la plataforma Java Standard Edition (Java SE).
Ellas proporcionan todo lo necesario para la creación de aplicaciones de
servidor, aplicaciones de escritorio, y applets, que se ejecutan en casi todos
los sistemas operativos, incluyendo Linux, Macintosh, Solaris y Windows.

Java Runtime Environment (JRE)


Establece las bibliotecas, la Máquina Virtual de Java, y otros componentes
para ejecutar applets y aplicaciones escritas en el lenguaje de programación
Java.
Además, dos puntos clave para el desarrollo:
ƒ Java Plug-in, que permite que los applets se ejecutan en los browsers
populares
ƒ Java Web Start, que despliega aplicaciones independientes a través
de una red.
También es la base de las tecnologías en el Java 2 Platform, Enterprise
Edition (J2EE)
El JRE no contiene herramientas y utilidades, tales como compiladores y
depuradores para el desarrollo de applets y aplicaciones.

Java Development Kit (JDK)


El JDK es un superconjunto de la JRE, y contiene todo lo que esta en el JRE

3
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

y adiciona herramientas como los compiladores y depuradores necesarios


para el desarrollo de applets y aplicaciones.

Ejercicio 2.2

Instalación de Java

La web de java es http://java.sun.com/

1. ¿Que se requiere para correr una aplicación java?


ƒ Jdk
ƒ Jre
ƒ j2se
ƒ j2ee

2. Descargar y ejecutar el archivo “ jdk-6u12-windows-i586-p.exe” desde:

http://java.sun.com/javase/downloads/index.jsp

Ir a la carpeta de jdk 6.0:


ƒ ver las subcarpetas y archivos
ƒ relacionarlos con los componentes de la figura “Plataforma
Java SE”

4
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

2.3. Arquitectura de una aplicación web.

Figura. Arquitectura de tres capas.

La arquitectura de las aplicaciones web suelen presentar un esquema de


tres niveles (ver la Figura).

ƒ La primera capa consiste en la capa de presentación que incluye no


sólo el navegador, sino también el servidor web que es el responsable
de dar a los datos un formato adecuado.
ƒ La segunda capa está referido habitualmente a algún tipo de
programa o script.
ƒ La tercera capa proporciona al segundo los datos necesarios para su
ejecución. Estos datos pueden ser cualquier fuente de información
como una base de datos o documentos XML.

5
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

2.4. El Modelo MVC.

Figura. Modelo MVC

El patrón Modelo-Vista-Controlador se originó en la comunidad Smalltalk


para implementar interfaces de usuario en los que las responsabilidades
están bien distribuidas entre distintas partes (componentes) del diseño.

El patrón MVC ofrece la posibilidad de construir aplicaciones web que sean


flexibles y de acoplamiento débil.

Model – Es la lógica de negocio.


El modelo representa los datos y las normas que rigen el acceso y la
actualización de los datos. Un modelo a menudo sirve como una
aproximación de un proceso del mundo real.

View – Es la presentación
La vista muestra el contenido de un modelo. Especifica la forma en que el
modelo de datos debe ser presentado.
Si el modelo cambia la información, la presentación debe actualizarse según
sea necesario.

Controller – Es la gestión de eventos de usuario.


El controlador traduce la interacción del usuario en las acciones que llevará
a cabo el modelo.

6
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

En un stand-alone (GUI ), las interacciones de los usuarios podría darse a


través de clic sobre los botones o selecciones de menú, mientras que en
una aplicaciones web, aparecen como peticiones http: GET y POST.

Dependiendo del contexto, un controlador puede seleccionar una nueva


vista como destino- por ejemplo, una página web de resultados - a
presentar al usuario.

Figura. Código ejemplo de MVC.

7
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

Figura. Ejemplo web de MVC.

8
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

2.5. Tecnologías en capas (patrones de desarrollo.

J2EE Patterns

Figura. J2EE Patterns.

9
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

Patrón DAO.

El DAO implementa mecanismos de acceso a través de un data source.


El origen de datos puede ser:
ƒ un almacenamiento persistente como un RDBMS
ƒ un repositorio como una base de datos LDAP
ƒ un servicio de Internet accesible a través de CORBA ORB
Interamericano de Protocolo (IIOP)
ƒ sockets de bajo nivel.

El componente de negocio en el patrón DAO utiliza una interfaz más simple


expuesta por el DAO para sus clientes.
El DAO oculta completamente la implementación del data source a las
clases cliente.
Debido a que la interfaz expuesta por el DAO no cambia cuando cambiamos
de fuentes de datos, este modelo permite adaptarse a diferentes sistemas
de almacenamiento sin que ello afecte al resto de la aplicación.

Esencialmente, el DAO actúa como un adaptador entre el componente y la


fuente de datos.

Figura. Patrón DAO.

10
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

Ejercicio 2.5.

1. Realizar el diagrama de clase para una aplicación web MVC.

2. Realizar el diagrama de secuencia para una aplicación web MVC.

Bibliografía y Links.

Patrones J2EE
http://java.sun.com/blueprints/corej2eepatterns/Patterns/index.html
Servidores J2EE
http://java.sun.com/j2ee/compatibility.html
Modelo MVC
http://blogs.sun.com/JavaFundamentals/entry/java_se_application_d
esign_with

11
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

3. Creación del ambiente de desarrollo.

3.1. Servidor de Aplicaciones.

Figura. Arquitectura de un Application Server.

La arquitectura de un servidor de aplicaciones incluye una serie de


subsistemas:

• Servidor HTTP (también denominado servidor Web o servidor de


páginas). Un ejemplo, el servidor Apache.
• Contenedor de aplicaciones o contenedor Servlet/JSP. Un ejemplo,
Tomcat (que incluye el servicio anterior sobre páginas)
• Contenedor Enterprise Java Beans, que contiene aplicativos Java
de interacción con bases de datos o sistemas empresariales.

12
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

Figura. Application’s Server.

GlassFish

ƒ Es un servidor de aplicaciones Java EE


o Implementa las tecnologías definidas en la plataforma Java EE
y permite ejecutar aplicaciones que siguen esta especificación.
ƒ Es gratuito y de código libre, se distribuye bajo la licencia CDDL y la
GNU GPL.
ƒ Tiene como base al Sun Java System Application Server.
ƒ Contiene el módulo de persistencia TopLink.

3.2. Instalación de Netbean.

Crear las carpetas:


E:\DESA\BBDD esta carpeta contendrá la base de datos
E:\DESA\IDE esta carpeta contendrá la herramienta desarrollo
E:\DESA\SAPP esta carpeta contendrá el servidor de aplicaciones.
E:\DESA\SPRING esta carpeta contendrá el plugin Spring

Descargar y ejecutar el archivo “netbeans-6.5-ml-java-windows.exe” desde


http://www.netbeans.org/downloads/index.html

Considerar lo siguiente durante la instalación:

Componente Destino de instalacion Parametros


Username: admin
Password: adminadmin
GlassFish V2 UR2 E:\DESA\SAPP\glassfish-v2ur2 Http Port: 8080
Https Port: 8181
Admin Port: 4848
GlassFish v3 Prelude E:\DESA\SAPP\glassfish-v3-prelude

13
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

Figura. Descarga de Netbean.

Figura. Configuración de la ruta destino de la instalación.

14
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

Figura. Resumen de configuración.

3.3. Instalación de Spring 2.0

La web de Spring es http://www.springsource.org/


Este plugin contiene la integración de Netbean con el Framework Spring
2.0.
Descargar y ejecutar el archivo “spring-support-plugin-1.1.nbm.zip” desde:
http://sourceforge.net/project/showfiles.php?group_id=174340

Considerar lo siguiente:

Componente Destino de archivo


spring-support-plugin-1.1.nbm.zip E:\DESA\SPRING

15
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

Figura. Descarga del Plugin de Spring.

3.4. Instalación de PostgreSql 8.3

La web de PostgreSql es http://www.postgresql.org.pe/


Descargar y ejecutar el archivo “postgresql-8.3.6-1-windows.exe” desde:
http://www.enterprisedb.com/products/pgdownload.do#windows
Consideraciones durante la instalación.

Componente Destino de instalacion Parametros


Username: admin
Password: adminadmin
PostgreSql - SW E:\DESA\BBDD\PostgreSQL\8.3 Http Port: 8080
Https Port: 8181
Admin Port: 4848
user: postgres
pass: adminadmin
puerto: 5432
PostgreSql - Data E:\DESA\BBDD\PostgreSQL\8.3\data locale cluster: default locale

Habilitar puerto 5432 en Windows.


En caso se encuentre activo el servicio Firewall de windows realizar lo
siguiente para habilitar el puerto (para que se pueda conectar a PostgreSql
desde fuera).
Ir a:
> Configuración>Panel de Control>Tareas de Red > Configuración de
Firewall de Windows >Excepciones > Agregar Puerto
Nombre: postgresql
Número de Puerto: 5432
Marcar TCP
>Aceptar

16
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

Figura. Habilitar puerto 5432 en Windows.

17
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

Figura. Directorio destino del SW y Data.

Figura. Password de cuenta postgres.

18
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

Figura. Habilitar puerto 5432.

Figura. Configuración local.

19
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

Figura. Avance de la instalación.

Figura. Fin de instalación.

20
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

Creación de usuario en XP
Se debe crear la cuenta “postgres” en la configuración de usuarios de
windows.
>Configuración>Panel de Control>Cuentas de usuarios>Agregar
User: postgres
Pass: adminadmin

Figura. Creación de usuario postgres

postgresql.conf
En el archivo E:\DESA\BBDD\PostgreSQL\8.3\data\postgresql.conf añadir:
listen_addresses = '127.0.0.1'

Desinstalación.

Eliminar el software.
------------------------------
>Configuracion>Panel de Control>Agregar o Quitar programas>Elegir
PostgreSql> Desintalar

Eliminar el usuario.
------------------------------
>inicio>net user postgres /del

Eliminar servicio PostgreSql


------------------------------
> eliminar el servicio PostgreSql en el regedit

21
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

>en HKEY_LOCAL_MACHINE>SYSTEM>CurrentControlSet>

3.5. Instalación de SQL Manager for PostgreSQL

Ejecutar el archivo “PgManagerLiteSetup.exe”.


Consideraciones durante la instalación.

Componente Destino de archivo


PgManagerLiteSetup.exe E:\DESA\IDE

Figura. Registro de base de datos.

Bibliografía y Links.

Servidores compatibles con J2EE


http://java.sun.com/j2ee/compatibility.html

Proyecto Glassfish
https://glassfish.dev.java.net/

22
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

4. Fundamentos de PostgreSQL

Se inicia en la Universidad de
Berkeley en 1977 bajo el nombre
Ingres como un ejercicio de
aplicación de las teorías de las
RDBMS liderado por Michael
Stonebraker.

En 1986, cambia su nombre a


Postgres con el objetivo de aplicar
los conceptos de Objetos
Relacionales.

PostgreSQL es un “relational database management system (RDBMS)”.

Características:

ƒ Atomicity (Indivisible) es la propiedad que asegura que la operación


se ha realizado o no, y por lo tanto ante un fallo del sistema no
puede quedar a medias.
ƒ Consistency es la propiedad que asegura que sólo se empieza
aquello que se puede acabar. Por lo tanto se ejecutan aquellas
operaciones que no van a romper la reglas y directrices de integridad
de la base de datos.
ƒ Isolation (Aislamiento) es la propiedad que asegura que una
operación no puede afectar a otras. Esto asegura que dos
transacciones sobre la misma información nunca generará ningún
tipo de error.
ƒ Durability es la propiedad que asegura que una vez realizada la
operación, ésta persistirá y no se podrá deshacer aunque falle el
sistema.

Corre en casi todos los principales sistemas operativos : Linux, Unix, BSDs,
Mac OS, Beos, Windows, etc.

23
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

Limite Valor
Máximo de base de datos : ILIMITADO
Máximo de tamaño de tabla : 32TB
Máximo de tamaño de registro : 1.6TB
Máximo de tamaño de campo : 1GB
Máximo de registros por Tabla : ILIMITADO
Máximo de campos por tabla : 250 a 1600 (depende de los tipos usados)

Máximo de índices por tabla : ILIMITADO


aproximadamente 10
Número de lenguajes en que programa funciones :
(pl/pgsql, pl/java, pl/perl, pl/python, tcl, pl/php, C, C++, Ruby, etc.)
Métodos de almacenamiento de índices : 4 (B-tree, Rtree, Hash y GisT)

4.1. Conceptos de la arquitectura

PostgreSql utiliza un simple modelo cliente/servidor de "proceso por


usuario".
Una session PostgreSql consiste en los siguientes procesos Unix(programas)
cooperando:

ƒ Un proceso demonio supervisor (postmaster)


ƒ la aplicación interface del usuario (frontend), por ejemplo, un
programa psql.
ƒ uno o mas procesos servidores de acceso a la base de
datos(backend), que es el proceso postgres mismo.

4.2. Creación de base de datos.

El motor de Postgres debe estar corriendo para que cualquiera de los dos
métodos siguientes funcione, y el usuario que da el comando debe ser el
super-usuario de PostgreSql, o haber obtenido privilegio por parte del
super-usuario para crear bases de datos.

Lenguaje psql

Las bases de datos se crean dentro de PostgreSql con el comando


create <nombre-base-de-datos>

Ejemplo: Para crear una base de datos dentro de psql escriba:

CREATE DATABASE mibd;

Línea de comandos.

createdb es un utilitario hecho para suministrar la misma función fuera de


PostgreSql a partir de la línea de comandos.

Ejemplo: Para crear una base de datos llamada "mibd" a partir de la línea
de comandos, escriba:

24
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

> createdb mibd

Si no tiene el privilegio necesario para crear una base de datos, verá el


siguiente mensaje:

% createdb mibd
WARN:user "your username" is not allowed to create/destroy databases
createdb: database creation failed on mibd.

# Limite de Base de Datos:

PostgreSql le permite crear cualquier número de bases de datos en un


servidor y usted será automáticamente el administrador de la base de datos
que acaba de crear.

Restricción de nombre de BD.

Los nombres de las bases de datos deben comenzar por una letra y están
limitados a una longitud total de 32 caracteres.

4.3. Definición de Datos.

Tipos de datos numéricos.

Name Storage Size Description Range


smallint 2 bytes small-range integer -32768 to +32767
integer 4 bytes usual choice for integer -2147483648 to +2147483647
-9223372036854775808 to
bigint 8 bytes large-range integer 9223372036854775807
decimal variable user-specified precision, exact no limit
numeric variable user-specified precision, exact no limit
real 4 bytes variable-precision, inexact 6 decimal digits precision
double precision 8 bytes variable-precision, inexact 15 decimal digits precision
serial 4 bytes autoincrementing integer 1 to 2147483647
bigserial 8 bytes large autoincrementing integer 1 to 9223372036854775807

El tipo serial es un tipo que se construye desde otro tipo de dato.


CREATE TABLE tablename (colname SERIAL);
Es equivalente a:

CREATE SEQUENCE tablename_colname_seq;


CREATE TABLE tablename
(colname INT4 DEFAULT nextval('tablename_colname_seq');
CREATE UNIQUE INDEX tablename_colname_key on tablename (colname);

25
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

Tipos de datos carácter.

Name Description
character varying( n ), varchar(n ) variable-length with limit
character(n ), char(n ) fixed-length, blank padded
text variable unlimited length

Tipos Carácter Especial.

Name Storage Size Description


"char" 1 byte single-byte internal type
name 64 bytes internal type for object names

Tipos de datos fecha.

Name Size Description Low Value High Value


timestamp [ (p ) ] [ without time zone ] 8 bytes both date and time 4713 BC 5874897 AD
timestamp [ (p ) ] with time zone 8 bytes both date and time, with time zone 4713 BC 5874897 AD
interval [ ( p ) ] 12 bytes time intervals -178000000 years 178000000 years
date 4 bytes dates only 4713 BC 5874897 AD
time [ ( p ) ] [ without time zone ] 8 bytes times of day only 00:00:00 24:00:00
time [ ( p ) ] with time zone 12 bytes times of day only, with time zone 00:00:00+1459 24:00:00-1459

4.4. Creación de Esquemas.

Una base de datos contiene uno o mas “schemas”, cada uno de ellos
contiene diversos objetos de base de datos, como por ejemplo: tablas,
funciones, operadores, etc.

De ese modo, un mismo nombre de objeto puede ser usado en diferentes


esquemas sin causar conflicto.

En una base de datos, los esquemas no estan separados rigidamente, por lo


que un usuario puede acceder a los objetos de otros esquemas de la base
de datos si esta conectado a el y cuenta con los privilegios de acceso.

Algunas razones para utilizar esquemas:


ƒ Permite que muchos usuarios usen una base de datos sin interferir
con otros.
ƒ Permite organizar los objetos de la base de datos agrupandolos de
manera logia para hacerlo mas manejable.
ƒ Las aplicaciones puede usar esquemas separados y no preocuparse
por el nombre de sus objetos.

Se crean con el comando:

26
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

CREATE SCHEMA myschema;

4.5. Creación de tablas.

Las tablas se crean dentro de PostgreSql con el comando.

CREATE TABLE -- Crea una nueva tabla


Synopsis
CREATE [ TEMPORARY | TEMP ] TABLE table (
column type
[ NULL | NOT NULL ] [ UNIQUE ] [ DEFAULT value ]
[column_constraint_clause | PRIMARY KEY } [ ... ] ]
[, ... ]
[, PRIMARY KEY ( column [, ...] ) ]
[, CHECK ( condition ) ]
[, table_constraint_clause ]
) [ INHERITS ( inherited_table [, ...] ) ]

TEMPORARY
Se crea la tabla sólo para esta sesión, y es eliminada automáticamente con
el fin de la sesión. Las tablas permanentes existentes con el mismo nombre
no son visibles mientras la tabla temporal existe.

table
El nombre de una nueva clase o tabla a crear.

column
El nombre de un campo.

type
El tipo del campo. Puede incluir especificadores de array.

DEFAULT value
Un valor por defecto para el campo.

column_constraint_clause
La cláusula opcional de restricciones (constraint) especifica una lista de
restricciones de integridad o comprueba que las nuevas inserciones o
actualizaciones deben satisfacer para que la inserción o la actualización
tenga éxito. Cada restricción debe evaluarse a una expresión booleana.

table_constraint_clause

La cláusula opcional CONSTRAINT especifica una lista de restricciones de


integridad que las nuevas inserciones o las actualizaciones deberán
satisfacer para que una sentencia insert o update tenga éxito. Cada
restricción debe ser evaluada a una expresión booleana. Se pueden
referenciar múltiples campos con una única restricción. Sólo se puede
definir una única cláusula PRIMARY KEY por tabla; PRIMARY KEY column

27
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

(una restricción de tabla) and PRIMARY KEY (una restricción de campo) son
mutuamente excluyentes.

INHERITS inherited_table
La cláusula opcional INHERITS especifica una colección de nombres de tabla
de las cuales esta tabla hereda todos los campos. Si algún campo heredado
aparece más de una vez, Postgres informa de un error. Postgres permite
automáticamente a la tabla creada heredar funciones de las tablas
superiores a ella en la jerarquía de herencia.

4.6. Eliminación de Tablas

DROP TABLE elimina tablas y vistas de una base de datos. Solo su


propietario (owner) puede destruir una tabla o vista. Una tabla puede ser
vaciada de sus filas, pero no destruida, usando DELETE.

Si una tabla a ser destruida tiene un índice secundario, este debe ser
removido primero. La remoción de solo un índice secundario no afecta el
contenido de la tabla subyacente.

Las tablas se eliminan con el comando:

DROP TABLE nombre [, ...]

nombre
El nombre de una tabla vista existente para eliminarla.

4.7. Manipulación de Datos

Insercion.

Para crear una nueva fila en una tabla se utiliza el comando INSERT.

Este comando requiere el nombre de la tabla y los valores por cada una de
las columnas de la tabla.

Se inserta con el comando:

INSERT INTO table (column1, column2..)VALUES (value1, value2,…);

Ejemplo:

INSERT INTO products (product_no, name, price) VALUES


(1, 'Cheese', 9.99),
(2, 'Bread', 1.99),
(3, 'Milk', 2.99);
Actualización.

28
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

LA modificación de datos en la base de datos se conoce como actualización.

Se pueden actualizar registros individuales o todas las filas en una tabla.


Cada columna puede ser actualizada por separado sin que otras columnas
sean afectadas.

UPDATE table SET column = value WHERE id_column = id ;

Eliminación.

Se utiliza el comando DELETE para remover registros de las tables.


La sintaxis es muy similar al comando UPDATE.

DELETE FROM table WHERE id_column = id ;

Seleccción.

Se utiliza el comando SELECT para extraer registros de las tablas desde la


base de datos.
La sintaxis del comando es:

SELECT column1, column2,..


FROM table
WHERE columna_x = value_x
AND columna_y = value_y
….

4.6. System Catalogs

pg_tables

Name Type References Description


schemaname name pg_namespace.nspname Name of schema containing table
tablename name pg_class.relname Name of table
tableowner name pg_authid.rolname Name of table's owner

tablespace name pg_tablespace.spcname Name of tablespace containing table


(NULL if default for database)
true if table has (or recently had) any
hasindexes boolean pg_class.relhasindex
indexes
hasrules boolean pg_class.relhasrules true if table has rules
hastriggers boolean pg_class.reltriggers true if table has triggers

pg_index

Name Type References Description


indexrelid oid pg_class.oid The OID of the pg_class entry

29
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

Name Type References Description


for this index
The OID of the pg_class entry
indrelid oid pg_class.oid
for the table this index is for
The number of columns in the
indnatts int2 index (duplicates
pg_class.relnatts)
indisunique bool If true, this is a unique index
If true, this index represents the
primary key of the table
indisprimary bool
(indisunique should always be
true when this is true)
If true, the table was last
indisclustered bool
clustered on this index
If true, the index is currently
valid for queries. False means the
index is possibly incomplete: it
must still be modified by
indisvalid bool INSERT/UPDATE operations, but
it cannot safely be used for
queries. If it is unique, the
uniqueness property is not true
either
If true, queries must not use the
index until the xmin of this
pg_index row is below their
indcheckxmin bool TransactionXmin event horizon,
because the table may contain
broken HOT chains with
incompatible rows that they can
see
If true, the index is currently
ready for inserts. False means
indisready bool
the index must be ignored by
INSERT/UPDATE operations
This is an array of indnatts
values that indicate which table
columns this index indexes. For
example a value of 1 3 would
mean that the first and the third
indkey int2vector pg_attribute.attnum table columns make up the index
key. A zero in this array indicates
that the corresponding index
attribute is an expression over
the table columns, rather than a
simple column reference
For each column in the index
key, this contains the OID of the
indclass oidvector pg_opclass.oid
operator class to use. See
pg_opclass for details
This is an array of indnatts
values that store per-column flag
indoption int2vector bits. The meaning of the bits is
defined by the index's access
method

30
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

Name Type References Description


Expression trees (in
nodeToString()
representation) for index
attributes that are not simple
indexprs text column references. This is a list
with one element for each zero
entry in indkey. NULL if all
index attributes are simple
references
Expression tree (in
nodeToString()
indpred text representation) for partial index
predicate. NULL if not a partial
index

pg_tablespace

Name Type References Description


spcname name Tablespace name

spcowner oid pg_authid.oid Owner of the tablespace, usually the user who
created it
spclocation text Location (directory path) of the tablespace
Access privileges; see GRANT and REVOKE for
spcacl aclitem[]
details

pg_locks

Name Type References Description


type of the lockable object:
relation, extend, page, tuple,
locktype text
transactionid, virtualxid,
object, userlock, or advisory
OID of the database in which the
database oid pg_database.oid object exists, or zero if the object is
a shared object, or NULL if the
object is a transaction ID
OID of the relation, or NULL if the
relation oid pg_class.oid object is not a relation or part of a
relation
Page number within the relation, or
page integer NULL if the object is not a tuple or
relation page
Tuple number within the page, or
tuple smallint
NULL if the object is not a tuple
Virtual ID of a transaction, or NULL
virtualxid text if the object is not a virtual
transaction ID
ID of a transaction, or NULL if the
transactionid xid
object is not a transaction ID
classid oid pg_class.oid OID of the system catalog

31
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

Name Type References Description


containing the object, or NULL if the
object is not a general database
object
OID of the object within its system
objid oid any OID column catalog, or NULL if the object is not
a general database object
For a table column, this is the
column number (the classid and
objsubid smallint objid refer to the table itself). For
all other object types, this column is
zero. NULL if the object is not a
general database object
Virtual ID of the transaction that is
virtualtransaction text
holding or awaiting this lock
Process ID of the server process
holding or awaiting this lock. NULL
pid integer
if the lock is held by a prepared
transaction
Name of the lock mode held or
mode text desired by this process (see Section
13.3.1)
True if lock is held, false if lock is
granted boolean
awaited

pg_settings

Name Type Description


name text Run-time configuration parameter name
setting text Current value of the parameter
unit text Implicit unit of the parameter
category text Logical group of the parameter
short_desc text A brief description of the parameter
extra_desc text Additional, more detailed, information about the parameter
context text Context required to set the parameter's value
vartype text Parameter type (bool, integer, real, or string)
source text Source of the current parameter value
min_val text Minimum allowed value of the parameter (NULL for non-numeric values)
max_val text Maximum allowed value of the parameter (NULL for non-numeric values)

System View.

Vistas construidas con información de la base de datos.

View Name Purpose


pg_cursors open cursors
pg_group groups of database users
pg_indexes indexes

32
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

View Name Purpose


pg_locks currently held locks
pg_prepared_statements prepared statements
pg_prepared_xacts prepared transactions
pg_roles database roles
pg_rules rules
pg_settings parameter settings
pg_shadow database users
pg_stats planner statistics
pg_tables tables
pg_timezone_abbrevs time zone abbreviations
pg_timezone_names time zone names
pg_user database users
pg_views views

4.7. Costeo de transacciones.

33
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

Ejercicio 4.2

1. Crear la base de datos BDPROD.

CREATE DATABASE BDPROD ;

2. Identificar los tipos de objetos que se crearon en BDPROD.

Ejercicio 4.4

1. Crear el esquema EMPSYS en la BD BDPROD.


CREATE SCHEMA EMPSYS;

2. Identificar los tipos de objetos que se crearon en el esquema EMPSYS.

Ejercicio 4.5

1. Diseñar el modelo E/R de seguridad (USUARIOS, ROL, USUARIO_ROL).

2. Crear las siguientes tablas en la BD EMPSYS.

Tabla Nombre Columna Tipo Dato Descripción PK FK


USUARIOS nu_usua serial Numero de secuencia de usuario X
id_usua varchar(16) Identificador
no_usua varchar(30) Nombre
ap_pate_usua varchar(30) Apellido Paterno
ap_mate_usua varchar(30) Apellido Materno
pw_usua varchar(16) Password
fe_crea char(10) Fecha de creación

Tabla Nombre Columna Tipo Dato Descripción PK FK


ROL nu_rol serial Numero de secuencia de rol X
no_rol varchar(30) Nombre del rol
tx_rol varchar(30) Descripción del rol

Tabla Nombre Columna Tipo Dato Descripción PK FK


USUARIO_ROL no_rol integer Numero de secuencia de usuario X
nu_usua integer Numero de secuencia de rol X

Ejercicio 4.7

1. Crear los registros de los siguientes usuarios, roles y usuarios x rol.

34
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

user nombre ap. Paternoap. Materno password fecha creacion


RDIAZ ROBERTO DIAZ CAMPOS pass1234 2009/02/28
AALANYA ALEJANDRO ALANYA CRUZ pass1234 2009/02/28
CONEGLIO CLAUDIA ONEGLIO REPPETO pass1234 2009/02/28

rol descripcion
ADMINISTRADOR ADMINISTRADOR DEL SISTEMA
SUPERVISOR SUPERVISOR DE AREA
USUARIO PERSONAL DE AREA

rol usuario
ADMINISTRADOR RDIAZ
USUARIO AALANYA
SUPERVISOR CONEGLIO

2. Utiliza el IDE para ver los registros creados en cada una de las tablas.

3. ¿Que sucedió con los campos seriales? ¿Qué datos tienen?

4. Actualiza la clave de AALANYA a pass1235 y la clave de CONEGLIO a


pass1236

5. Eliminar el registro ADMINISTRADOR-RDIAZ de la base de datos.

6. Extraer el password de CONEGLIO.

7. Extraer el rol de CONEGLIO.

8. Utilizar la herramienta para realizar costeo de transacciones.

35
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

5. Desarrollo de Aplicación web java (MVC)

5.1. Conectando a PostgreSql desde Netbean

Figura. Configurando BDPROD.

36
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

Figura. Configurando el esquema EMPSYS

Figura. Vista de la integración de Netbean con la Base de Datos.

37
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

5.2. Instalando el jar PostgreSql.

Figura. Instalacion de jar

38
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

5.3. Diseño de aplicación

Diseñar las clases del proyecto.

JSP
index.jsp
BEAN
BRol
BUsuario
DAO
DAOSecurity

SERVLET
SLogin

CONNECCION
DBADbProd

39
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

Figura. Vista de las clases.

5.4. Diseño de BD.

5.5. Creación del Proyecto.

Figura. Creando el proyecto

40
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

Figura. Configurando el proyecto

Figura. Configurando el Servidor

41
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

Figura. Proyecto creado.

5.6. Implementación de la Aplicación web java.

Paquetes:
Crear los siguientes paquetes en el proyecto EMPMVC

pe.gob.emp.bean
pe.gob.emp.despachador
pe.gob.emp.lista
pe.gob.emp.servlet
pe.gob.emp.util

42
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

Figura. Creación de paquete bean.

Figura. Vista de paquetes.

Creación de Clases.

Crear las clases del Proyecto en:

43
Desarrollo de Aplicaciones Web Java con Spring y PostgreSql

Web Pages
index.jsp
pe.gob.emp.bean
BRol
BUsuario
pe.gob.emp.despachador
DAOSecurity

pe.gob.emp.servlet
SLogin

pe.gob.emp.util
DBADbProd

Figura. Crea clase Usuario.

5.7. Build, Deploy y Ejecucion de la Aplicación web java.

(A resolver en clase)

44

You might also like