【发布时间】:2016-05-06 12:26:00
【问题描述】:
我正在构建一个 spring 4 + Hibernate5 应用程序。我想知道通过 DataSource 对象和通过“hibernate.connection.url”、“hibernate.connection.username”等休眠属性定义数据库连接属性(如 url、username 等)是否有任何区别。当然最终数据源对象将绑定到会话工厂。只是想确保以正确的方式做事。
我想通过 dataSource 属性定义一个单独的 datesource 对象,以便我可以将 AbstractTransactionalTestNGSpringContextTests 用于测试用例。这个类总是需要一个数据源对象。我想使用@Rollback 功能,该功能与 AbstractTransactionalTestNGSpringContextTests 一起使用。 AbstractTestNGSpringContextTests 不支持回滚功能,但仍然可以正常工作。
需要以正确的方式实现输入。
添加示例代码以提供更多信息。
@ContextConfiguration(locations = { "classpath:spring/fpda_persistence_config.xml" })
@Rollback
@Transactional
public class BankTransactionDAOTest extends AbstractTestNGSpringContextTests {
@Autowired
private BankTransactionDAO bankTransactionDao;
@Test
public void createBankTransactionTest(){
BankTransaction bt = new BankTransaction();
bt.setAuthoritativeTableId(new BigDecimal(1234));
bt.setBankTransactionTypeCode(new Character('C'));
bt.setInstanceId(new BigDecimal(1234));
bt.setRowCreatedEpochTime(new BigDecimal(1234));
bt.setTransactionId(new BigDecimal(1234));
bt.setTransactionKey(new BigDecimal(System.currentTimeMillis()));
bankTransactionDao.createBankTransaction(bt);
}
}
为了使事务回滚成功发生,我知道我们应该扩展 AbstractTransactionalTestNGSpringContextTests 而不是 AbstractTestNGSpringContextTests。然后我应该声明数据源属性,而不是在休眠属性中定义所有属性。 所以总的来说,在数据源中声明一些属性和在休眠中声明一些属性是一种正确的方法吗?会有什么不同吗?
提前致谢。
【问题讨论】: