CMP Entity Bean con MySql
Como comentamos en el anteriortutorial, la persistencia de un Entity Bean
puede ser gestionada por el contenedor.
En este tutorial vamos a ver los pequeños cambios que debemos realizar sobre
nuestro EJB, del mismo modo que os vamos a enseñar el truquillo para poder usar
la implementación de referencia de J2EE de Sun (J2EE RI) para usar MySql como
base de datos.
Como podemos suponer, pocas cosas deben cambiar… aunque hay algunas
sutilizas.
Lo que es realmente importante, es la definición del despliegue
Definición de interfaz Remoto
El único cambio, que además tiene mucho sentido, es la eliminación de la
definición del metodo setId.
Digo que tiene sentido porque cambiar la clave primaria normalmente requiere de otras precauciones.
|
Definición del Interfaz Home
La definicón del interfaz Home, en este caso cambia en el tipo de retorno
del metodo findByPrimaryKey
|
Implementación del Bean
Hay que realizar una definición de métodos abstractos
public
abstract String getConcepto();
public abstract void setConcepto(String sConcepto);
public abstract String getFecha();
public abstract void setFecha(String sFecha);
public abstract String getDireccion();
public abstract void setDireccion(String sDireccion);
public abstract String getTitular();
public abstract void setTitular(String sTitular);
public abstract String getCif() ;
public abstract void setCif(String sCif);
public abstract String getId();
public abstract void setId(String iId);
public abstract double getCantidad();
public abstract void setCantidad(double dCantidad);
Para asignar los valores del Bean, debemos invocar a los metodos, en el
ejbCreate
Por último, lo único que queda por hacer en el código, es borrar el
código que gestiona la persistencia.
|
Despliegue de la aplicación
Añadimos el EJB como hicimos con los anteriores
En la lengüeta de Entity asignamos un nombre para nuestras consultas EJB
(MICMP). Deberia ser un poco más estricto en la notación pero asi se ve mejor
…. 😉
Al pinchar el botón de Deployment Settings, aparece la configuración de la
base de datos.
Pulsamos Database Settings …
Asignamos el nombre JNDI de la base de datos (ver más abajo)
Pincharemos el botón de generar Default SQL
Y ya tenemos lista para funcionar nuestra aplicación. Ahora vamos a
configurar el entorno para poder usar MySql
(en Windows)
Registro de MySql
Pinchamos en la opción de configurar el servidor
Registramos un nuevo driver y nombre JNDI para la base de datos que queremos
utilizar
Hay un problema al hacer esto…. y es que las consultas SQL que genera el
CMP entity Bean, tienen dobles comillas.
Esto hace que falle…. el truco esta en cambiar la configuración de MySql
añadiendo un parámetro sql_mode=ansi
Dependiendo del sistema, se hace de un modo y otro. Nosotros como tenemos
instalado MySql como un servicio en Windows, vamos a cambiar el fichero de
configuración .
Ojo con ponerlo donde esta especificado y no meter espacios entre medias (en
el fichero My.ini)
|
Para que J2EE RI encuentre el driver JDBC de MySQL, hay que descargarselo de
internet … (podeis ver el tutorial dedicado a su instalación yprueba) y
modificar el fichero userconfig.bat
Debemos añadir el trayecto donde lo hemos instalado
|
Si ahora ejecutamos un código para probar nuestro EJB CMP…. hemos
cambiado en EJB de sesión …..
|
Y tambien un servlet
|
Si consultamos la BBDD, veremos que se ha creado la tabla e
insertados los elementos.
Podeis descargar todo elcódigo aquí …
Ya hemos cubierto otra fase ….. ahora tengo otra pregunta
¿Podemos intercambiar en el código el EJB con la persistencia
controlada por el Bean y por el contenedor?