Aquí os dejo las entradas mejores que he visto por vuestros blogs ...
Atención a los comentarios que he realizado sobre las mismas!
las blog muy buenas!
http://www.noelia-java.blogspot.com/
viernes, 18 de abril de 2008
lunes, 25 de febrero de 2008
hibernate join con hql devuelve un List especial!
cuando dentro de una query hql utilizamos el join para relacionar dos o más entidades persistentes, cuando devolvemos el resultado de la busqueda -> list() nos encontramos con un objeto del tipo List especial!
jueves, 21 de febrero de 2008
martes, 12 de febrero de 2008
Hibernate asociaciones-relaciones
Documentación de configuración de relaciones de entidades en hibernate utilizando xml
http://www.hibernate.org/hib_docs/reference/en/html/associations.html
http://www.hibernate.org/hib_docs/reference/en/html/associations.html
miércoles, 6 de febrero de 2008
lunes, 4 de febrero de 2008
AppFuse i18n (Internationalization)
Para que nuestra aplicación appfuse pueda utilizarse en varios idiomas, tenemos que definir las posibles claves en el archivo /src/main/resources/messages.properties en forma de clave/valor.
Ejemplo:
webapp.name=AppFuse Light
Cada idioma nuevo deberá tener un messages.properties diferente, de forma que si tenemos idioma inglés deberemos tener messages_en.properties, y en español messages_es.properties
Después desde nuestro jsp podemos referenciar dicha clave con el objeto message
fmt:message key="webapp.name" y según la configuración del navegador de usuario que consulte la aplicación (firefox>preferencias>avanzado>general>idiomas>elegir) obtendrá el idioma correspondiente
Toto esto funcionará si nuestro framework está bien configurado, es decir si el archivo /src/main/webapp/WEB-INF/dispatcher-servlet.xml ha declarado el bean:
bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource" con el basename=messages
Ejemplo:
webapp.name=AppFuse Light
Cada idioma nuevo deberá tener un messages.properties diferente, de forma que si tenemos idioma inglés deberemos tener messages_en.properties, y en español messages_es.properties
Después desde nuestro jsp podemos referenciar dicha clave con el objeto message
fmt:message key="webapp.name" y según la configuración del navegador de usuario que consulte la aplicación (firefox>preferencias>avanzado>general>idiomas>elegir) obtendrá el idioma correspondiente
Toto esto funcionará si nuestro framework está bien configurado, es decir si el archivo /src/main/webapp/WEB-INF/dispatcher-servlet.xml ha declarado el bean:
bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource" con el basename=messages
logging en appfuse (spring)
Para imprimir por consola utilizando el Log de apache
- Para imprimir por consola utilizando el objeto
- protected final Log logger = LogFactory.getLog(getClass());
- hay que importar en nuestro archivo las siguientes clases:
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- utilizarlo dentro de nuestro código sustituyendo las lineas
- System.out.println("mensaje"); por ...
- logger.debug("userId set to: " + user.getId(); , donde el objeto logger nos permite indicar varios niveles de logging (DEBUG, INFO, WARN, ERROR)
- configurar el archivo /src/main/resources/log4.xml para indicarle los niveles que queremos imprimir en consola
Etiquetas:
AppFuse,
log4,
SpringFrameWork
Instalar appfuse-light1.8 y utilizar maven y ant
https://appfuse-light.dev.java.net/
- leerse el QuickStart de la aplicación
- descargar:appfuse-light-all-1.8.1.zip
- descomprimir archivo en workspace de eclipse
- abrir consola cd en el directorio recien creado (descomprimido)
- configurar maven para que trabaje con repositorio de red local
- editar archivo /pom.xml sustituir http://download.java.net/maven/2 por http://...
- ejecutar: ant new ( cuando solicite el nombre aplicacion insertar el deseado)
- Para generar el proyecto de eclipse:
- mvn eclipse:eclipse
- mvn eclipse:eclipse -DdownloadSources=true
- mvn -Declipse.workspace=
eclipse:add-maven-repo - Crear un nuevo proyecto de eclipse con el nombre que le hemos indicado en la instalación y con el path al workspace/nombreapp
- Preparar el despliegue de la aplicación con el tomcat de nuestro equipo y la conexion a datos(mysql):
- editar /build.xml propiedad server.home
- editar src/main/resources/jdbc.properties user y password
- Utilizar el archivo ant (build.xml) de nuestro proyecto para construir y desplegar
- DeployWar
jueves, 31 de enero de 2008
EasyMock es una librería autónoma
Aclaración sobre EasyMock:
EasyMock se puede utilizar con Junit o TestNG, en un entorno de pruebas, o inclusosi se le echa imaginación se puede utilizar en la aplicación es decir en el src
EasyMock se puede utilizar con Junit o TestNG, en un entorno de pruebas, o inclusosi se le echa imaginación se puede utilizar en la aplicación es decir en el src
Anotaciones y AOP
Una aclaración sobre las anotaciones en AOP: El AOP se puede aplicar sin anotaciones, en este caso le indicaríamos al "contenedor" las especificaciones relacionadas con los aspectos a través de ficheros XML que tendría que parsear y traducir.
Con las anotaciones queda más claro para el programador, ya que la información relativa a aspectos/interceptores queda en el mismo fichero java, en vez de utilizar otro fichero (XML) situado en otro directorio de la aplicación
En la versión 2 de EJB todo los componentes se marcaban con XML, y toda la aplicación estaba interceptada, es decir se podía aplicar AOP
Con las anotaciones queda más claro para el programador, ya que la información relativa a aspectos/interceptores queda en el mismo fichero java, en vez de utilizar otro fichero (XML) situado en otro directorio de la aplicación
En la versión 2 de EJB todo los componentes se marcaban con XML, y toda la aplicación estaba interceptada, es decir se podía aplicar AOP
martes, 29 de enero de 2008
viernes, 25 de enero de 2008
Los blogs del curso y lo que le parecen al profe!
- http://cea-jesussubires.blogspot.com/
- en desarrollo progresivo!
- hay que seguir trabajando las entradas (con ejemplos en repositorio) para asimilarlas cada día mejor (aunque van bien), me refiero a herencia, easymock ...
- me gusta que las entradas son cortas pero con lo que hemos dado en clase mejor que largas investigaciones del universo java
- http://www.noelia-java.blogspot.com/
- promete!
- está bien de entradas, y de "inspiración" (intenta personalizar la teoría), cuando acabe el curso este blog promete!
- http://cea-roberto-roldan.blogspot.com/
- Muy bien!:
- la información justa para recordar lo importante de las explicaciones del curso
- se utilizan los recursos/herramientas de documentación como delicious
- se aportan enlaces de interes
- el estilo es distendido
- claridad en describir lo especial de cada herramienta tratada en el curso
- http://cea-mariagd.blogspot.com/
- en buen camino! aunque todavía falta un poquillo ...
- está más o menos bien lo que hay en el blog, sobre todo el lenguaje utilizado y que se refiere al curso que estamos dando y no al universo frikie de java,wikipedia,...
- http://cea-manuelperujo.blogspot.com/
- en camino!
- creatividad "gráfica" y humor no falta y hay esperanza de que en breve este blog/programador empieze a ver la luz ...
- hay que intentar personalizar el lenguaje y contarlo con otras palabras, no hace falta intentar explicar el ¿qué es una herramienta? sino el ¿para qué se usa y desde cuándo?
- http://cea-j2ee-paco.blogspot.com/
- hay que ponerse las pilas!
- http://cea-fidelmazo.blogspot.com/
- En camino!
- la intención es buena, queda entender un poco más las herramientas y los contextos donde se utilizan las herramientas, que se supone que es el objetivo del curso y vamos por la mitad ...
- el esfuerzo en concretar con palabras las herramientas del curso tendrá sus resultados ...
- http://cea-manolobe.blogspot.com/
- triple pirueta
- se reconoce el interés en plasmar lo que se desarrolla en clase aunque hay que pulir algunas cosas
- estilo distendido e intentando teorizar: está muy bien arriesgarse aunque haya que corregir algunos conceptos, (que en teoría para eso está el resto del curso)
- http://cea-pacogalvez.blogspot.com/
- Muy bien!, pero ...
- lenguaje demasiado especializado (en teoría tenía que entenderse por una persona no demasiado docta en la materia)
- demasiada información relativa a investigación en relación a los ejemplos personalizados de cada herramienta tradada en el curso
- http://cea-ruben.blogspot.com/
- Ánimo !
- falta que utilices el blog para que pongas lo que sabes! sobre todo para extenderse un poquito, los diagramas son un poco "espaciales" no?
- lo del chorizo engancha!
- http://cea-elmrabet.blogspot.com/
- la intención es buena!, pero ...
- hay que resumir lo que damos en clase!
- el código java de ejemplo al repositorio, please!
- faltan algunas entradas ...
- http://cea-victorortega.blogspot.com/
- Muy bien!
- Se nota que se entienden bien los contenidos y las herramientas, solo faltaría un poco más de desarrollo de la información para que otra persona que consulte el blog pueda utilizarlo como documentación (aunque ya casi se podría, ya que la linea es buena), es decir incuir links a otras páginas, recursos, algunos ejemplos más ...
- genial como archivo de todo lo interesante (ej: ciclo de vida, seam-gen ...) que se dice en el curso
- http://cea-josedominguez.blogspot.com/
- un blog camino de resucitar!
- hay entradas más encaminadas que otras, pero falta información con palabras de andar por casa para explicar conceptos de andar por casa ...
- easymock y testng ¿cuándo se rellenan los ejemplos ?
- el repositorio ...
- http://www.cea-manunuwi.blogspot.com/
- Muy bien! aunque todavía faltan algunas entradas (hay que currárselo un poco más!)...
- Genial los inicios de documentación en video sobre refactorización
- OK la comprensión de herramientas expuestas en el blog
- Informaciones pequeñas pero claras
- http://cea-tamara.blogspot.com/
- que lista (es la wikipedia y derivados)!
- hay que recontarlo con nuestras palabras! y que sea lo que se trata e clase, hay que intentar hacer resumenes diarios ¿vale?
- la foto es muy chula!
- http://cea-raul.blogspot.com/
- donde hay estilo ...
- muy bien como acercamiento (personal) a los conceptos fundamentales del java, (aunque ya digo que son personales) . Hay que teorizar para poder acertar, entre tanto el menda intentará corregir
- falta mucha info eh!
jueves, 24 de enero de 2008
Crear un repositorio en google y acceder desde eclipse
Para utilizar el subversión de google (gratuito!) hay que seguir los siguientes pasos:
- entrar en la dirección http://code.google.com/hosting/
- click en new proyect
- rellenar todos los campos que nos pide el formulario de proyecto nuevo
- click en ficha source y desde el apartado command-line access copiamos la dirección https, ej: https://nombreDeNuestroProyecto.googlecode.com/svn/trunk/
- hacemos click en googlecode.com password y obtendremos nuestro password
- Desde eclipse
- menu window>show view>other>svn repository
- en la ventana de svn repository botón derecho del ratón y seleccionar nuevo repositorio location.
- url=https://nombreDeNuestroProyecto.googlecode.com/svn/trunk/
- usuario=cuentaUsuarioGMAIL (no incluir @gmail.com, solo nombreUsuario)
- clave=la generada anteriormente en googlecode.com password
- para conectar nuestro código con subversion, botón derecho sobre la carpeta de proyecto a controlar>Team>Share Project
- Cada vez que queramos subir nuesrtro código al subversion: botón derecho>team>commit
- Cuando queramos bajarnos los archivos o modificaciones del subversion a nuestro equipo: botón derecho>team>update
miércoles, 23 de enero de 2008
martes, 22 de enero de 2008
viernes, 18 de enero de 2008
Interfaces e implementaciónes
En esta entrada se pretende introducir las interfaces desde los siguientes puntos de vista prácticos:
interface Futbolista{
public Balon pasaBalon();
}
interface Bailarin{
public cambiaPareja(Bailarin nuevo);
}
interface Escalador{
public void cambiaRoca();
}
class Persona implements Futbolista, Bailarin, Escalador{
... implementar metodos
}
class Sevillano extends Persona{
... implementar metodos
}
class Suizo extends Persona{
... implementar metodos
}
- ¿para qué sirven o qué ventajas aportan?
- Para aplicar polimorfismo: es decir para que un determinado objeto, en una determinada situación pueda tratarse de una forma u otra. En el ejemplo anterior, si nuestro objeto persona se utiliza en un ámbito relacionado con el futbol, es mejor tratarlo a través de su interface de Futbolista, de esa forma en el ámbito o situación de un programa de futbol, nuestro objeto no mostrará a los otros objetos relacionados sus metodos relacionados con Bailarin o con Escalador.
- Esto lanzaría error: Futbolista f=new Persona(); f.cambiaPareja(parejaNueva);
- El polimorfismo se lleva a cabo a través del casting:
- Persona p=new Persona(); Futbolista f=(Futbolista)p;
- Para generar código robusto o lo que es lo mismo para proporcionar independencia a los objetos. Esto quiere decir que si cambiamos una clase de nuestro código, el código afectado por ese cambio en teoría debe corresponderse solo a esa clase (y su clase de prueba). Lo contrario a un programa robusto es un programa frágil, es decir aquel que sufre cualquier modificación realizada en alguna de sus partes como si se realizara en todo el sistema.
- falta incluir diagrama UML!!
Stateful and Stateless (con estado y sin estado )
En el diseño OOP podemos distinguir entre los objetos con [mantenimiento de] estado y sin [mantenimiento de] estado.
El estado se refiere al estado de la información, y la información recaería en las propiedades de nuestros objetos.
En el siguiente ejemplo, creamos un nuevo objeto de la clase Color, y a continuación le asignamos el valor "verde". Este objeto (Stateful) mantiene la información del valor de color en la variable "valor".
Sin embargo en el ejemplo a continuación se muestra un objeto (Stateless) sin estado, es decir no mantiene ninguna información en sus propiedades o atributos, de hecho no tiene propiedades o atributos, únicamente métodos
Los objetos con estado[Stateful] suelen estar relacionados con los objetos que maneja el usuario del programa, y suelen mantener las decisiones(opciones) del usuario durante un proceso o una sesión de uso. Ejemplos de mantenimiento de estado:
El estado se refiere al estado de la información, y la información recaería en las propiedades de nuestros objetos.
En el siguiente ejemplo, creamos un nuevo objeto de la clase Color, y a continuación le asignamos el valor "verde". Este objeto (Stateful) mantiene la información del valor de color en la variable "valor".
public class Color{
String valor;
}
Color color1=new Color();
color1.valor="verde";
Sin embargo en el ejemplo a continuación se muestra un objeto (Stateless) sin estado, es decir no mantiene ninguna información en sus propiedades o atributos, de hecho no tiene propiedades o atributos, únicamente métodos
public class ServicioPintura{
public void cambiaColor(Mesa mesa, Color color){
mesa.setColor(color);
}
}
Los objetos con estado[Stateful] suelen estar relacionados con los objetos que maneja el usuario del programa, y suelen mantener las decisiones(opciones) del usuario durante un proceso o una sesión de uso. Ejemplos de mantenimiento de estado:
- los diferentes pasos a seguir para registrarse en una página web
- un carrito de compra
- petición RSS
- web services
- Todos los servicios que veremos en el curso y como el anterior ejemplo: ServicioPintura
jueves, 17 de enero de 2008
Suscribirse a:
Entradas (Atom)