【问题标题】:spring + testng + hibernate right approch for session factoryspring + testng + hibernate sessionfactory的正确方法
【发布时间】: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。然后我应该声明数据源属性,而不是在休眠属性中定义所有属性。 所以总的来说,在数据源中声明一些属性和在休眠中声明一些属性是一种正确的方法吗?会有什么不同吗?

提前致谢。

【问题讨论】:

    标签: java spring hibernate


    【解决方案1】:

    在我们的项目中,我们对测试类使用类级别的注解 @TestPropertySource(locations = "classpath:application-test.properties")

    【讨论】:

    • 是的,这种加载属性的方式可能是一个好方法。但我主要关心的是我们是否可以在数据源属性中定义很少的属性,在休眠属性中定义很少的属性。这是一个正确的方法吗?
    猜你喜欢
    • 2011-12-28
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 2018-07-25
    • 2011-05-06
    • 2012-06-10
    • 2015-12-31
    相关资源
    最近更新 更多