MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Spring-data-mongodb si connette a più database in un'istanza Mongo

Ecco un link a un articolo che penso sia quello che stai cercando http://michaelbarnesjr.wordpress.com/2012/01/19/spring-data-mongo/

La chiave è fornire più modelli

configurare un modello per ogni database.

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

configurare un modello per ogni database.

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

Ora, devi dire a Spring dove si trovano i tuoi repository in modo che possa iniettarli. Devono trovarsi tutti nella stessa directory. Ho provato ad averli in diverse sottodirectory e non ha funzionato correttamente. Quindi sono tutti nella directory del repository.

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

Ogni repository è un'interfaccia ed è scritto come segue (sì, puoi lasciarli vuoti):

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

}

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

}

Il nome della variabile privata imageRepository è la collezione! Image.java verrà salvato nella raccolta di immagini all'interno del database imagedb.

Ecco come puoi trovare , inserire e elimina record:

@Service
public class ImageService {

    @Autowired
    private ImageRepository imageRepository;
}

Con Autowiring abbini il nome della variabile al nome (id) nella tua configurazione.