MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Spring-data-mongodb verbindet sich mit mehreren Datenbanken in einer Mongo-Instanz

Hier ist ein Link zu einem Artikel, den Sie meiner Meinung nach suchen http://michaelbarnesjr.wordpress.com/2012/01/19/spring-data-mongo/

Der Schlüssel liegt darin, mehrere Vorlagen bereitzustellen

eine Vorlage für jede Datenbank konfigurieren.

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

eine Vorlage für jede Datenbank konfigurieren.

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

Jetzt müssen Sie Spring mitteilen, wo sich Ihre Repositories befinden, damit es sie einfügen kann. Sie müssen sich alle im selben Verzeichnis befinden. Ich habe versucht, sie in verschiedenen Unterverzeichnissen zu haben, und es hat nicht richtig funktioniert. Sie befinden sich also alle im Repository-Verzeichnis.

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

Jedes Repository ist eine Schnittstelle und wird wie folgt geschrieben (ja, Sie können sie leer lassen):

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

}

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

}

Der Name der privaten Variable imageRepository ist die Sammlung! Image.java wird in der Bildersammlung in der imagedb-Datenbank gespeichert.

So können Sie finden , einfügen , und löschen Aufzeichnungen:

@Service
public class ImageService {

    @Autowired
    private ImageRepository imageRepository;
}

Durch Autowiring passen Sie den Variablennamen an den Namen (id) in Ihrer Konfiguration an.