我已经建立了一个带有单个数据库连接的基本spring项目。

在application.properties文件中,我具有数据库设置:

spring.datasource.url = jdbc:mysql://192.168.1.19/ticket
spring.datasource.username = dbusername
spring.datasource.password = dbpassword


我创建了一个基本的DAO类,其他DAO对其进行了扩展:



@Transactional
public class Dao<E> {

    @PersistenceContext
    private EntityManager entityManager;

    private Class<E> entityClass;

    public Dao(Class<E> entityClass) {
        this.entityClass = entityClass;
    }

    public void create(E object) {
        entityManager.persist(object);

        return;
    }

    public void delete(E object) {
        if (entityManager.contains(object)) {
            entityManager.remove(object);
        } else {
            entityManager.remove(entityManager.merge(object));
        }

        return;
    }

    @SuppressWarnings("unchecked")
    public List<E> getAll() {
        return entityManager.createQuery("from " + entityClass.getName()).getResultList();
    }

    public E get(long id) {
        return entityManager.find(entityClass, id);
    }

    public void update(E object) {
        entityManager.merge(object);
        return;
    }
}


这是扩展基本DAO的示例实体:

@Repository
public class PersonDao extends Dao<Person> {

    public PersonDao() {
        super(Person.class);
    }
}


当前,它使用单个数据库,但是我需要能够添加第二个数据库,并以某种方式在每个DAO中定义要使用的数据源。每个DAO只会使用一个数据库,因此不需要DAO能够连接到多个数据库。

我已经做过一些研究,这似乎表明我需要使用JdbcTemplate吗?但我似乎找不到符合我需要的教程。另外,在几分钟内,entityManager被注入到DAO中,但是我看过的JdbcTemplate示例似乎并没有使用entityManager,这有点令人困惑。

最佳答案

database.password1=<password1>
database.url1=jdbc\:mysql\://localhost\:3306/twodbone
database.username1=<username1>
database.password2=<password1>
database.url2=jdbc\:mysql\://localhost\:3306/twodbtwo
database.username2=<username2>
database.driverClassName=com.mysql.jdbc.Driver


这样,您可以添加多个数据库,并同时配置hibernate.cfg.xml文件和applicationContext.xml文件。

10-02 04:11
查看更多