小编MRa*_*ser的帖子

JPA hashCode()/ equals()两难

这里有一些 关于JPA实体的讨论,以及哪些hashCode()/ equals()实现应该用于JPA实体类.大多数(如果不是全部)它们依赖于Hibernate,但我想讨论它们JPA实现中性(顺便说一下,我使用的是EclipseLink).

所有可能的实现都有各自的优点缺点:

  • hashCode()/equals()合同一致性(不变性)为List/ Set操作
  • 是否可以检测到相同的对象(例如来自不同会话,来自延迟加载的数据结构的动态代理)
  • 实体是否在分离(或非持久)状态下正常运行

据我所知,有三种选择:

  1. 不要覆盖它们; 依靠Object.equals()Object.hashCode()
    • hashCode()/ equals()工作
    • 无法识别相同的对象,动态代理的问题
    • 分离实体没有问题
  2. 根据主键覆盖它们
    • hashCode()/ equals()坏了
    • 正确的身份(适用于所有管理实体)
    • 分离实体的问题
  3. 根据Business-Id(非主键字段;外键怎么办?)覆盖它们.
    • hashCode()/ equals()坏了
    • 正确的身份(适用于所有管理实体)
    • 分离实体没有问题

我的问题是:

  1. 我错过了一个选项和/或pro/con点吗?
  2. 您选择了什么选项?为什么?



更新1:

通过" hashCode()/ equals()被破坏",我的意思是连续hashCode()调用可能会返回不同的值,也就是(当正确实施)不在的感觉打破ObjectAPI文档,但是当试图从检索改变实体引起的问题Map, Set或其他基于哈希的Collection.因此,在某些情况下,JPA实现(至少EclipseLink)将无法正常工作. …

java identity hibernate jpa eclipselink

296
推荐指数
9
解决办法
8万
查看次数

如何正确使用ClassLoader.getResources()?

如何使用ClassLoader.getResources()从类路径中查找recursivly资源?

例如

  • 找到META-INF"目录" 中的所有资源:想象一下

    getClass().getClassLoader().getResources("META-INF")

    不幸的是,这只会检索URL到这个"目录".

  • 所有资源命名bla.xml(recursivly)

    getClass().getClassLoader().getResources("bla.xml")

    但是这会返回一个空的Enumeration.

并作为一个奖金问题:如何ClassLoader.getResources()区别ClassLoader.getResource()

java resources classpath classloader getresource

78
推荐指数
5
解决办法
19万
查看次数

Eclipse webtools项目(WTP)及其性能/质量

我们公司几年来一直在使用eclipse(我们从0.7版开始使用WTP)

我目前正在使用WTP 3.2.3评估eclipse 3.6.2,它应该用WTP 3.0.4取代eclipse 3.4.2作为我们的主要IDE.

而且我不得不再次对性能问题感到非常失望:
WTP 3.2.3似乎比3.0.4慢得多.
事实上,我真的很想知道为什么每次发布时WTP会变慢.

我们的一个应用程序(动态Web项目)包含大约4000个java类和700个jsps/jsp片段.我们只需要基本的WTP功能来开发jsps,xmls和xsd.我们不需要像Dali那样的高级功能(JPA工具真的应该由webtools项目覆盖吗?),Libra或者首先是一个可视化的xml编辑器.

另一个有趣的观点是,WTP似乎会降低整个IDE的速度.SWT在几秒钟内是非反应性的,cpu使用率非常高(特别是在构建发生之后 - 如果你查看系统作业,几个jsp/javascript索引器正在工作几分钟,即使所有WTP构建验证器已被禁用),打开新文件较慢,浏览项目等.

这在包含仅一个核心cpu的旧机器上尤为明显.

最糟糕的是,我觉得WTP开发团队并不关心性能 (例如,查看http://wiki.eclipse.org/WTP_Performance_Tests页面 - 最后一次更新发生在2008年).

bug报告和关于向的基本特征表现新闻组帖子(如JSP编辑/确认)一段时间后,往往被忽视或关闭,一些例子:在这里,这里,这里.

Quo vadis,WTP?


请不要误会我的意思:

我不想责怪WTP.
事实上,我相信WTP是一个由才华横溢的团队开发的优秀开源项目.
但很明显,该项目的质量保证存在问题,特别是在影响可用性和用户接受度的性能方面.

我只是想指出,团队应该首先关注对大多数用户至关重要的事情,然后再努力实现超级功能.

我的问题

  • 您对WTP的体验是什么,尤其是最新版本?
  • 你能证实或反驳我的意见吗?
  • 还有更好的选择吗?
  • 你有没有切换到WTP,为什么?
  • 您是否有一些最佳实践来加快速度,特别是像我们这样的中高端?

UPDATE

我想对这个问题进行更新,以反映当前的答案并总结当前的结果:

  • 许多用户或多或少抱怨同样的问题,所以我认为这些问题已得到确认.
    顺便说一句,这个问题也在theserverside.com的新闻帖中提到,附加评论.

  • 负责任的WTP项目负责人nitind在WTP的现状上发表了一篇值得一提的文章,我想引用一句:
    "简单的事实是,我们不会花太多时间在性能测试上,因为我们缺乏这方面的资源."
    "当然,我们希望积极主动,而不是反应,但我们倾向于首先将时间分配给功能性问题."

所以这个问题变成了一些社区对WTP团队的公开信:

Dear WTP team,

it's obvious that WTP …
Run Code Online (Sandbox Code Playgroud)

java eclipse ide jsp eclipse-wtp

54
推荐指数
2
解决办法
1万
查看次数

哪里可以获得rt.jar的完整源代码?

我正在为Oracle JRE/JDK 6 Update 22搜索rt.jar的源代码.交付中包含的src.zip不包含所有源,例如sun.*(例如sun.reflect.Reflection) )包丢失了.

我在哪里可以获得完整的src.zip?

java

45
推荐指数
4
解决办法
8万
查看次数

为非技术决策者(在客户端)升级到Java 6的原因和优势

我想从Java 5升级到Java 6.我们都知道技术优势和好处,但是:

我有一个问题,主要客户拒绝从java 5升级到java 6,因为"风险"和"我们没有/太少的好处"(银行业).

对于客户的非技术性决策者可以回答什么,他将从升级中获得什么好处 - 或者如果他将继续使用Java 5可能会出现哪些问题/后果?

这不是一个"火与忘记"的产品,它通过新的功能/特性进行了扩展 - 开发已经并且将会不断发展 - 开发团队肯定会受益于jdk 6功能/工具.

编辑: Java 5 达到的EOL确实是一个有效点,但它并没有说服客户端,因为他正在使用IBM JRE/JDK 5,这似乎还没有达到它的生命周期.而且,除此之外,客户说:"Java 5运行良好多年,不太可能出现新的,看不见的问题"

java upgrade java-5 java-6

36
推荐指数
6
解决办法
6525
查看次数

可以从命令行检索jconsole数据吗?

我目前正在使用它jconsole来监控我的Java应用程序的性能指标,并希望编写数据采集​​的脚本.

有没有办法检索这些VM指标(堆内存使用情况,线程数,CPU使用率等)STDOUT
数据top -p PID -b -n 1并没有完全削减它.

谢谢

java performance command-line monitoring jconsole

31
推荐指数
5
解决办法
7万
查看次数

是否有java类文件/字节码编辑器来编辑指令?

是否有用于编辑java类文件的实用程序(或eclipse插件)?我想操纵java类文件的字节码而不重新编译它,也没有完整的构建路径.

例如,重命名方法,添加/删除指令,更改常量等.

我找到的唯一工具是:

  • 类编辑 ,但它在功能上非常有限的(如物联网和操作说明改名是不可能的).

  • jbe不保存更改(可能因为类验证失败 - 在我进行任何更改之前,尽管类运行完美)

    (jbe最初有一个类路径问题,将jbe.bat文件的类路径添加到了帮助中)

java bytecode bytecode-manipulation decompiler .class-file

30
推荐指数
3
解决办法
2万
查看次数

Java和XML(JAXP) - 缓存和线程安全怎么样?

  1. 在使用Java API进行XML处理时,我想知道哪些对象可以重用(在相同或不同的文档中),JAXP:

    • DocumentBuilderFactory
    • DocumentBuilder
    • XPath
    • Node
    • ErrorHandler (编辑:我忘了这必须在我自己的代码中实现,抱歉)
  2. 是否建议缓存这些对象或者JAXP实现是否已经缓存它们?

  3. 这些对象的(重新)使用是否是线程安全的

java xml multithreading caching jaxp

26
推荐指数
1
解决办法
7554
查看次数

junit:forkMode ="once"对测试正确性的影响

我想减少构建(使用ant)运行测试所需的时间.目前我使用默认值forkMode,它在每个测试类(perTest)上分配一个新的vm.

我正在考虑切换到forkMode="once"但我不确定这是否会以某种方式结合测试,并且可能在运行我的测试后给我假阳性和/或假阴性结果.

问题:

  1. 每个测试用例是否会获得一个新的ClassLoader,以便之前运行的所有静态引用都不再可访问/可见?

  2. 还有其他导致测试依赖/耦合的测试方法可能会改变行为(除了我没有使用的本机库加载)

  3. 垃圾收集/定型怎么样,它们是在每次测试后运行的吗?(我不依赖它们,但我只想得到完整的图片)


UPDATE

根据当前的答案,当使用forkMode时,似乎junit总是在每个vm/fork的所有测试用例之间共享一个类加载器.(所以forkMode ="once"的确意味着所有测试都有一个类加载器)

这有很多优点(测试速度更快,并且可能导致测试因静态耦合而失败)但也有一些缺点(静态耦合只有在使用共享类加载器时才会起作用 - >误报)

java ant junit continuous-integration unit-testing

20
推荐指数
2
解决办法
6497
查看次数

Java 6 Update 25 VM崩溃:内存不足

有关此问题的更新 - 请参阅下文.

我经历了(可重现的,至少对我而言)jvm 崩溃(不是OutOfMemoryError)(崩溃的应用程序是eclipse 3.6.2).但是,查看崩溃日志让我想知道:

#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 65544 bytes for Chunk::new
# Possible reasons:
#   The system is out of physical RAM or swap space
#   In 32 bit mode, the process size limit was hit
# Possible solutions:
#   Reduce memory load on the system
#   Increase physical memory or swap space
#   Check if swap …
Run Code Online (Sandbox Code Playgroud)

java eclipse windows crash jvm

20
推荐指数
1
解决办法
3万
查看次数