Spring和Hibernate:从多个数据库(数据源)使用相同的实体类和存储库

时间:2017-04-12 20:13:09

标签: java spring hibernate datasource

我想将数据保存到多个数据库。此时我有大约800个用户,每个用户在数据库中有大约500MB的数据。

我的想法:

为每个用户创建一个数据库会很棒。如果我需要对用户user_123执行某些操作,我只能在数据库main_database和共享数据库import java.io.Serializable; import javax.persistence.*; @Entity @Table(name="data") @NamedQuery(name="Data.findAll", query="SELECT d FROM Data d") public class Data implements Serializable { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private int id; @Column(name="value") private int data; //... } 中的一行执行此操作。

tast.fs

enter image description here

但是我如何实现实体和控制器?

例如:

实体:

import java.util.List;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import example.net.entity.Data;

@Repository
public class DataDaoImpl implements DataDao {

    @Autowired
    private SessionFactory sessionFactory;

    @Override
    public void save(Data data) {
        this.sessionFactory.getCurrentSession().save(data);
    }

    @Override
    public List<Data> findAll() {
        return this.sessionFactory.getCurrentSession().createQuery("from Data").list();
    }

    @Override
    public Data findById(int id) {
        return (Data) this.sessionFactory.getCurrentSession().get(Data.class, id);
    }        
}

DAO:

user_123

访问者调用网址 enter image description here ,我需要从数据库user_123data返回main_database的所有值 - db的名称将是在jdbc.properties

我会添加很多用户。可以使用新的数据库动态而无需在jdbc.hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1:3306/abc jdbc.username=abc jdbc.password=abc 中定义它吗? :

EventCountCircuitBreaker

我该怎么做?有可能吗?

0 个答案:

没有答案