我想将数据保存到多个数据库。此时我有大约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;
//...
}
中的一行执行此操作。
但是我如何实现实体和控制器?
例如:
实体:
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
访问者调用网址 ,我需要从数据库user_123
表data
返回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
我该怎么做?有可能吗?