Java 如何为开发测试配置Hibernate
我们是9位程序员,使用hibernate框架开发java Web应用程序, 但是,每次我们想要测试项目时,我们都会运行(在运行模式、调试模式)项目,我们必须等待Hibernate创建SessionFactory和所有关系查询,这样我们就有问题了!Java 如何为开发测试配置Hibernate,java,hibernate,testing,Java,Hibernate,Testing,我们是9位程序员,使用hibernate框架开发java Web应用程序, 但是,每次我们想要测试项目时,我们都会运行(在运行模式、调试模式)项目,我们必须等待Hibernate创建SessionFactory和所有关系查询,这样我们就有问题了! 我应该怎么做才能让Hibernate更快地工作?需要多长时间?我知道这需要一些时间,但不会太长。如果花那么多时间,我看不出你能在这里做什么 您确定是sessionfactory在花费时间,而不是应用程序中的其他东西在启动时初始化吗 您可以使用单元测试来
我应该怎么做才能让Hibernate更快地工作?需要多长时间?我知道这需要一些时间,但不会太长。如果花那么多时间,我看不出你能在这里做什么 您确定是sessionfactory在花费时间,而不是应用程序中的其他东西在启动时初始化吗
您可以使用单元测试来测试部分代码,从而减少整个应用程序的启动。您能否详细说明所需的时间:
- 是一次,还是每次测试
- 你到底要谈多久
- 什么是休眠负载?(表格数量,或更好的列总数等)
- 我们将JUnit测试分为几个类别(基于项目、源目录或其他…)。每个都可以单独运行(如果需要,询问)
- 我们称一个测试类别为集成测试,它需要访问昂贵(缓慢或其他)的资源,如数据库、国外web服务或其他启动的软件(可能没有并发访问)、线程、IO、JMS、DLL、昂贵的许可证、x509证书、负载测量、超时。。。设置这些测试更为复杂,可能不是每个工作站都可以完成,执行这些测试需要花费更多的时间。每次开发人员开发这样的功能时,他都会经常运行相应的测试(或更多),并接受延迟。我们的自动构建每天都在运行,这就是我们确保回归检测的方式
- 我们称一个测试类别为单元测试。它不需要访问昂贵的资源,例如,它不会触发Hibernate初始化。每个开发人员都会一直执行这些测试,而且测试速度很快(对于一个大项目来说,几秒钟就足够了)!我们不必费心只选择其中一个李>
- 之前:调用dao进行数据库通信的业务算法可以如下所示:
- one=dao.readOne()
- a=做算法a
- two=dao.readTwo()
- b=do算法b
- if(b)dao.save(一,二,a,b)
- 之后:我们在不同的类或方法中划分了更多不同的职责:
- one=dao.readOne()
- two=dao.readTwo()
- (a,b)=执行算法AB(一,二)
- a=执行算法a(一)
- b=执行算法b(两个)
- if(b)dao.save(一,二,a,b)
我还喜欢优秀的Rainsberger书籍(),我绝对推荐它用于任何使用自动测试且有多个开发人员的项目。:-) 在.NET中,我通过IoC容器保存NHibernate SessionFactory。下次需要数据访问时,工厂已准备就绪。但这可能是一种不好的做法——我不确定。瓶颈是sessionfactory和Hibernate何时需要创建关系查询。有时不运行(sessionFactory=newannotationconfiguration().configure().buildSessionFactory();)这行代码,什么也不做(没有异常,没有运行)