37
Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM [email protected] 1

Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM [email protected]

Embed Size (px)

Citation preview

Page 1: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

Esquema de Mapeo de Base de Datos Relacionales a Objetos

Luis José Muñiz RascadoPrograma de Genómica ComputacionalCentro de Ciencias Genómicas UNAM

[email protected]

1

Page 2: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

Contenido

• Introducción– Cómo funciona JDBC – Propuestas de Solución– Qué es el Mapeo Objeto-Relacional?

• Qué es iBATIS?– Características de iBATIS– Pros y Contras– Cómo funciona iBATIS– Arquitectura de iBATIS– Extraer e Insertar Datos– Borrar y Actualizar

• Caso de Éxito– RegulonDB

2

Page 3: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

Introducción

3

Page 4: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

Cómo funciona JDBC

4

Solicitud SQL

Comunicación Viva conla Base de Datos mientra sacamos los datos

Page 5: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

5

Manipulación del SQL hay que concatenar cada línea

Page 6: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

6

Page 7: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

Propuestas de Solución

1. Hibernatehttp://www.hibernate.org

2. Java Persistence APIhttp://java.sun.com/javaee/technologies/persistence.jsp

3. iBATIShttp://ibatis.apache.org/

7

Page 8: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

Qué es el Mapeo Objeto-Relacional?

88

Solicitud de SQL

SQL

Page 9: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

Qué es iBATIS?

iBATIS es un framework mapeador de datos que se encuentran contenidos en base de datos y obtener

objetos a partir de los datos relacionales.

Fue desarrollado por Clinton Begin y el código fuente es administrado por la Apache Software Fundation

(http://ibatis.apache.org/).

9

Page 10: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

Características de iBATIS

1. Mapeo basado en SQL. 2. Trabaja con esquemas de base de datos

sencillos y complejos .3. Construcción de SQL dinámico o al vuelo

apartar de etiquetas de XML.4. Soporte de transacciones.5. Minima dependencia de librerías de terceros

y bajo consumo de recursos.6. Intregación con otros frameworks (Spring).

10

Page 11: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

Pros y Contras

• Pros1. Se puede utilizar cualquier tipo de sentencia SQL:

UNION, OUTER JOIN.2. Independencia de la base de datos.3. Reusabilidad de sentencias SQL y objetos de resultados.4. Mayor flexibilidad en la manipulación de SQL.

• Contras1. Tiempo en modelado de los objetos que contendrán los

resultados de SQL.2. Tiempo en configurar el ambiente para usar iBATIS.

11

Page 12: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

Cómo funciona iBATIS

12

Solicitud de ID de SQL

Solicitud SQL

Page 13: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

Arquitectura

de iBATIS

13

sql-map-config.xml

sql-map.xml

Objeto.java

ibatis.jar

log4j.jar

commons-dbcp.jar

Ibatis.java

Page 14: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

Esquema de Base de Datos(tienda)

14

Page 15: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

sql-map-config.xml<sqlMapConfig>

<transactionManager type="JDBC”>

<dataSource type="SIMPLE">

<property name="JDBC.Driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>

<property name="JDBC.ConnectionURL"

value="jdbc:derby:/Users/luisjose/tienda"/>

<property name="JDBC.Username" value=”usuario"/>

<property name="JDBC.Password" value=”usuario"/>

</dataSource>

</transactionManager>

<!-- SqlMaps -->

<sqlMap resource=”ibatis.xml.SqlMap.xml" />

</sqlMapConfig>

15

Page 16: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

sql-map.xml

<sqlMap namespace="SqlMap"><!– SQL que busca los datos de un cliente --> <select id="busca_cliente_nombre" resultClass="ibatis.maps.Factura"> SELECT DISTINCT id_cliente AS id, nombre_cliente AS cliente, direccion_cliente AS direccion FROM nombre_cliente = #nombreCliente# </select></sqlMap>

16

Page 17: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

<sqlMap namespace="SqlMap"><!– SQL que busca los datos de un cliente --> <select id="busca_cliente_nombre"

resultClass="ibatis.maps.Factura"> SELECT DISTINCT id_cliente AS id, nombre_cliente AS cliente, direccion_cliente AS direccion FROM nombre_cliente = #nombreCliente# </select></sqlMap>

Cliente.java y SQL

17

Page 18: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

Ibatis.javaprivate static SqlMapClient sqlMap;

static {

try {

String resource = "ibatis/sql-map-config.xml";

Reader reader = Resources.getResourceAsReader(resource);

sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);

}

catch(Exception e) {

e.printStackTrace();

}

}

public static SqlMapClient getSqlMapInstance() {

return sqlMap;

}

18

Page 19: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

19

Como Queda Organizado

Page 20: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

Extraer

Datos

1. Instanciamos la clase Ibatis que generamos.

// conexión de iBATIS

SqlMapClient sqlMap = Ibatis.getSqlMapInstance();

2. Se solicita que ejecute un identificador de un query , pero…

20

Page 21: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

Cliente cliente = sqlMap.queryForObject("busca_cliente_nombre", “luis”);

Resultado de SQL

Page 22: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

2222

List clienteList = sqlMap.queryForList("busca_cliente_nombre", “luis”);

Resultado de SQL

Page 23: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

if(!(clienteList.isEmpty())) {

for(int x = 0; x < facturaList.size(); x++ ) {

Cliente cliente = (Cliente)clienteList.get(x);

System.out.println(

cliente.getId() + “ “ +

cliente.getCliente() + “ “ +

cliente.getDireccion()

);

} // fin for

} // fin for

23

Page 24: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

Ejemplo Extracción de datos

24

Page 25: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

25

<!– SQL que inserta cliente --><insert id="insera_cliente" > INSERT INTO CLIENTE(id_cliente, nombre_cliente, direccion_cliente) VALUES( #id:Integer#, #cliente:String#, #direccion:String#) </insert>

Insertar

Datos

Page 26: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

26

Cliente cliente = new Cliente();

cliente.setCliente(“luis”);cliente.setDireccion(“dirección conocida”);cliente.setId(14);

// conexión de iBATISSqlMapClient sqlMap = Ibatis.getSqlMapInstance(); sqlMap.insert("insera_cliente", cliente);

Page 27: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

Ejemplo de Inserción de Datos

27

Page 28: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

Borrar

28

<!– SqlMap --><!– SQL que borra un usuario --><delete id="borrar_cliente"> DELETE FROM CLIENTE WHERE id_cliente = #id# </delete>

// Java// conexión de iBATIS SqlMapClient sqlMap = Ibatis.getSqlMapInstance(); sqlMap.delete("borrar_cliente”, 14);

Page 29: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

Ejemplo de Borrado de Datos

29

Page 30: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

Actualizar

30

<!– SqlMap <!– SQL que actualiza --><update id="actualiza_cliente"> UPDATE CLIENTE SET nombre_cliente = #cliente#, direccion_cliente = #direccion# WHERE id_cliente = #id# </update>

// javaCliente cliente = new Cliente();

cliente.setCliente(“luis josé”); cliente.setDireccion(“av. Central # 1, zacatepec morelos”); cliente.setId(14); // conexion a RegulonDB a travez de iBATIS SqlMapClient sqlMap = Ibatis.getSqlMapInstance(); sqlMap.update("actualiza_cliente", cliente);

Page 31: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

Ejemplo de Actualización de Datos

31

Page 32: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

Caso de Éxito:

RegulonDB, es una base de datos sobre el proceso de transcripción de la bacteria E. coli.

(http://regulondb.ccg.unam.mx/)

1.Las herramientas de RegulonDB estaban muy individualizadas.

2.Colocar un sitio espejo en Purdue University (EcoliHub, http:/www.ecolicommunity.org/).

32

Page 33: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

33

Las herramientas de RegulonDB estaban muy individualizadas.

Page 34: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

34

Page 35: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

Colocar un sitio espejo en Purdue University (EcoliHub).

35

Page 36: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

36

Page 37: Esquema de Mapeo de Base de Datos Relacionales a Objetos Luis José Muñiz Rascado Programa de Genómica Computacional Centro de Ciencias Genómicas UNAM ljmuniz@ccg.unam.mx

Gracias

37