Las listas embebidas en los documentos en MongoDB nos permiten almacenar muchas estructuras que nos serán útil en variadas condiciones.
Usaremos JMoordb que esta disponible en los repositorios.
En este ejemplo básico asumimos que deseamos guardar un registro de la fecha hora y descripción de las operaciones que realiza un usuario sobre un documento.
Crear un EJB llamado UserinfoServices
@Stateless
public class UserinfoServices {
public List<Userinfo> generateListUserinfo(String username, String description) {
List<Userinfo> listUserinfo = new ArrayList<>();
try {
listUserinfo.add(new Userinfo(username, JsfUtil.getFechaHoraActual(), description));
} catch (Exception e) {
JsfUtil.errorMessage("generateUserinfo() " + e.getLocalizedMessage());
}
return listUserinfo;
}
}
Usaremos JMoordb que esta disponible en los repositorios.
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependency>
<groupId>com.github.User</groupId>
<artifactId>Repo</artifactId>
<version>Tag</version>
</dependency>
En este ejemplo básico asumimos que deseamos guardar un registro de la fecha hora y descripción de las operaciones que realiza un usuario sobre un documento.
Definimos los entity
@Getter
@Setter
public class Userinfo {
@Id
private String username;
private Date datetime;
private String description;
public Userinfo() {
}
public Userinfo(String username, Date datetime, String description) {
this.username = username;
this.datetime = datetime;
this.description = description;
}
}
El entity bodega contiene un List<> embebido de Userinfo
@Getter
@Setter
public class Bodega {
@Id
private String idbodega;
private String telefono;
private String direccion;
@Embedded
private List<Userinfo> userinfo;
public Bodega() {
}
}
Crear un EJB llamado UserinfoServices
@Stateless
public class UserinfoServices {
public List<Userinfo> generateListUserinfo(String username, String description) {
List<Userinfo> listUserinfo = new ArrayList<>();
try {
listUserinfo.add(new Userinfo(username, JsfUtil.getFechaHoraActual(), description));
} catch (Exception e) {
JsfUtil.errorMessage("generateUserinfo() " + e.getLocalizedMessage());
}
return listUserinfo;
}
}
Desarrollamos una aplicación Java Server Faces
En el controller metodo save()
@Inject
UserinfoServices userinfoServices;
public String save() {
try {
//Lo datos del usuario
bodega.setUserinfo(userinfoServices.generateListUserinfo(loginController.getUsername(), "create"));
bodegaFacade.save(bodega);
} catch (Exception e) {
JsfUtil.errorMessage("save()" + e.getLocalizedMessage());
}
return "";
}
Método editar agregamos a la lista el nuevo objeto de tipo Userinfo
public String edit() {
try {
bodega.getUserinfo().add(userinfoServices.generateUserinfo(loginController.getUsername(),"editado"));
bodegaFacade.update(bodega);
JsfUtil.successMessage(rf.getAppMessage("info.update"));
} catch (Exception e) {
JsfUtil.errorMessage("edit()" + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
Si consultamos el documento en MongoDB
si observamos userinfo tiene 3 elementos, indican las operaciones sobre el documento.
se muestran los registros de las operaciones realizadas sobre el documento.
Comments