En algunas ocasiones deseamos crear bases de datos de manera dinámica, (en tiempo de ejecución) para separar las colecciones que almacenemos en mongodb en varias bases de datos, con ejbjmoordb, se puede especificar fácilmente mediante el método modeloRepository.setDatabase("mibasedatos");
Si no lo indicamos se tomara el que esta definido en el repository.
Cuando definimos un Repository indicamos la base de datos
/** To change this license header, choose License Headers in Project Properties.* To change this template file, choose Tools | Templates * and open the template in the editor.*/packagecom.avbravo.storeejb.repository;importjavax.ejb.Stateless;importjavax.ejb.EJB;importcom.avbravo.ejbjmoordb.mongodb.repository.Repository;importcom.avbravo.storeejb.entity.Modelo;importcom.avbravo.storeejb.provider.MongoClientStoreejbProvider;importcom.mongodb.MongoClient;importjavax.annotation.PostConstruct;importjavax.annotation.PreDestroy;/** * * @author avbravo */@StatelesspublicclassModeloRepositoryextendsRepository<Modelo > { @EJBMongoClientStoreejbProvider MongoClientStoreejbProvider; @OverrideprotectedMongoClientgetMongoClient() {returnMongoClientStoreejbProvider.getMongoClient(); }publicModeloRepository(){ super(Modelo.class,"store","modelo"); } @OverridepublicObjectfindById(String key,String value) {returnsearch(key,value); } @OverridepublicObjectfindById(String key,Integer value) {returnsearch(key,value); }}
Controller
Si deseamos especificar otra base de datos distinta a la definida en el repository, en el controller agregar en ell metodo init(), el nombre de la base de datos mediante myRepository.setDatabase("mydatabase");