2016-02-05 2 views
0

У меня есть коллекция DALS, такая как Transaction DAO, Billing DAO и т. Д. У каждого из них есть операции CRUD, и мне нужно использовать эти методы в моем проекте, используя весеннее автоувеличивание. В некоторых проектах, которые я проверил, я увидел, что они извлекают данные inmemory путем запроса. Однако я должен использовать DAL, которые уже были написаны и имеют все операции CRUD.Как использовать связку DAO с использованием базы данных derby в памяти с использованием весеннего автоустройства.?

Например:

 @Autowired 
     TransactionDAO transactionDAO 

     @Autowired 
     BillingDAO billingDAO 

    @Test 
    public void testImplementSearchMethodForDAO() throws Exception{ 

    TransactionVO transactionVO = getTransVO(); 
    BillingVO billingVO = getBillingVO(); 
    List<TransactionVO> VOList1 = transactionDAO.searchList(transactionVO); 
    List<BillingVO> VOList2 = billingDAO.searchList(billingVO); 
    assertThat(VOList1.size()).isEqualto(1)); 
    assertThat(VOList1.size()).isEqualto(1)); 
    } 
    (Assuming I added one VO value in each table). 

If you need any more clarifications, I will be glad to provide you. 

ответ

1

Вы можете использовать сеттеры и использовать аннотацию @Autowire на сеттеров. Ваш тестовый код должен вводить DAO, используя эти сеттеры. В тестах вы создаете экземпляр mem: db и создаете пул подключений или источник данных или все, что вам нужно, а затем создавайте DAO на основе этого.

Ваша установка() будет что-то вроде этого

BoneCPConfig config = new BoneCPConfig(); 
config.setJdbcUrl("jdbc:hsqldb:mem:test_common;shutDown=false"); 
config.setUsername("sa"); 
config.setPassword(""); 
JdbcTemplate dataSource = new BoneCPDataSource(config); 
jdbcTemplate = new JdbcTemplate(dataSource); 
//If you are using named queries 
NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource); 
//create necessary tables etc here. 
setupDb(jdbcTemplate); 

SomeBean anotherBean = new SomeBean(); 

YourDAO dao = new YourDAOImpl(); 
dao.setNamedJdbcTemplate(namedParameterJdbcTemplate); 
dao.setSomeOtherBean(anotherBean); 

//Mimic spring container if you implement InitialzingBean 

dao.afterPropertiesSet(); 

После того, как все зависимости впрыскивают вы запускаете тесты, как обычно.

+0

Можете ли вы привести примерный пример? –

+0

Дело в том, что вы можете протестировать свои DAO, не беспокоясь о весне. Я скоро что-то напечатаю. – JVXR