在同一个项目中有两个框架可以吗?

时间:2009-02-05 19:06:04

标签: java jsp frameworks

所以我有taken over a Java Web project。该应用程序由另一位现在为另一家公司工作的开发人员编写。一般来说,应用程序很简单,设计得很好,代码也足够记录。唯一的问题是,之前的开发人员决定构建自己的数据库访问库,而不是使用流行的框架。在他的编程生涯中,他构建了一个令人印象深刻的框架来访问任何数据库(类似于轻量级的Hiberbate)。

现在,我没有理由抛弃他的代码并用更传统的JPA层替换数据层,因为当前的代码工作正常(虽然它很诱人!)。但我想知道是否应该使用更具传统性的新功能框架。应用程序堆栈很简单,我可以轻松地插入Hibernate或JPA。所以旧页面(带有新的错误修正)将使用旧框架,新页面将使用新框架。

然而,这种方法的一个缺点是它会让新开发人员感到困惑。但是,我也可以继续使用旧框架,根据需要扩展/修复它。就像我说的,它有效!

6 个答案:

答案 0 :(得分:9)

你当然不想随心所欲地添加框架,但反之亦然,当存在可接受的替代方案时编写自己的伪框架。在我的工作中,我们不得不使用Spring从JPA转换为更多JDBC风格。在转换过程中,我没有删除或修改任何JPA代码,我只是在JDBC中重写它。一旦我觉得特定方法有效,我就会换掉实现。这让我可以将转换过来,而不是从服务层下拉出地毯,可以这么说。因此,要完全回答您的问题,只要计划要迁移到其中一个,就可以拥有2个框架。

答案 1 :(得分:4)

Eldimo,

您应该根据此类变更的投资回报来平衡合并新框架的决策。目前项目的长寿是看待它的一种方式。

如果项目稳定且处于维护阶段,则不应进行大幅更改。

但是,如果项目将继续包含新功能并继续增长,那么您应该考虑采用支持的框架,如果它增加投资回报。如果您预见到当前的本地增长框架的变化,以支持新的要求如果这些要求得到其他现有框架的支持,那么您有充分的理由采用它们。

然而,采用新的持久性框架会在短时间内破坏当前项目的稳定性,由于缺乏团队的团队经验而增加了错误的数量,并且还会影响开发团队的速度。

答案 2 :(得分:1)

“它有效” - 不要碰!

建立执行此项工作的案例可能是值得的 - 性能测试,可伸缩性调查等。如果您没有找到合理的理由,请将其留给当前正在使用它的项目。如果引发了足够的错误归结为数据库,那么就有一种情况可以迁移到支持良好的后端。如果两者的性能都很低,那么原始JDBC可能是一种方法而不是切换抽象框架。

答案 3 :(得分:1)

在这种情况下,我认为答案是“是”.... 如果你真的可以利用Hibernate或JPA拥有的遗留库不具备的功能和 if 您确定不会破坏当前存在的任何内容。

通过合并Hibernate或JPA,您不仅要卸载这些开发团队的一些维护责任,而且听起来您在前进方面会更快乐。

为了跟随的开发人员,请记录所有更改及其背后的推理。

答案 4 :(得分:1)

如果它有效且令人印象深刻,为什么要屈服于无缘无故地切换到另一个框架的诱惑?除非当前的框架有一些负面因素(难以维护,难以理解,无法调试等),否则我会说不管它。

答案 5 :(得分:0)

执行此类操作的真正缺点是,一个框架将对数据库进行更改而另一个框架无法立即获取的风险。在使用NHibernate + ADO.NET的组合之前我已经遇到过这个问题:如果NHibernate缓存了某些东西,它可能会忽略ADO.NET的变化。

如果你可以减轻这种影响,那么在这方面没有任何技术上的错误。