我已经使用单个数据库连接设置了一个基本的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,这有点令人困惑。
答案 0 :(得分:1)
xyz
通过这种方式,您可以添加多个数据库并同时配置hibernate.cfg.xml文件和applicationContext.xml文件。
答案 1 :(得分:0)
@Repository
public class FooRepository
{
@PersistenceContext
private EntityManager entityManager;
@Autowired(required = true)
private JdbcTemplate jdbcTemplate;
public void saveFoo(Foo foo)
{
this.entityManager.persist(foo);
}
public List<SomeReportPojo> getSomeReport()
{
return this.entityManager.queryForList("SELECT .. ",SomeProjectPojo.class);
}
}
应保留this.jdbcTemplate而不是this.entityManager for jdbc templetes
这是一个简单的例子