我正在处理的应用程序的数据库尚未得到业务部门的确认。
我们在这个项目中使用Spring 3.0.5,Hibernate 3.5,JPA2和JBoss 5
那么进入构建阶段和测试阶段的最佳实践是什么?
谢谢, 阿迪
答案 0 :(得分:4)
如果您编写的应用程序数据库不可知,那么显然您将无法访问数据库的特定功能。除了由JPA和Hibernate完成的自动优化之外,数据库已简化为常用功能。您必须将某些内容设置为自动并且信任JPA / Hibernate才能正确执行,如果您知道数据库(例如id生成器策略),则可以专门设置。
但似乎数据库的特定开发人员功能与决策无关,因此它们与应用程序无关。其他可能影响决策的原因(如价格,金钱,现金,个人关系,管理工具,硬件要求,现有知识和人员)只能被推测。
所以恕我直言,你没有选择。严格避免任何数据库特定的。这包括让JPA / Hibernate生成模式(你的观点#2)。在此项目设置中,您不应手动修改数据库。
嗯......遗憾的是,在JPA / Hibernate开发中存在一些隐藏的陷阱,这些陷阱使得它依赖于数据库(例如,对数函数未被一致地映射)。因此,您应该从第一天开始针对所有可能的数据库运行所有测试。当你写“最好的猜测是......”时,你应该抓住任何可用的数据库并对其进行测试。应该使用给定的堆栈轻松设置。
如果可能的话,您应该尝试加快有关所用数据库的决定。
答案 1 :(得分:2)
只需“使用JPA(Hibernate)编写”将其开发为与数据库无关。将所有业务逻辑放在java代码而不是存储过程中。
如果你使用弹簧,你不需要jboss,你只能使用tomcat,大约四分之一的脚印,以及更简单的imho。
Spring vs Jboss和jboss represents all that is bad, while spring represents all that is good in Java enterprise development
答案 2 :(得分:0)
我们已经添加了这个问题,并且不得不在项目后期进行迁移,导致大量额外的工作,挫折和延迟。
我的建议是定义一个抽象层。转到你没有任何数据库的数据模型,比如表格或文本文件。
然后,当您必须切换到某个数据库时,您可以对其进行优化,同时可以继续在任何已开发的模型上继续进行应用程序开发。因此,当您调整DB2层时,不要在应用程序上延迟开发人员。当一切都经过适当验证后,团队可以开启它。