English 中文(简体)
Java/Spring/Tomcat网络应用的Hibernate/Mysql
原标题:Ripping out Hibernate/Mysql for MongoDB or Couch for a Java/Spring/Tomcat web application

我的申请正在进行大规模重组,我正在探讨不同的选择——按目前情况看,在不同的框架或平台上对项目进行更新等等。

当我真的想到这一点时,这里是我真的不喜欢的三件大事:

  1. Server start/stops when modifying controllers or other classes. Dynamic languages are a huge win over Java here.
  2. Hibernate, Lazyloading exceptions (especially those that occur in asynchronous service calls or during Jackson JSON marshalling) and ORM bloat in general. Hibernate, all by itself, is responsible for slow integration start up times and insanely slow application start up times.
  3. Java stupidity - inconsistent class-loading problems when running your app inside of your IDE compared to Tomcat. Granted once you iron out these issues, you most likely won t see them again. Even still, most of these are actually caused by Hibernate since it insists on a specific Antlr version and so on.

在思考这一问题之后...... 如果我刚刚摆脱了自由,我就可以解决或至少改善这三个地区的局势。

是否有任何人重新编制50+实体的 j瓦申请,以使用ongo或uch或类似的数据库? 经验如何? 你们是否建议这样做? 假设你做一些非常大的单位/一体化测试,需要多长时间? 这一概念是否比实际好?

如果我能够储存文件,我的申请实际上将在许多领域受益。 它实际上会为这项申请打开一些非常冷却和有趣的特征。 然而,我确实能够提出复杂的查询......我告诉我库奇能够这样做。

在NSQL数据库方面,我确实是绿色的,因此,任何关于迁移(或不迁移)大型 j/后代项目的建议都将真正有用。 而且,如果这是一个好的想法,你会建议我用什么书子来加快速度,并真正以尽可能最佳的方式利用这些书呢?

增 编

问题回答

不管怎样,你的权势只是掩盖了以前作出的(合法)自由决定的问题,也涉及作为一般方案者的发展。

如果一个类似项目被搁置,而且迫切需要恢复或改进,那么我将如何这样做。

这取决于您软件寿命的阶段,以及如果你应对较小的软件作重大改变或贴上标签,则所涉时间压力。 然而,从长远来看,在加薪方面移徙似乎是你的最佳选择。

短期保留在贾瓦撰写的申请似乎是明智的,用另一种语言进行重大改写,必将打破接受和融合测试。

Like suggested by Joseph, make the step from Hibernate to JPA. It shouldn t cost too much time. And from there you can switch the back-end to some other way of storage. Work towards a way of seperating concerns. Pick whatever concept seems best, some prefer MVC while others might opt for CQRS and still others adore another style of segmentation/seperation.

由于联合考试委员会支持多种语文,你总是可以转而使用其中的任何一种语文,或至少部分使用更具活力的语言。 这将解决一部分问题,即你在 Java的“顶级”中保持 b,同时仍然保持目前初等考试的精髓。

此外,你可能希望进行自动一体化测试......因为希望申请永远不会由民主选举学会管理,这些测试将给你带来诚实的结果。

说明: 我从来不相信,如果民主选举学会有能力将自己的图书馆注入我的建筑或运行时间,那么我就能够使自己的图书馆成为现实。

因此,简而言之:小步骤;失去自由,更抽象地对待人民军;如果 Java落,则逐步改用 language语。 你们的主要关切应当是在不失去功能的情况下重组编码基础,同时铭记公开设计,从而在以后更方便地增加有趣和冷却的特征。

确实,很大程度上取决于诸如“与自由相处的痛苦点是什么?” (我知道,你举了三个例子......)

但这些是长期的核心问题。 你们再说一遍,是编辑的语文与动态语言的性质;从长远来看,这有利于你们(因为根据我的不尽人意的测试, Java比动态语言更快、更可衡量),但是,在发展阶段,它却不太容易坐视 ha而行。

无SQL是固定物品的,尽管文件储存可能,但你不得不走进移民的一步。

重要:我为这一空间的供应商工作,这解释了我在该领域的经验以及下一段中的偏见:

尽管我建议使用一种商业产品:吉加空间(http://gigaspaces.com),但你还是侧重于开放源项目。 有一个社区版本,使你能够把基于日本宇宙航行局的java物体移至文件模型(通过空间发展动态技术说明);你可以使用日本宇宙航行局的代码,在方便时,你书写并慢慢地迁移到一个完全以文件为导向的模式,加上复杂的问题。

所有这些问题通常都是由于不胜任而引起问题,而不是出于私利或ava难:

  • 除了结构性修改(涉及田地或方法)外, j法的所有变化都是以变换方式进行的热液,以便你能够节省和安放;测试(不进行任何重新调配)。

  • the LazyInitializationException is a problem for hibernate-beginners only. There are many and clear solutions to it, and you ll find them with a simple google or SO search. And you can always set your collections to fetch=FetchType.EAGER. Or you can use Hibernate.initialize(..) to initialize lazy collections.

  • It is entirely normal for a library to require a specific version of another library (the opposite would be suspicious and wrong). If you keep your classpath clean (for example by using maven or ivy), you won t have any classloading issues. I have never had.

现在,我将提供一个替代方案,即,这是一个由春天推出的新项目,使你能够利用自己的实体购买NoSQL商店。





相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签