Hibernate Spring休眠两个不同的DAO连接

Hibernate Spring休眠两个不同的DAO连接,hibernate,Hibernate,我有一个公共项目依赖于名为application1的应用程序。我用这种方式配置了xmls,使每个项目都有一个不同的jdbc属性文件(不同的文件名),它指向不同的数据库。Postgres和MySQL。我创建了以下代码段: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"/applicationContext.xml", "/common-applicationContext.xml"}) @Tr

我有一个公共项目依赖于名为application1的应用程序。我用这种方式配置了xmls,使每个项目都有一个不同的jdbc属性文件(不同的文件名),它指向不同的数据库。Postgres和MySQL。我创建了以下代码段:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/applicationContext.xml", "/common-applicationContext.xml"})
@Transactional
public class AppTest extends AbstractTransactionalJUnit4SpringContextTests{
    static Logger log = Logger.getLogger(App.class.getName());
    @Resource(name = "testDao")
    private IDAO dao;//Traces testDao, which originates in common package
    @Resource(name = "testApplication1Dao")
    private IDAO daoApplication1;//Traces dao from application1 package
    @Test
    public void AppContextTest(){
        SessionFactory sf1 = dao.getHibernateTemplate().getSessionFactory();
        SessionFactory sf2 = daoApplication1.getHibernateTemplate().getSessionFactory();
  • TestDao和TestApplication1Dao类正在扩展IDAO。 公共接口
  • testApplication1Dao->Postgres,在中配置 applicationContext.xml和pgsql.jdbc.properties中的
  • testDao->Mysql,在common-applicationContext.xml和中配置 mysql.jdbc.properties
  • 为什么在调试eclipse时,我看到dao和DAOApplication1是相同的对象?应该吗? 如何在屏幕上打印每个dao对象背后的连接和属性

    提前谢谢

    编辑(1)

    来自通用项目:

    import org.springframework.stereotype.Repository;
    @Repository("testDao")
    public class TestDao extends AbstractDao {}
    
    从application1项目:

    import org.springframework.stereotype.Repository;
    import gr.org.infrastructure.common.db.AbstractDao;
    @Repository("testApplication1Dao")
    public class TestApplication1Dao extends AbstractDao {}
    
    抽象DAO是IDAO(接口)的扩展,没有什么奇怪的…:

    @Transactional(propagation=Propagation.REQUIRED)
    public abstract class AbstractDao implements IDAO {
        private HibernateTemplate hibernateTemplate;
        private boolean rollbacked;
    
        public AbstractDao() {
            super();
            this.rollbacked = false;
            // TODO Auto-generated constructor stub
        }
    

    显然解决了这个问题,我可以在spring/hibernate应用程序中同时使用两个独立的连接。如果有人感兴趣,给我写张便条