¿Que es JPA o JAXB?
- JPA: Es la API que permite hacer representaciones Java de objetos de BBDD relacionales y facilitar su manejo. Enlace Wikpedia Enlace Oficial
- JAXB: Es la API que permite hacer representaciones java de documentos XML y facilitar su manejo.
- hibernate-entitymanager: La implementación para el uso del entity manager por Hibernate.
- hibernate-jpa-2.1-api: La implementación de Hibernate de JPA
- Conector de base de datos: En mi caso MySQL.
Una vez configurado las librerías vamos a crear el fichero de configuración de BBDD, con JPA normalmente es el conocido 'persistence.xml':
En el podemos ver la siguiente configuración:
org.hibernate.ejb.HibernatePersistence
En el podemos ver la siguiente configuración:
- Hemos llamado a nuestra configuración 'myPersistenceUnit'.
- Hemos indicado los datos de conexión: URL, usuario, password, driver de conexión, etc
- Hemos indicado que se autodetecten las clases que utilizaremos para conectar a la BBDD. De lo contrario deberiamos indicar especificamente que clase serán las que representen los objetos relacionales de BBDD.
- Hemos indicado configuración adicional sobre las querys. En este caso que se muestren y se muestren formateadas.
Para la parte de acceso a datos hemos creado una clase abstracta que permite obtener la entidad gestora de BBDD configurada en nuestro archivo, pero para eso deberemos indicarle cual es nuestra configuración
public abstract class AbstractDao { private static EntityManagerFactory emf; private final ThreadLocalem = new ThreadLocal () { @Override protected EntityManager initialValue() { return getEntityManagerFactory().createEntityManager(); } }; private EntityManagerFactory getEntityManagerFactory() { if (emf == null) { emf = Persistence.createEntityManagerFactory("myPersistenceUnit"); } return emf; } protected EntityManager getEntityManager() { return em.get(); } }
Por otro lado creamos una interface DAO y su implementación con los cuales acceder a los datos de BBDD.
Ya casi estaría listo, crearemos un método del Web Service que llame a ese servicio DAO y que pueda obtener los datos de BBDD. Pero nos quedaría un pequeño asunto, ¿Como indicamos el formato de la respuesta?. Para esto utilizaríamos el JAXB, crearemos clases que tengan el formato de la información que queremos devolver en el servicio. Este formato se lo podemos indicar a través de anotaciones. Aquí un ejemplo de clase JAXB
@XmlRootElement public class UserXml implements java.io.Serializable { private Integer userId; private String username; private String password; private boolean enabled; @XmlElement public Integer getUserId() { return userId; } @XmlElement public String getUsername() { return username; } @XmlElement public String getPassword() { return password; } @XmlElement public boolean isEnabled() { return enabled; } //setters public void setEnabled(final boolean enabled) { this.enabled = enabled; } public static UserXml valueOf(final User user) { UserXml userXml = new UserXml(); userXml.setEnabled(user.isEnabled()); userXml.setPassword(user.getPassword()); userXml.setUserId(user.getUserId()); userXml.setUsername(user.getUsername()); return userXml; } }
Y aquí un ejemplo del servicio web:
public ListgetUsers() { List list = dao.getUsers(); List result = new ArrayList (); for (User p : list) { result.add(UserXml.valueOf(p)); } return result; }
No hay comentarios:
Publicar un comentario