MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Spring-data-mongodb se connecte à plusieurs bases de données dans une seule instance Mongo

Voici un lien vers un article qui, je pense, correspond à ce que vous recherchez http://michaelbarnesjr.wordpress.com/2012/01/19/spring-data-mongo/

La clé est de fournir plusieurs modèles

configurer un modèle pour chaque base de données.

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

configurer un modèle pour chaque base de données.

<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>

Maintenant, vous devez indiquer à Spring où se trouvent vos référentiels afin qu'il puisse les injecter. Ils doivent tous se trouver dans le même répertoire. J'ai essayé de les avoir dans différents sous-répertoires, et cela n'a pas fonctionné correctement. Ils sont donc tous dans le répertoire du référentiel.

<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>

Chaque référentiel est une interface et s'écrit comme suit (oui, vous pouvez les laisser vides) :

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

}

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

}

Le nom de la variable privée imageRepository est la collection! Image.java sera enregistré dans la collection d'images de la base de données imagedb.

Voici comment vous pouvez trouver , insérer , et supprimer enregistrements :

@Service
public class ImageService {

    @Autowired
    private ImageRepository imageRepository;
}

En autowiring, vous faites correspondre le nom de la variable au nom (id) dans votre configuration.