MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Spring-data-mongodb conecta-se a vários bancos de dados em uma instância do Mongo


Aqui está um link para um artigo que acho que é o que você está procurando http://michaelbarnesjr.wordpress.com/2012/01/19/spring-data-mongo/

A chave é fornecer vários modelos

configurar um modelo para cada banco de dados.
<bean id="vehicleTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg ref="mongoConnection"/>
    <constructor-arg name="databaseName" value="vehicledatabase"/>
</bean>

configurar um modelo para cada banco de dados.
<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>

Agora, você precisa informar ao Spring onde estão seus repositórios para que ele possa injetá-los. Eles devem estar todos no mesmo diretório. Tentei tê-los em diferentes subdiretórios e não funcionou corretamente. Então, eles estão todos no diretório do repositório.
<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 repositório é uma Interface e está escrito da seguinte forma (sim, você pode deixá-los em branco):
@Repository
public interface ImageRepository extends MongoRepository<Image, String> {

}

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

}

O nome da variável privada imageRepository é a coleção! Image.java será salvo na coleção de imagens no banco de dados imagedb.

Veja como você pode encontrar , inserir e excluir registros:
@Service
public class ImageService {

    @Autowired
    private ImageRepository imageRepository;
}

Ao ligar automaticamente, você combina o nome da variável com o nome (id) em sua configuração.