davidmarco.es
  davidmarco.es
 
  Inicio Blog Sobre mí Tutoriales Contacto    
 

 

Presentado Android Studio
Publicado el 15 de Mayo de 2013

Durante la conferencia Google I/O que ha comenzado hoy en San Francisco, Google ha presentado su nuevo entorno de desarrollo para Android: Android Studio. Éste sustituye a Eclipse y está basado en IntelliJ IDEA, lo cual es (al menos para mí) tan inesperado como excitante.

Para los más despistadillos, o aquellos que no hayáis trabajado con IntelliJ, éste es el mejor entorno desarrollo para Java que existe en la actualidad, a años luz en estabilidad y comportamiento con respecto al resto de alternativas (Eclipse / Netbeans) y muy cerca del excelente Visual Studio de Microsoft (aunque éste juegue en la liga .NET...).

Aunque las últimas versiones de IntelliJ ya disponían de un diseñador integrado de Android, Android Studio es una versión de éste creada por y para esta plataforma. La guinda al pastel sería que Android Studio estuviera basado en la versión Community Edition de IntelliJ, con lo que estaríamos hablando de un producto gratuito y (probablemente) de código abierto. Sea como sea, se trata sin duda de una excelente noticia para la comunidad de desarrolladores Android.

EDICIÓN: Ya es...



Sígueme en Google+
Publicado el 07 de Enero de 2013

Hace ya más de un año que activé una cuenta en Google+, aunque hasta ahora ha estado offline ya que realmente no sabía muy bien que uso debía darle, ni que ventajas podía ofrecerme.

Aprovechando que estoy preparando multitud de contenidos que publicaré en las próximas semanas he decido reactivar la cuenta y enfocarla a un uso netamente profesional, de manera que pueda ampliar mi ecosistema de comunicación del que ya forman parte mi cuenta en Twitter y mi canal RSS.

De manera adicional, Google+ puede ayudarme a mantener una comunicación más cercana con todos aquellos que me seguís, además de poner de manifiesto el verdadero significado de red social haciendo que la comunicación entre vosotros sea también posible.

¡Os espero en Google+!



Tratamiento de excepciones en Java
Publicado el 16 de Julio de 2012

El tratamiento de excepciones en Java es un mecanismo del lenguaje que permite gestionar errores y situaciones excepcionales. Debido a que el tratamiento de excepciones es uno de los pilares fundamentales del lenguaje, todo programador sabe como lanzarlas y capturarlas, pero (como cualquier aspecto fundamental en programación) es necesario conocer con cierta profundidad el proposito por el cual tenemos disponible dicho mecanismo, además de hacer un uso correcto de esta funcionalidad. En este artículo vamos a ver ambos aspectos: el qué y el cómo.

1. CONCEPTO DE EXCEPCIÓN
Una excepción en Java (así como en otros muchos lenguajes de programación) es un error o situación excepcional que se produce durante la ejecución de un programa. Algunos ejemplos de errores y situaciones excepcionales son:

    - Leer un fichero que no existe.
    - Acceder al valor N de una colección que contiene menos de N elementos.
    - Enviar/recibir información por red mientras se produce una perdida de conectividad.
    
Todas las excepciones en...



Cambio de alojamiento externo
Publicado el 04 de Marzo de 2012

Desde este momento, los tutoriales en versión PDF de Spring MVC e Hibernate, así como el proyecto para eclipse del primero, se mueven desde el servicio de almacenamiento externo 4Shared a Dropbox. Este último, además de ofrecer descargas simultaneas, mantener la misma url al subir nuevas versiones y carecer de tiempo de espera, requiere menos mantenimiento por mi parte. Las nuevas direcciones son las siguientes:

Tutorial de Spring MVC: http://dl.dropbox.com/u/42898825/davidmarco.es/SpringMVC.pdf
Tutorial de Hibernate: http://dl.dropbox.com/u/42898825/davidmarco.es/Hibernate.pdf
Proyecto para eclipse (Spring MVC): http://dl.dropbox.com/u/42898825/davidmarco.es/springapp.rar

Como consecuencia de este cambio, dentro de 60 días dejaré de dar soporte a mi cuenta de 4Shared, por lo que los citados archivos sólo estarán accesibles desde las nuevas direcciones.

Estoy seguro que este cambio supondrá una me...



Lazy Fetch en JPA
Publicado el 23 de Febrero de 2012
Retomando el blog
Publicado el 21 de Febrero de 2012

Para los que seguís mi blog, os será evidente que hace mucho tiempo que no publico nada; compromisos laborales y personales me tienen atado 24 horas al día, 7 días a la semana, dejándome apenas tiempo para sentarme delante del PC y escribir cualquiera de los muchos artículos que tengo en mente (o simplemente pendiente, como las dos últimas entregas del tutorial de EJB 3.1...).

Puesto que sois muchos los que me animáis a través de correo electrónico a continuar publicando contenido (y por ello os doy las gracias), en los próximos días volveré a la carga con nuevos artículos. Espero poder encontrar desde este mismo instante el tiempo suficiente para escribir tres artículos de cierta dimensión cada dos meses, como mínimo (y creedme que haré todo lo posible por llevarlo a cabo).

Por descontado, toda sugerencia sobre nuevos artículos será bienvenida, por lo que os animo a poneros en contacto conmigo al respecto como habéis hecho hasta ahora. Un saludo y hasta muy pronto.



Cliente EJB para Glassfish v3
Publicado el 20 de Abril de 2011

Para todos aquellos que estáis siguiendo el tutorial de introducción a EJB 3.1, pero habéis decidido usar Glassfish v3 como servidor de aplicaciones (en lugar de JBoss 6), aquí tenéis el código necesario para configurar el cliente Java que conecta con el contenedor EJB:


Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");
props.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
props.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");

// Opcional. Por defecto es localhost. Solo es necesario si el servidor se está ejecutando en una máquina distinta
props.setProperty("org.omg.CORBA.ORBInitialHost", "localhost");

// Opcional. Por defecto es 3700. Solo es necesario si el puerto ORB es diferente de 3700    
props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");

Context ic = new InitialContext(props);


De manera adicional, la aplicación cliente puede necesitar que el módulo gf-client.jar se encuent...



Introducción a EJB 3.1 (IV)
Publicado el 07 de Abril de 2011

En los artículos anteriores del tutorial de introducción a EJB 3.1, hemos visto como declarar y trabajar con componentes de lado del servidor (Session Beans y Message-Driven Beans). El último componente que nos queda por ver es Entity Beans (EB - Beans de Entidad; a partir de ahora nos referiremos a ellos como entidades).


4.1 ENTIDADES: CONCEPTOS BÁSICOS
Las entidades, a diferencia del resto de componentes EJB, son objetos Java reales que son manejados entre componentes (o entre un cliente y un componente) en su forma original, nunca a través de proxys/vistas. Podemos crearlos con sentencias new, pasarlos como parámetros a un Session Bean, etc. Pero el verdadero valor de las entidades reside en que su estado puede ser almacenado en una base de datos, y más tarde recuperado en un nuevo objeto del tipo correspondiente. De manera adicional, los cambios que realicemos en el estado de una entidad serán sincronizados con la información que tenemos almacenada en la base de datos.

Aunque las entidades se consideran componentes EJB, hasta la version JavaEE 1.4 pertenecían a una especi...



Revisión del tutorial de introducción a JPA
Publicado el 01 de Abril de 2011

Hace ya algún tiempo que publiqué en el blog el tutorial de JPA (14 meses para ser más exactos), y por ser aquellos los primeros artículos técnicos que escribí y publiqué, llevaban consigo la impronta del escritor novato. Hoy, después de haber escrito algunos artículos más, mi estilo es en cierto modo diferente, para mi gusto un poquito mejor, y tal vez ahora me veo capaz de expresar los mismos conceptos de forma más simple y comprensible, lo que yo llamo más fácil de leer.

El proposito de todo este rollo (que no creo que os importe demasiado) es que, aprovechando que el tutorial de EJB 3.1 se encuentra en plena efervescencia, y sobre todo que el último de sus artículos publicado hasta ahora termina haciendo un guiño (por no decir un grito) al tutorial de JPA, he revisado, reescrito, y corregido este último, acciones que, una vez concluidas, he comprobado que eran realmente necesarias. Como siempre espero que disfrutéis del material revisado, tanto aquellos que ya lo hicieron en su momento, como los que lo tengan ante si por primera vez.



Introducción a EJB 3.1 (III)
Publicado el 28 de Marzo de 2011

En el artículo anterior vimos algunos conceptos comunes a los componentes de una aplicación EJB, como el contexto de sesión, o la diferencia entre remoto y local. Además, vimos en cierta profundidad los dos tipos de Session Bean más comunes en una aplicación EJB: Stateless y Stateful. En este artículo vamos a ver el último tipo de Session Bean (Singleton Session Bean), dos conceptos aplicables a todos los Session Bean y que son nuevos en la especificación EJB 3.1 (vista sin interface y llamadas asíncronas), y finalmente un nuevo tipo de componente: Message-Driven Bean. Comencemos.



3.1 SINGLETON SESSION BEANS: CONCEPTOS BÁSICOS
El Singleton Session Bean (no existe una traducción literal de la palabra Singleton, pero viene a expresar el concepto de instancia única; desde ahora nos referiremos a este componente como Singleton Session Bean, o Singleton a secas) es un nuevo tipo de Session Bean introducido en la especificación EJB 3.1. Este componente se basa en el patrón de diseño del mismo nombre definido por Erich Gamma, Richard Helm, Ralph Johnson y John ...



Introducción a EJB 3.1 (II)
Publicado el 18 de Marzo de 2011

En el artículo anterior del tutorial de EJB 3.1 vimos de manera superficial que representa la especificación EJB, que es un contenedor, los tipos de componentes dentro de una aplicación EJB, y por último un sencillo ejemplo de desarrollo de una aplicación EJB 3.1 mediante Test-Driven Development. En este segundo artículo vamos a empezar a profundizar en algunos de esos temas, viendo dos de los tres tipos de Session Beans: Stateless y Stateful. Sin embargo, antes es necesario comprender algunos conceptos relacionados con la tecnología EJB, como el funcionamiento del pool, el uso de metadatos, componentes locales vs componentes remotos, inyección de dependencias, y contexto de sesión dentro de una aplicación EJB. Comencemos.



2.1 METADATOS
Como vimos en la primer artículo del tutorial, para declararar nuestros POJO's como verdaderos componentes EJB necesitamos usar metadatos. Estos metadatos pueden ser de dos tipos:

    - Anotaciones
    - XML
     ...



Introducción a EJB 3.1 (I)
Publicado el 08 de Marzo de 2011

Con este artículo comienza un tutorial que describe el estandar EJB 3.1 de manera introductoria. El tutorial contiene tanto material teórico como práctico, de manera que según se vayan introduciendo nuevos conceptos se irán reflejando en código. Es muy recomendable que antes de seguir leyendo visites el siguiente anexo donde se explica como poner en marcha un entorno de desarrollo compatible con EJB 3.1, de manera que puedas seguir todos los ejemplos que se van a presentar en el tutorial, así como desarrollar los tuyos propios.

La siguiente lista muestra el contenido de los primeros 6 artículos de los que constará el tutorial. Esta lista se actualizará si se publica contenido adicional:

    - 1. Introducción a EJB y primer ejemplo
    - 2. Stateless Session Beans y Stateful Session Beans
    - 3. Singletons y Message-Driven Beans
    - 4. Persistencia
    - 5. Servicios que ofrece el contenedor (1ª parte)
    - 6. Servicios que o...



Usando buenos nombres
Publicado el 04 de Febrero de 2011

Actualmente me encuentro leyendo una joya de la literatura informática de los últimos años, Clean Code: A Handbook of Agile Software Craftsmanship, de Robert C. Martin. Sin enrollarme demasiado, el libro muestra como mejorar nuestro código (y como no empeorarlo) siguiendo algunas técnicas que, en los dos últimas decadas, han demostrado ser efectivas para mantener un proyecto de software funcionando de la mejor manera posible durante el mayor tiempo posible.

Este artículo trata sobre una de esas técnicas, una tan sencilla como poderosa, y que podemos empezar a aplicar desde ya a todo el código que pase por nuestras manos: usar buenos nombres. Vamos al lio.



INTRODUCCIÓN: ¿POR QUE USAR BUENOS NOMBRES?
Usar buenos nombres es esencial para mantener el código legible. Como programadores, pasamos más tiempo leyendo código (propio y ajeno) que escribiéndolo (según algunos estudios ¡en un ratio de 10:1!); toda nueva funcionalidad se basa en funcionalidad anterior, y si esa funcionalidad anterior no es ...



Primer año de davidmarco.es
Publicado el 20 de Diciembre de 2010

Hoy se cumple un año desde la puesta en marcha de la web. Las más de 187.000 visitas y 560.000 páginas vistas desde 42 paises distintos dan sentido al humilde esfuerzo con el que empecé esta aventura, a mi misión primera y última: compartir mis conocimientos con el resto de la comunidad, al tiempo que aprendo de ella. Las traducciones a Español de los tutoriales de Spring e Hibernate han tenido una aceptación extraordinaria, además de servir de base para diferentes modificaciones que algunos habéis realizado de ellos. También ha tenido gran acogida mi blog personal, dentro del cual he publicado los tutoriales de JPA, Groovy, y diversos artículos relacionados con Java.

Los cientos de correos que he recibido agradeciendo mi trabajo han sido un gran motor para seguir adelante. Muchos de vosotros me habeís pedido también ayuda por email, ayuda que no siempre es facil de proporcionar pues cada problema que os surge con un proyecto concreto es un mundo. De cualquier modo, he contestado a todos y cada uno de los correos sin escatimar tiempo ni esfuerzo, y os invito a que os sigáis poniendo en contacto conmigo siempre que lo consideréis oportuno.

Para este...



Sígueme también en Twitter
Publicado el 15 de Octubre de 2010

Desde ahora podeis seguir la actividad de la web a través de Twitter, accediendo a la dirección http://twitter.com/davidmarcoes.

¡Os espero!



Integración de Eclipse y SpringSource Tool Suite
Publicado el 30 de Septiembre de 2010

SpringSource Tool Suite (STS) es un IDE basado en la versión Java EE de Eclipse, pero altamente customizado para trabajar con Spring Framework. Entre las características más destacadas que STS proporciona se encuentran:

    - soporte para Spring 3
    - asistentes para la creación de proyectos Spring
    - herramientas para la gestión de beans
    - editores gráficos de archivos de configuración de Spring
    - herramientas de desarrollo para Spring Web Flow y Spring Batch
    
STS puede descargarse desde aquí como un IDE completo, pero también puede integrarse sobre una instalación previa de Eclipse. Sobre esta última opción trata este artículo.



INSTALANDO ECLIPSE
Lo primero que necesitamos es tener Eclipse instalado en nuestro equipo. La versión que vamos a utilizar es la última en el momento de escribir este artículo: Eclipse IDE 3.6 for Java EE Developers (nombre en clave Helios), la cual incluye todas ...



Spring Expression Language
Publicado el 20 de Agosto de 2010

Desde la versión 3.0, Spring ofrece un lenguaje dinámico llamado Spring Expression Language (SpEL). SpEL permite la consulta y manipulación de objetos en tiempo real (de manera similar a Expression Language en JSP/JSF) además de otras interesantes características como la invocación de metodos. SpringSource Tool Suite (una variación de Eclipse altamente customizada para trabajar con Spring) provee soporte para SpEL, permitiendo autocompletado de expresiones además de otras caracteristicas realmente útiles para trabajar con el lenguaje. SpEL puede ser utilizado:

    - de forma nativa en una aplicación Spring (insertado en archivos XML o anotaciones)
    - a través de un parser, creando explicitamente toda la infraestructura necesaria para interpretarlo



REQUISITOS
Si usas Maven en tus proyectos, la única dependencia necesaria para usar empezar a usar SpEL es:

<dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-context</artifactId>
     <version>3.0.3.R...



Introducción a Groovy (V)
Publicado el 05 de Agosto de 2010

En esta quinta entrega del tutorial de Groovy, vamos a ver el concepto de Metaprogramación. Mediante metaprogramación podemos escribir código que genera o modifica otro código (por ejemplo otros programas) o incluso a si mismos (código que tiene la habilidad de cambiar su comportamiento en tiempo de ejecución). Esto nos permite, entre otras cosas, manejar situaciones que no estaban previstas cuando se escribió el código, y sin necesidad de recompilar.



5.1 UN POCO DE REFLEXIÓN
La metaprogramación en Groovy, al igual que en Java, se basa en la capacidad del lenguaje llamada Reflexión. Mediante reflexión podemos conocer los miembros de una clase:


String.interfaces.each { println it }
String.constructors.each { println it }
String.methods.each { println it }


Cada una de las lineas del código anterior muestran los interfaces que implementa una clase, sus constructores y sus métodos, respectivamente. Para los dos últimos casos, se muestran solo los miembros públicos (public). Así mismo, todo objeto en Groovy tiene un método getClass() que devuelve el objeto Class...



Introducción a Groovy (IV)
Publicado el 31 de Julio de 2010

En esta cuarta entrega del tutorial de introducción a Groovy vamos a ver que son y como funcionan los POGO's (Plain Old Groovy Objects). Los POGO's son el sustituto natural de Groovy a los POJO's de Java, tomando toda la funcionalidad y potencia de Groovy para construir objetos.



4.1 POGO's
Los POGO's, al igual que los POJO's en Java, son clases simples que no dependen de un framework en especial (cita de la Wikipedia). Esto es, clases que no heredan ni implementan ninguna clase/interface de un API en concreto y externo a nuestra aplicación, y que por tanto pueden ser reusados una y otra vez entre aplicaciones. Este concepto de reuso de clases es uno de los pilares básicos de la programación orientada a objetos. A efectos practicos, un POGO es una clase normal y corriente:


class Libro {
    String titulo
    String autor
    int numPaginas
}


La clase del código anterior define un libro con tres atributos que pueden ser leidos/escritos directamente, ya que Groovy generará los método...



Introducción a Groovy (III)
Publicado el 12 de Julio de 2010

En los capítulos 1 y 2 del tutorial de Groovy vimos los conceptos básicos del lenguage, así como algunas estructuras de datos. En esta tercera entrega vamos a ver dos tipos nativos del lenguaje: Rangos y Colecciones.



3.1 RANGOS
Los rangos son un tipo de datos nativo, derivado de List, que nos permite definir una lista de valores secuenciales. Veamos el ejemplo mas simple:


def rango = 1..5
def rango = 1..<5


El primer rango arriba definido es una lista con los valores del 1 al 5, ambos inclusive. El segundo rango contiene una lista con los valores del 1 al 4, pues el último valor ha sido excluido. Ahora que sabemos como definir un rango, podemos iterarlo llamando al método each(), el cual acepta un closure como argumento (recuerda que si el único o último parámetro de un método es un closure, podemos definir dicho closure a continuación de la llamada al método):


rango.each {
    println it
}

<...



Feeds RSS
Publicado el 01 de Julio de 2010

Como anuncié hace unos dias en el blog, he estado preparando un sistema de feeds RSS para que podáis seguir más facilmente la actividad de la web. He tenido que actualizar la aplicación Spring MVC con la que gestiono el blog para que permitiera la publicación de las entradas también en formato RSS, publicación que es llevada a cabo en última instancia a traves de una sencilla clase (menos de 25 lineas de código) escrita en Groovy. Podéis suscribiros al blog a traves de la url http://www.davidmarco.es/rss/blog.xml, o pinchando en el icono que encontrareis en la barra de direcciones de vuestro navegador. Por último, pero no por ello menos importante, quiero agradecer a Felix Ernesto Orduz la idea, hace ya muchas semanas, de este feed RSS.



Introducción a Groovy (II)
Publicado el 30 de Junio de 2010

En esta segunda entrega del tutorial de introducción a Groovy vamos a ver como trabajar con cadenas de texto, así como el concepto de Closure. En la primera entrega vimos las características más basicas del lenguaje, así como las reglas de sintaxis. Esta entrega es una continuacíon de la anterior, pues muestra caracteristicas del lenguaje que son comunmente utilizadas.



2.1 TIPOS DE CADENAS DE TEXTO
Groovy soporta de forma nativa tres tipos de cadenas de texto: Strings, GStrings y Heredocs. Cual usar en cada momento es una decisión que surgirá de las necesidades de nuestro código, aunque en última instancia todas ellas son intercambiales por cualquier otra.



2.2 STRINGS
Un String en Groovy es similar a un String en Java, con la particularidad de que puede ser construido usando tanto comillas simples como dobles:


def cadena1 = "Esto es válido en Java y Groovy"
def cadena2 = 'Esto es válido solo en Groovy'

println cadena1.class
println cadena2.class


Si observamos la salida de ambas sentencias println...



Introducción a Groovy (I)
Publicado el 20 de Junio de 2010

Con este entrega comienza una serie de artículos de introducción a Groovy, paso previo a la próxima publicación del tutorial de Grails. El tutorial estará formado por lo siguientes capítulos (podrían ser más en el futuro):

1. Introducción a Groovy, reglas y características básicas del lenguaje
2. Strings, GStrings y Closures
3. Rangos y Colecciones
4. POGO's
5. Metaprogramación
6. Usando el API (manejo de archivos, manejo de xml, groovelets)

Para poder seguir el tutorial es necesario tener instalado Groovy en tu equipo, misión que puedes llevar a cabo de forma sencilla siguiendo los pasos del siguiente anexo. Podrás acceder al resto de artículos de esta serie desde la pagina de tutoriales.



1.1 PERSPECTIVA GENERAL
Groovy es un lenguaje dinámico, orientado a objetos, muy intimamente ligado a Java. EL 99% del código Java existente puede ser compilado mediante groovy, y el 100% del código Groovy es convertido en bytecode Java, y ejecutado en tu JVM de manera natural. Groovy simp...



Novedades
Publicado el 19 de Junio de 2010

Hola a todos, desde mi última entrada en el blog (hace más de 3 meses) he estado muy liado con temas de trabajo, y la verdad es que tampoco tenia mucho material nuevo para mostrar. Sin embargo, en las últimas semanas he venido preparando un tutorial de introducción a Groovy, como siempre en varias entregas (como mínimo 6, más un anexo de puesta en marcha de un entorno de desarrollo, como ya se hizo con el curso de JPA) que precederá a un tutorial de introducción a Grails, un potentisimo framework para la creación de aplicacionés web. En unos dias comenzaré a publicar todo este material.

Al margen de esto, las visitas a la web se han mantenido constantes semana tras semana, superando las 30.000 a fecha de hoy. No dejo de sorprenderme por el enorme interés que habéis mostrado por la página, y de nuevo (y no me cansaré nunca) os doy las gracias. Espero que los próximos contenidos que publique os resulten tan útiles e interesantes como los anteriores.

Por último, y a petición de algunos de vosotros, es muy probable que en las próximas semanas implemente un sistema de feeds RSS, de maner...



10.000 visitas
Publicado el 07 de Marzo de 2010

Este fín de semana la web ha superado las 10.000 visitas desde su puesta en marcha, con casi 30.000 páginas vistas desde más de 30 paises. Estas cifras eran para mi un sueño cuando empecé a publicar contenidos hace seis semanas.

No puedo decir más que... ¡¡10.000 gracias a todos!!



Finalizada la traducción del tutorial básico de Hibernate
Publicado el 28 de Febrero de 2010

Ya está disponible la traducción completa del tutorial básico de Hibernate. Espero que os resulte tan util como anteriores trabajos publicados en esta web. El código fuente para seguir el tutorial puedes encontrarlo en la última distribución estable de Hibernate, dentro del directorio 'project/tutorials/web'.



Introduccion a JPA (IV)
Publicado el 25 de Febrero de 2010

En esta último artículo del tutorial de introducción a JPA, vamos a presentar JPQL (Java Persistence Query Language - Lenguaje de Consula de Persitencia en Java), un potente lenguaje de consulta orientado a objetos que va incluido con JPA. Aunque no es imprescindible, es recomendable tener unos conocimientos mínimos de lenguaje SQL. Si no es tu caso, algunos conceptos de JPQL te pueden parecer extraños. Además, independientemente del uso de sistemas ORM como JPA, siempre es aconsejable saber realizar consultas en una base de datos mediante SQL nativo.

En el primer y segundos artículos, vimos como configurar nuestras entidades para el mapeo. En el tercer artículo, vimos la manera de realizar operaciones de persistencia a través de la interface EntityManager, además de como definir nuestros propios métodos callback y clases listener. Ahora es el momento de potenciar las capacidades de consulta de nuestra aplicación.



4.1 JPQL BÁSICO...



Liberacion de Hibernate 3.5-CR2 y documentacion en español
Publicado el 25 de Febrero de 2010

Esta misma noche se ha liberado la version 3.5 Candidate Release 2 de Hibernate, que parece ser la ultima CR antes de la liberacion del producto final. La sorpresa (por otro lado muy esperada) es que viene con el 99% de la documentacion en español traducida (si no me equivoco gracias al tremendo esfuerzo de Angela Garcia, de RedHat), de manera que la traduccion que yo mismo comence hace unas pocas semanas ya no tiene ningun sentido. Solo publicare el material referente al tutorial del capitulo 1, el cual puedes encontrar aqui.

Podeis descargar Hibernate 3.5-CR2 desde aqui y dentro del archivo comprimido encontrareis la documentacion en español en el directorio 'documentation\manual\es-ES\'.



Una tremendo classpath
Publicado el 25 de Febrero de 2010

Actualmente uno de los libros que estoy leyendo es 'Alfresco 3 Enterprise Content Management Implementation', escrito por Munwar Shariff y publicado por Packt Publishing. El libro (muy bueno por cierto) contiene la llamada desde linea de comandos a la JVM mas larga que mis ojos hayan podido ver jamas:


java -classpath classes;lib\alfresco-repository.jar;lib\alfresco-linkvalidation.jar;lib\xercesImpl-2.8.0.jar;lib\alfresco-remote-api.jar;lib\alfresco-vti.jar;lib\alfresco-web-client.jar;lib\myfaces-api-1.1.5.jar;lib\alfresco-rm.jar;lib\xmlrpc.jar;lib\jcr-1.0.jar;lib\rhino-js-1.6R7.jar;lib\spring-ws-1.5.0.jar;lib\subetha-smtp.jar;lib\alfresco-jlan-embed.jar;lib\JMagick.jar;lib\alfresco-mbeans.jar;lib\hibernate-3.2.6-patched.jar;lib\jbpm-jpdl-3.2.2.jar;lib\jbpm-identity-3.2.2.jar;lib\springmodules-jbpm31.jar;lib\spring-2.0.6.jar;lib\alfresco-core.jar;lib\lucene-analyzers-2.1.0.jar;liblucene-snowball-2.1.0.jar;lib\alfresco-core.jar;lib\spring-2.0.2.jar;lib\jibx-run.jar;lib\xpp3-1.1.3_8.jar;lib\commons-logging-1.1.jar;lib\ehcache-1.4.1-patched.jar;lib\dom4j-1.6.1.jar;lib\acegi-security-0.8.2_patched.jar;lib\hibernate-3.2.1-patched.jar;lib\quartz-1.6.0.jar;lib\pdfbox-0....



Persistencia Relacional con Hibernate - ACTUALIZADO
Publicado el 11 de Febrero de 2010

Despues de traducir a español el tutorial Spring MVC paso a paso muchos me habeis pedido la traduccion de documentacion relacionada con Hibernate. La documentacion oficial de Hibernate es tan completa como extensa, por lo que descarte la idea en un principio. Sin embargo, y gracias a vuestro apoyo y el gran interes que mostrais por Hibernate, he decidido comenzar la traduccion del manual de referencia Hibernate Reference Documentation, que podeis encontrar en su version original en ingles aqui. Este manual comienza con un pequeño tutorial construido con Hibernate y Maven, continua con un completo analisis de mapeo relacional con Hibernate en su version 3.3.2 y finaliza con diversos ejemplos reales de aplicaciones Hibernate.

Como en ocasiones anteriores, el formato sera HTML y el diseño el mismo que la version original. Completar la traduccion del tutorial (que consta de 25 secciones) va a ser una empresa muy grande, que espero tener terminada en un plazo...



Introducción a JPA (III)
Publicado el 10 de Febrero de 2010

En esta tercer artículo del tutorial de introducción a JPA, vamos a ver como realizar persistencia, lo que nos permitirá entender mejor que son los métodos callback y las clases listener. También introduciremos el concepto de transacción.

Hasta ahora, todo el material que hemos visto en tanto en el primer como en el segundo artículo, se ha limitado a teoría sobre la forma de declarar y configurar nuestras entidades para su mapeo. En esta parte sin embargo, además de los conceptos teóricos que vamos a analizar, vamos a tener la oportunidad de realizar dicho mapeo con una base de datos real, y completar así el concepto de mapeo relacional de objetos (ORM). Por esto, es muy aconsejable que dispongas de un entorno de desarrollo compatible con JPA. Si no es tu caso, puedes preparar uno de manera sencilla accediendo al anexo que acompaña a este tutorial. Los archivos de configuración que veremos en este capítulo están adaptados a la configuración de...



Spring MVC Paso a Paso en PDF
Publicado el 02 de Febrero de 2010

Gracias al esfuerzo de David Villacé, el tutorial Spring MVC Paso a Paso ahora esta tambien disponible en formato PDF. Podeis descargarlo desde aqui y desde el indice de la version HTML (Anexo C).



Codigo fuente del tutorial Spring MVC paso a paso y revision final del documento
Publicado el 31 de Enero de 2010

A peticion de algunos de vosotros, he subido a la web el proyecto completo para Eclipse del tutorial Spring MVC paso a paso. El proyecto incluye todos los archivos de codigo fuente, scripts y librerias necesarias. Podeis descargarlo desde aqui y desde el indice del tutorial (bajo el Anexo A). Es importante que leais el archivo LEEME.txt que encontrareis en el interior del archivo descargado.

Ademas he solucionado algunos errores menores de traduccion, parte del codigo fuente de la version original que era incorrecto o estaba incompleto y algunos links que todavia redirigian a la version inglesa.



Introduccion a JPA (II)
Publicado el 30 de Enero de 2010

En este segundo artículo del tutorial de introducción a JPA, vamos a ver dos conceptos relacionados con ORM que merecen un artículo propio: asociaciones y herencia.



2.1 ASOCIACIONES
En el artículo anterior, vimos como realizar ORM basico, y una de las opciones que JPA nos permite es la de mapear colecciones de objetos simples (ver seccion 1.8 COLECCIONES BÁSICAS). Sin embargo, cuando queremos mapear colecciones de entidades, debemos usar asociaciones. Estas asociaciones pueden ser de dos tipos:

    - Asociaciones unidireccionales
    - Asociaciones bidireccionales
    
Las asociaciones unidireccionales reflejan un objeto que tiene una referencia a otro objeto (la información puede viajar en una dirección). Por el contrario, las asociaciones bidireccionales reflejan dos objetos que mantienen referencias al objeto contrario (la información puede viajar en dos direcciones). Además del concepto de dirección, existe otro concepto llamado cardinalidad, que determina cuantos objetos pueden haber en cada extremo de ...



Finalizada la traduccion del tutorial Spring MVC Paso a Paso
Publicado el 29 de Enero de 2010

Por fin, y cumpliendo con la fecha que me propuse hace algunas semanas, he terminado de traducir el tutorial Spring MVC Paso a Paso, publicado originalmente por SpringSource. He intentado realizar la traduccion de la manera mas precisa posible a pesar del hecho de que el documento original esta escrito en un lenguage muy directo, y que algunos terminos y conceptos son dificiles de expresar en español. Podeis enviarme las correcciones y sugerencias que creais oportunas, si asi podemos mejorar el documento y hacerlo aun mas accesible.

Espero que este tutorial os resulte util y ameno, y que entreis con fuerza en el framework Spring MVC.



Spring 2GX Day en Madrid
Publicado el 24 de Enero de 2010

El proximo 19 de Febrero se celebra el Madrid el Spring 2GX Day, el evento de Spring, Groovy y Grails mas importante de España. A lo largo de todo un dia podras participar en charlas y talleres, asi como conocer a la comunidad Spring española. Puedes entontrar toda la informacion relacionada en la web del evento. La inscripcion es totalmente gratuita.



Introducción a JPA (I)
Publicado el 24 de Enero de 2010

Con esta entrada se da comienzo a una serie de cuatro artículos que introducen JPA en su versión 2.0. En ellos vamos a ver, de forma introductoria, como realizar ORM de forma sencilla mediante JPA. Los artículos seguirán este orden:

1. ORM Básico
2. Asociaciones y Herencia
3. Persistencia, Transacciones, Callbacks y Lísteners
4. JPQL

Tanto los cuatro artículos del tutorial, así como el anexo que los acompaña (donde se explica como poner en marcha un entorno de desarrollo para probar todo el código que se irá mostrando), están disponibles en la página de tutoriales.



1.1 INICIO
En Java solucionamos problemas de negocio a través de objetos, los cuales tienen estado y comportamiento. Sin embargo, las bases de datos relacionales almacenan la información mediante tablas, filas, y columnas, de manera que para almacenar un objeto hay que realizar una correlación entre el sistema orientado a objetos de Java y el sistema relacional de nuestra base de datos. JPA (Java Persistence API - API de Persistencia en Java) es una abstracción sobre JDBC que nos permite realizar dicha correlación de form...



Spring MVC Paso a Paso
Publicado el 22 de Diciembre de 2009

Actualmente, en mi tiempo libre, me encuentro traduciendo el tutorial Developing a Spring Framework MVC Application Step by Step. En este tutorial se muestra de forma simple como desarrollar una aplicacion de tipo MVC utilizando Spring MVC. A pesar que dicha aplicacion es muy basica, se muestra la potencia y funcionalidad del framework, y es un muy buen punto de partida para comenzar a usar tanto el modelo MVC (Model-View-Controller) como Spring Framework en su version 2.5. La traduccion estara finalizada en Enero de 2010 y podreis acceder a ella desde aqui.

Si encontrais alguna errata tipografica o de traduccion, podeis comunicarmelo mediante la pagina de contacto. El codigo es el mismo que en la version original, por lo que se asume que funciona correctamente. Espero y deseo que este fantastico tutorial os sea de gran utilidad.



Bienvenido
Publicado el 20 de Diciembre de 2009

Bienvenidos a mi blog personal sobre programacion. Todo el sistema de blogging lo estoy diseñando y programado por mi mismo, utilizando Java, Spring Framework e Hibernate. Las entradas se encuentran respaldadas en una base de datos, y el acceso a dichas entradas, asi como la navegacion por ellas, estan programados en PHP, tambien por mi mismo. Mas adelante añadire mas funcionalidades a esta navegacion (como un sistema de archivo para consultar todas las entradas publicadas, un sistema de busqueda, etc). Mi intencion es desarrollar toda la aplicacion con software 100% escrito por mi, creando las librerias necesarias para ello y adaptando la funcionalidad al diseño de la web. Asi pues, este blog es un sistema (todavia) basico, pero completamente funcional.

La idea de desarrollar enteramente el blog surgio de la imposibilidad de encontrar una herramienta de blogging que se adaptara a mis necesidades, con lo cual decidi construir mi propio sistema de blogs. Aunque aun falta mucho trabajo por hacer para que presente el aspecto que pretendo, espero que disfrutes de el tanto como yo disfruto programandolo.