sql >> Base de Datos >  >> NoSQL >> MongoDB

Spring-data-mongodb se conecta a múltiples bases de datos en una instancia de Mongo

Aquí hay un enlace a un artículo que creo que es lo que está buscando http://michaelbarnesjr.wordpress.com/2012/01/19/spring-data-mongo/

La clave es proporcionar varias plantillas

configure una plantilla para cada base de datos.

<bean id="vehicleTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg ref="mongoConnection"/>
    <constructor-arg name="databaseName" value="vehicledatabase"/>
</bean>

configure una plantilla para cada base de datos.

<bean id="imageTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
        <constructor-arg ref="mongoConnection"/>
        <constructor-arg name="databaseName" value="imagedatabase"/>
</bean>

<bean id="vehicleTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg ref="mongoConnection"/>
    <constructor-arg name="databaseName" value="vehicledatabase"/>
</bean>

Ahora, debe decirle a Spring dónde están sus repositorios para que pueda inyectarlos. Todos deben estar en el mismo directorio. Intenté tenerlos en diferentes subdirectorios y no funcionó correctamente. Así que están todos en el directorio del repositorio.

<mongo:repositories base-package="my.package.repository">
    <mongo:repository id="imageRepository" mongo-template-ref="imageTemplate"/>
    <mongo:repository id="carRepository" mongo-template-ref="vehicleTemplate"/>
    <mongo:repository id="truckRepository" mongo-template-ref="vehicleTemplate"/>
</mongo:repositories>

Cada repositorio es una interfaz y está escrito de la siguiente manera (sí, puedes dejarlos en blanco):

@Repository
public interface ImageRepository extends MongoRepository<Image, String> {

}

@Repository
public interface TruckRepository extends MongoRepository<Truck, String> {

}

El nombre de la variable privada imageRepository es la colección! Imagen.java se guardará en la colección de imágenes dentro de la base de datos imagedb.

Así es como puede encontrar , insertar y eliminar registros:

@Service
public class ImageService {

    @Autowired
    private ImageRepository imageRepository;
}

Mediante Autowiring, hace coincidir el nombre de la variable con el nombre (id) en su configuración.