Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在同一个项目中有两个框架可以吗?_Java_Jsp_Frameworks - Fatal编程技术网

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

Java 在同一个项目中有两个框架可以吗?,java,jsp,frameworks,Java,Jsp,Frameworks,我也是。该应用程序是由另一个现在为另一家公司工作的开发人员编写的。一般来说,应用程序简单明了,设计良好,并且代码有足够的文档记录。唯一的问题是,以前的开发人员决定构建自己的数据库访问库,而不是使用流行的框架。在多年的编程生涯中,他构建了一个令人印象深刻的框架来访问任何数据库(类似于轻量级Hiberbate) 现在,我没有理由扔掉他的代码,用更传统的JPA层替换数据层,因为当前的代码工作得很好(尽管这很诱人!)。但是我想知道我是否应该使用一个具有新特性的更传统的框架。应用程序堆栈非常简单,我可以轻

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

现在,我没有理由扔掉他的代码,用更传统的JPA层替换数据层,因为当前的代码工作得很好(尽管这很诱人!)。但是我想知道我是否应该使用一个具有新特性的更传统的框架。应用程序堆栈非常简单,我可以轻松地插入Hibernate或JPA。因此,旧页面(带有新的错误修复)将使用旧框架,而新页面将使用新框架


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

这样做的真正缺点是,一个框架可能会对数据库进行更改,而另一个框架不会立即进行更改。在使用NHibernate+ADO.NET组合之前,我遇到过这样的情况:如果NHibernate缓存了某些内容,它可能会忽略ADO.NET更改


如果您可以缓解这种情况,那么这样做在技术上没有什么错。

您当然不想一时兴起地添加框架,但反过来也不好,在存在可接受的替代方案时编写您自己的psuedo框架。在我的工作中,我们必须使用Spring将JPA转换成更具JDBC风格的格式。在转换过程中,我没有删除或修改任何JPA代码,只是在JDBC中重新编写了它。一旦我对特定方法的工作感到满意,我就会交换实现。这让我可以在转换过程中分秒必争,不用把地毯从服务层下面拉出来。因此,为了完全回答您的问题,只要计划迁移到其中一个框架,就可以有两个框架。

它可以工作-不要碰


为完成这项工作建立一个案例可能是值得的——性能测试、可伸缩性调查等。如果您没有找到好的理由,就让它用于当前正在使用它的项目。如果出现了足够多的bug,可以归结为DB,那么就有理由迁移到支持良好的后端。如果两者的性能都很低,那么可能使用原始JDBC,而不是切换抽象框架。

在这种情况下,我认为答案是“是”如果您确实可以利用Hibernate或JPA所拥有的传统库所没有的功能,如果您确信您不会破坏当前存在的任何功能

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


为了跟随您的开发人员,只需记录您所有的更改及其背后的理由。

如果它有效且令人印象深刻,为什么要放弃毫无理由地切换到另一个框架的诱惑呢?除非当前的框架有一些缺点(难以维护、难以理解、无法调试等),否则我建议不要管它。

Eldimo

您应该权衡基于这种变化的投资回报的合并新框架的决定。当前项目的寿命是看待它的一种方式

如果项目是稳定的,并且处于维护阶段,那么您不应该进行剧烈的更改

但是,如果项目将继续合并新的特征并继续增长,那么如果增加投资回报,就应该考虑采用支持的框架。如果您预见到当前家庭增长框架的变化,以支持新的需求,并且如果这些要求得到其他现有框架的支持,那你就有充分的理由收养他们了

然而,采用新的持久性框架将在短时间内破坏当前项目的稳定性,由于缺乏使用该框架的团队经验,会增加bug的数量,还可能影响开发团队的速度