当前位置: 首页 > 面试题库 >

休眠-字节码检测和字节码增强之间的区别?

江煜
2023-03-14
问题内容

我正在使用Hibernate
4.2并构建时间字节码工具来解决出现在@OneToOne关系上的懒惰问题和@Lobhttps://developer.jboss.org/wiki/SomeExplanationsOnLazyLoadingone-
to-one

您知道之间有什么区别吗?

Hibernate字节码检测工具:http :
//docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/ch20.html#performance-
fetching-lazyproperties

Hibernate字节码增强功能:http :
//docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/ch20.html#bytecode-
enhancement

因为在hibernate文档中是这样写的:

EnhancementTask旨在替代InstrumentTask。此外,它也与InstrumentTask不兼容,因此任何现有的已检测类都需要再次从源构建。

我可以通过使用字节码检测解决问题,但不能通过使用字节码增强来解决。你知道为什么吗 ?

也许这个新功能没有得到充分开发?

感谢您的帮助。


问题答案:

答案是字节码增强的完成方式。让我们看看两种情况下会发生什么

  1. 字节码检测:在“运行时”期间将字节码添加到Java类。它不是真正在运行时,而是在Java类的“加载”时。此外,您可以详细阅读这篇文章。

  1. 字节码增强:字节码增强可以在运行时或构建时(脱机)执行。在运行时执行增强时,持久类在加载时会得到增强。脱机执行增强时,将在后编译步骤中增强类文件。

在字节码增强的大多数情况下,它们是在后期编译时完成的。如果您的Hibernate字节码增强就是这种情况,那么是的,更改代码的显而易见的选择是字节码检测。



 类似资料:
  • 我正在尝试将字节码增强功能添加到基于Java的Hibernate应用程序中。Hibernate是版本5.2.6.final,它内置在maven中,所以我使用的是hibernate-enhance-maven-plugin。我已经测试了以下直到5.2.18.final的问题,但结果是相同的。 “enableAssociationManagement”选项给了我几个问题,应用程序无法增强。我的问题是,

  • 是否有可能使用JPA接口(实体图)急切地加载@*ToOne属性,这些接口使用父实体类中的@LazyToOne、@LazyGroup设置为懒惰,并启用了字节码增强?我正试图急切地使用实体图加载此类属性,但当查询父实体时,它会触发对此类@*ToOne属性的另一个查询。 试图用另一种方法覆盖实体类中的静态获取类型,包括@LazyToOne,它添加了字节码增强功能。 使用Spring 5.1.3、Spri

  • 我使用下面的链接作为参考来实现从PostgreSQL DB懒惰加载图像: URL 在我的用户实体中,我声明字节数组字段: 在pom.xml文件我包括hiberante增强插件: 问题是,当我从数据库中获取用户实体时,也会加载化身字节数组,这是我不想要的。 我知道hibernate enhance maven插件应该增强/改变用户。类文件,这没有发生。 我错过什么了吗? 更新: 我执行增强目标: 组

  • 本文向大家介绍字节码和机器码的区别相关面试题,主要包含被问及字节码和机器码的区别时的应答技巧和注意事项,需要的朋友参考一下 机器码,学名机器语言指令,有时也被称为原生码,是电脑的CPU可直接解读的数据。 字节码是一种中间状态(中间码)的二进制代码(文件)。需要直译器转译后才能成为机器码。 -----------      

  • > 在计算机汇编语言中,助记符是操作的缩写。它被输入到每个汇编程序指令的操作代码字段中。例如,表示将注册为。所以、和都是助记符。它们由汇编器翻译。 汇编语言中的指令(语句)一般非常简单,不像高级编程语言中的指令(语句)。通常,助记符是单个可执行机器语言指令(操作码)的符号名称,并且为每个机器语言指令定义至少一个操作码助记符。每个指令通常由一个操作或操作码加上零个或多个操作数组成。

  • 问题内容: 我读取了大约1000个文件名,其中一些文件以UTF8编码,而某些文件为CP1252。 我想将它们全部解码为Unicode,以便在脚本中进行进一步处理。有没有一种方法可以使源编码正确解码为Unicode? 例: 问题答案: 如果您的文件位于和中,则有一种简单的方法。 否则,有一个字符集检测库。 Python-检测字符集并转换为utf-8 https://pypi.python.org/p