在Java EE完整容器中,性能方面,最好是传递一个对象还是让实体管理器从内存中获取它?

时间:2015-02-28 02:15:11

标签: java performance java-ee glassfish eclipselink

如果我知道很多子函数将使用数据库对象,我应该在main方法中获取该对象,然后将其传递给所有子函数以便重用,或者只是获取它是一个很大的问题我实际需要时来自实体经理吗?

我有多层迭代器,直到最低级别才使用该对象。现在我将它放在顶层并在实际使用之前将其传递给4层方法。

真正的问题是我想在程序的另一部分中使用其中一个中间函数,而不是进行不必要的调用来获取该对象。我只想调用这个函数。

布局是这样的:

generate()
    MyObj obj = getMyObj(); // Entity Manager find

    generateSubItems(obj)
        generateSubSubItems(obj)
            generateSubSubItemValues(obj)
                // Use obj

问题是我想使用generateSubSubItems而不必调用getMyObj(),因为我必须使用它很多地方。我真的不想在一个地方散布相关的代码,而在其他地方我会希望保持尽可能干净的代码。

这样做是否会带来巨大的性能影响:

generate()
    generateSubItems()
        generateSubSubItems()
            generateSubSubItemValues()
                MyObj obj = getMyObj(); // Entity Manager find

                // Use obj

我正在使用EclipseLink,Glassfish和SOFT缓存。

USAGE:每次调用将使用几百次来生成SubSubItemValues()。这种情况最有可能每天被召唤几百次。

所以它会加起来。特别是随着软件的发展。

1 个答案:

答案 0 :(得分:0)

即使在Java EE中它仍然是Java,你只是传递对象的引用,所以它在性能方面不是很大,如果没有引用你需要传递一些可能需要的id堆栈上有很多空间。