Как использовать несколько баз данных с Spring MVC и Hibernate? - PullRequest
0 голосов
/ 09 ноября 2010

Например, у меня есть один класс, сопоставленный с таблицей в первой базе данных, и второй класс, сопоставленный с таблицей во второй базе данных. Я хотел бы использовать их одновременно в одном приложении. У меня есть компонент источника данных, определенный в моем dispatcher-servlet.xml

    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${database.driver}" />
        <property name="url" value="${database.url}" />
        <property name="username" value="${database.user}" />
        <property name="password" value="${database.password}" />
    </bean>

    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="annotatedClasses">
            <list>
                <value>com.example.model.Article</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">${hibernate.dialect}</prop>
                <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>             
            </props>
        </property>
    </bean>

и вот мой класс Mapped

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "article")
public class Article {

    @Id
    @GeneratedValue
    @Column(name = "article_id")
    private Long articleId;

    @Column(name = "article_name", nullable = false, length=20)
    private String articleName;

    @Column(name = "article_desc", nullable = false)
    private String articleDesc;

    @Column(name = "date_added")
    private Date addedDate;

    public Article() {      
    }

    public Long getArticleId() {
        return articleId;
    }

    public void setArticleId(Long articleId) {
        this.articleId = articleId;
    }

    public String getArticleName() {
        return articleName;
    }

    public void setArticleName(String articleName) {
        this.articleName = articleName;
    }

    public String getArticleDesc() {
        return articleDesc;
    }

    public void setArticleDesc(String articleDesc) {
        this.articleDesc = articleDesc;
    }

    public Date getAddedDate() {
        return addedDate;
    }

    public void setAddedDate(Date addedDate) {
        this.addedDate = addedDate;
    }   
}

Как я могу сопоставить этот класс первой базе данных, а второй - второй? Большое спасибо за ваши ответы!

1 Ответ

4 голосов
/ 09 ноября 2010

Вам нужно будет определить два источника данных и две фабрики сессий.Одна фабрика сессий, содержащая ссылку на один источник данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...