jueves, 12 de septiembre de 2013

Spring Dao Ejemplo(primera parte)

HOLA!!, pues vamos a continuar escribiendo un post sobre Spring DAO, que es uno de los módulos del framework de Spring.





y bueno cabe destacar que Spring DAO no es un ORM como lo es Hibernate, iBatis o JPA, simplemente es una solución más optimizada para la capa de datos que ofrece Spring en lugar de JDBC, sin embargo Spring también ofrece integración con los ya mencionados Frameworks de la capa de datos para tener una solución más robusta al momento de construir la arquitectura de un proyecto, pero eso sera en otros posts, por ahora vamos a concentrarnos en Spring DAO.


Vamos a construir un proyecto con maven utilizando el IDE STS(Spring tool Suite) como ya lo hemos estado haciendo en otros posts, la diferencia es que vamos agregar unas nuevas librerías que son las que dan soporte a Spring DAO.


Si no estan familiarizados con este ide, o tiene dudas al descargarlo chequen los anteriores posts, ahí se explica toda esa parte :)


bien ahora vamos a crear el proyecto. en el siguiente paso seleccionamos "Create a simple project" y en el siguiente lo dejamos con la siguiente imagen.




y le damos en finalizar :)



















Ahora vamos a crear un archivo de definición de Spring, es decir un applicationContext.xml, para eso le damos clic derecho sobre el proyecto recién creado, New y Spring Bean Configuration File

nota:si no aparece, le damos en Others y tecleamos Spirng, y elegimos  Spring Bean Configuration File.






lo guardamos en la ruta indicada, y le ponemos un nombre, en mi caso le puse applicationContext.




le damos finalizar.


nota: la siguiente pantalla se configuraban los namespace de Spring, pero nuestro proyecto aun no tiene agregadas las librerías de Spring, asi que primero vamos a agregar en el archivo pom.xml y luego regresaremos a trabajar con este archivo de applicationContext.


bien vamos a nuestro archivo pom.xml en el modo de vista de dependencias.





agregamos la siguiente librería que es el soporte para spring-jdbc

















nuestro pom.xml se tendría que ver de la siguiente manera:



<project xmlns="http://maven.apache.org/POM/4.0.0"

 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>mx.com.nombreempresa</groupId>

  <artifactId>spring-dao</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <dependencies>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-core</artifactId>

<version>3.2.4.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>3.2.4.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-jdbc</artifactId>

<version>3.1.1.RELEASE</version>

</dependency>

  </dependencies>

</project>


bien, ahora vamos agregar otras librerías más para la conexión a la base de datos.


<!-- DataSource -->

<dependency>

<groupId>commons-dbcp</groupId>

<artifactId>commons-dbcp</artifactId>

<version>1.4</version>

</dependency>

<!-- driver para conexión a una base virtual -->

<dependency>

<groupId>com.h2database</groupId>

<artifactId>h2</artifactId>

<version>1.0.20070304</version>

</dependency>


Con esto tenemos listas nuestras dependencias, ahora regresemos a nuestro archivo applicationContext



vamos a la opción de namespaces y seleccionamos las dos siguientes.


























ahora vamos agregar un bean a nuestro archivo applicationContext, se vería de la siguiente manera








 
   

 




El objeto es el dataSource o fuente de datos, nos sirve para definir la conexión a la base de datos que en este caso es una virtual, y requiere del archivo script.sql donde se guarda la creación e inserción de datos.

Ahora vamos a crear un clase llamada Alumno, que será el modelo de nuestra aplicación y la vamos a depositar en la carpeta de mx.com.nombreempresa.dto. la cual tendrá los siguientes atributos (id,nombre,apellidoPaterno,apellidoMaterno).








package mx.com.nombreempresa.dto;

public class Alumno {

 private int id;
 private String nombre;
 private String apellidoPaterno;
 private String apellidoMaterno;
 
 public Alumno() {
 
 }

 public int getId() {
  return id;
 }

 public void setId(int id) {
  this.id = id;
 }

 public String getNombre() {
  return nombre;
 }

 public void setNombre(String nombre) {
  this.nombre = nombre;
 }

 public String getApellidoPaterno() {
  return apellidoPaterno;
 }

 public void setApellidoPaterno(String apellidoPaterno) {
  this.apellidoPaterno = apellidoPaterno;
 }

 public String getApellidoMaterno() {
  return apellidoMaterno;
 }

 public void setApellidoMaterno(String apellidoMaterno) {
  this.apellidoMaterno = apellidoMaterno;
 }
 
 
 

}

nota: dto-->Data Transfer Object, son los objetos de transferencia y constituyen a un patrón de diseño.

Ahora vamos a crear una clase de tipo DAO (Data Access Object), que es una clase normal pero cuyo funcionamiento consiste en la conexión a la base de datos, forma parte de los patrones de diseño que estaremos mencionando a lo largo de este blog. por ahora solo comprende que una clase DAO, es una simple clase cuya función es conectarse con el repositorio de información ( base de datos, archiuvos, XML, etc.)


Pero... en Spring se promueve la programación orientada a interfaces, permitiendo una alta cohesión y un bajo acoplamiento. por lo tanto, vamos a crear una interface llamada AlumnoDao, ojo, chequen el paquete.




package mx.com.nombreempresa.dao;

import java.util.List;

import mx.com.nombreempresa.dto.Alumno;

public interface AlumnoDao {

 
 void save(Alumno alumno );
 void delete(Alumno alumno);
 void updateById(Alumno alumno);
 List getAlumnos();
 Alumno getAlumnoById(int idAlumno);
 
 
}


como podemos ver, la interface tienes los métodos más comunes conforme a operaciones a la base de datos. vamos a continuar en la siguiente entrada con este post.

1 comentario:

  1. Que paso con la continuación de este proyecto de Spring
    Donde esta el Link de continuacion

    ResponderBorrar