Académique Documents
Professionnel Documents
Culture Documents
Integrantes:
2010
JDBC
INTRODUCCION
Caractersticas
JDBC es una biblioteca de clases e interfaces que
permite la conexin con base de datos utilizando
Java.
La biblioteca JDBC dispone de una interfaz para
ejecutar instrucciones SQL que ofrece una
funcionalidad bsica para el acceso a datos. las
clases e interfaces que componen el API de JDBC
son conceptos comunes de acceso a base de datos
para todas las bases de datos.
JDBC se diseo como una interfaz de programacin
de aplicaciones (API) orientado a objetos para
acceder (consultas) a bases de datos y es un
estndar.
El API JDBC se diseo como una interfaz para
ejecutar consultas SQL y admite todos los dialectos
de SQL.
Conexin a la Base de Datos
Mecanismo JDBC
El funcionamiento prctico de JDBC obliga a
conocer los siguientes 5 procedimientos, a saber:
1.Establecer conexin.
2.Crear sentencia.
3.Ejecutar sentencia.
4.Procesar resultados.
5.Cerrar.
1.- Establecer la conexin
Tiene dos operaciones bsicas.
a) DriverManager
b) Connection
a.- DriverManager
La clase DriverManager es la capa gestora de
JDBC, trabajando entre el usuario y el
controlador (driver). Se encarga de seguir el
rastro de los controladores que estn
disponibles y establecer la conexin entre la
base de datos y el controlador apropiado.
Para trabajar con el Puente
JDBC-ODBC:
try {
Class.forName(sun.jdbc.odbc.JdbcOdbcDriv
er);
} catch (ClassNotFoundException cnfe) {
System.err.println(No ha podido
encontrarse el driver
de ODBC.);
}
Para trabajar con MySQL:
try {
Class.forName(com.mysql.jdbc.Driver);
} catch (ClassNotFoundException cnfe) {
System.err.println(No ha podido encontrarse el
driver de MySQL);
}
Para trabajar con postgreSQL:
try {
Class.forName(org.postgresql.Driver);
} catch (ClassNotFoundException cnfe) {
System.err.println(No ha podido encontrarse el
driver de postgreSQL);
}
Para trabajar con Oracle:
try {
Class.forName(oracle.jdbc.driver.Oracl
eDriver);
} catch (ClassNotFoundException cnfe) {
System.err.println(No ha podido
encontrarse el driver
de Oracle);
}
b.- Connection
Un objeto Connection representa una conexin a una
base de datos. Una sesin con una conexin incluye las
sentencias SQL que son ejecutadas y los resultados
que son devueltos a travs de dicha conexin. Una
misma aplicacin puede tener una o ms conexiones
con una sola base de datos o puede tener conexiones
con varias bases de datos diferentes.
import java.sql.*;
publicstatic void conexion ( ) throws Exception {
try {
// Carga el driver
Class.forName("oracle.jdbc.driver.OracleDriver");
//Define la cadena de conexin
String sourceURL=jdbc:oracle:thin:@localhost:1521:orcl, scott,
tiger;
//Crea el objeto connection a travs de DriverManager
Connection con =DriverManager.getConnection(sourceURL);
System.out.println("La conexion establecida es:"+ con);
} catch(ClassNotFoundExceptioncnfe){
System.err.println(cnfe);
} catch(SQLExceptionsqle){
System.err.println(sqle);
};
};
2.- Crear sentencia.
Statement
public Statement
createStatement(intresultSetType,
intresultSetConcurrency) throws
SQLException
PreparedStatement
Un objeto PreparedStatement se usa para sentencias
SQL que toman uno o ms parmetros como argumentos
de entrada (parmetros IN).
PreparedStatement tiene un grupo de mtodos que fijan
los valores de los parmetros IN, los cuales son enviados
a la base de datos cuando se procesa la sentencia SQL.
senten.close();
resul.close();
con.close();
Conviene recordar:
El mecanismo de funcionamiento bsico JDBC,
Establecer conexin:
Class.forName() y DriverManager.getConnection
Crear sentencia:
Statement senten = connexion.createStatement();
Ejecutar sentencia:
executeUpdate o executeQuery
Procesar resultados:
while, resul.first(), resul.last(), resul.beforeFirst(),
resul.afterLast(), resul.absolute (int num),
resul.next(), resul.previous, resul.getRow().
Cerrar:
sentencia.close(), resultados.close(),
conexion.close();
Spring Framework
El Spring Framework (conocido tambin como Spring) es un
framework de cdigo abierto de desarrollo de aplicaciones para la
conocida plataforma JAVA. La primera versin fue escrita por
Rod Jonhson, quien lo lanz primero con la publicacin de su libro
Expert One-on-One Java EE Design and Development (Wrox
Press, octubre 2002).
JDBC ofrece una abstraccin bastante buena de la base de datos subyacente, pero es un
API doloroso de usar. Algunos de los problemas incluyen:
Usted nunca tendr que escribir otra vez un bloque de finalizacin para usar JDBC.
Tendr que escribir menos cdigo en general, y ese cdigo estar claramente enfocado en
las sentencias SQL necesarias.
Usted nunca tendr que ahondar a travs de la documentacin del RDBMS para averiguar
qu oscuro cdigo de error devuelve un nombre de columna errneo. Su aplicacin no
depender del cdigo de control de errores especfico de RDBMS.
Usted se beneficiar de una mejor portabilidad (en comparacin con JDBC crudo) en reas
avanzadas como manipulacin de BLOB y la invocacin de procedimientos almacenados que
devuelven resultsets.
Cerrar la conexin.
Conclusin
Todo lo anterior tiene que estar dentro de uno o varios
try-catch por si ocurre alguna excepcin, cerrar los
objetos que tengamos.
Es algo muy tedioso de programar, sobre todo cuando se
quiere obtener una lista corta de objetos que se van a
presentar en alguna pgina web o en una interfaz y dichos
objetos pueden ser simples mapas con los nombres de las
columnas como llaves.
Spring-Jdbc
Jerarqua de paquetes
El framework de abstraccin JDBC de Spring consiste en cuatro
diferentes paquetes core, dataSource, object y support.
return namedParameterJdbcTemplate.queryForInt(sql,
namedParameters);
}
Spring-Jdbc
SimpleJdbcTemplate: La clase SimpleJdbcTemplate es un
envolvente de un JdbcTemplate clsico que toma ventaja de las
caractersticas de Java 5 como son los argumentos variables.
public Actor findActor(long id) {
DriverManagerDataSource ds = new
DriverManagerDataSource();
ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
ds.setUrl("jdbc:oracle:thin:@localhost:1521:XE");
ds.setUsername("demo02");
ds.setPassword("demo02");
template = new JdbcTemplate(ds);
}
Spring-Jdbc
SQLExceptionTranslator
Es una interface para ser implementado por las clases, puede
traducir entre SQLExceptions y las excepciones de Spring
derivadas de
org.springframework.org.dao.DataAccessException.
Las implementaciones pueden ser genricas (por ejemplo,
mediante el uso de cdigos de SQLState para JDBC) o
propietarias (por ejemlo, usando cdigos de error de
Oracle) para mayor precisin.
Conclusin
Aspectos a mejorar en el ejemplo:
SQLException: excepcin genrica
Captura de excepciones para no hacer nada
Cmo lo mejora Spring?
Mapeo de SQLException a excepciones especficas
Subclases de org.springframework.dao.DataAccessException
A LEER EN CANTIDADES
INSDUSTRIALES
Bibliografa
http://www.xmind.net/share/lshimokawa/spring-
jdbc/
http://www.comunidadjava.org/?q=node/421
http://www.javadocexamples.com/java_source/or
g/springframework/prospring/ticket/db/Sample
BatchTests.java.html
http://www.comunidadjava.org/?q=node/421
http://chuwiki.chuidiang.org/index.php?
title=Ejemplo_sencillo_con_SpringFramework_D
AO
Spring-Jdbc
Spring JDBC ofrece un objeto llamado JdbcTemplate
(El equivalente Spring a la clase Connection ), el cual se
configura con un DataSource Entonces el componente
que necesita obtener estos datos (por ejemplo un DAO)
puede simplemente tener una propiedad llamada
jdbcTemplate, por ejemplo:
Primero se obtiene el equivalente Spring a una
conexin con base de datos. Aunque hay muchas formas
de hacerlo, incluyendo ficheros de configuracin, una
forma ms inmediata, directamente en cdigo seria :
Ejemplo
Ejemplo
Una vez que se obtiene la conexin, con el mtodo
query() de JdbcTemplate podemos hacer la consulta. A
este mtodo:
Le pasamos un String con la sentencia SQL de select.
Le pasamos una clase RowMapper encargada de:
instanciar una clase Persona, leer una fila del ResultSet
resultante y devolver dicha clase Persona.
Devuelve una Collection rellena de Persona.
Spring-Jdbc
El JdbcTemplate tiene varios mtodos para leer datos,
por ejemplo para obtener un solo dato o un solo registro,
as como para modificar (INSERT, UPDATE, DELETE).
Lo que el JdbcTemplate hace es todo lo que se menciono
antes:
Abre una conexin, crea un PreparedStatement con el
SQL y los parmetros que se le da, lee los datos y los
pone en una lista, cierra todo y los devuelve.
Spring-Jdbc
Adems, cualquier excepcin de SQL que ocurra la
convierte a un DataAccessException (hay toda una
jerarqua de clases) pero es de tipo RuntimeException,
as que se puede incluso quitar el try-catch y dejar que
quien invoque el mtodo se encargue de lidiar con
cualquier excepcin.
Spring-Jdbc
Los paquetes de Spring
org.springframework.jdbc y
org.springframework.core.simple