Hibernate字节码增强

介绍

既然您已经了解了Hibernate脏检查的基础知识 ,我们就可以深入研究增强的脏检查机制。 虽然默认的图遍历算法对于大多数用例可能已经足够,但有时您需要优化的脏检查算法,并且检测方法比构建自己的自定义策略更方便。

使用AntHibernate工具

传统上,Hibernate Tools专注于Ant和Eclipse。 从Hibernate 3开始就可以使用字节码检测了,但是它需要Ant任务来运行CGLIBJavassist字节码增强例程。

Maven支持通过maven-antrun-plugin运行Ant任务:

<build>
	<plugins>
		<plugin>
			<artifactId>maven-antrun-plugin</artifactId>
			<executions>
				<execution>
					<id>Instrument domain classes</id>
					<configuration>
						<tasks>
							<taskdef name="instrument"
									 classname="org.hibernate.tool.instrument.javassist.InstrumentTask">
								<classpath>
									<path refid="maven.dependency.classpath"/>
									<path refid="maven.plugin.classpath"/>
								</classpath>
							</taskdef>
							<instrument verbose="true">
								<fileset dir="${project.build.outputDirectory}">
									<include name="**/flushing/*.class"/>
								</fileset>
							</instrument>
						</tasks>
					</configuration>
					<phase>process-classes</phase>
					<goals>
						<goal>run</goal>
					</goals>
				</execution>
			</executions>
			<dependencies>
				<dependency>
					<groupId>org.hibernate</groupId>
					<artifactId>hibernate-core</artifactId>
					<version>${hibernate.version}</version>
				</dependency>
				<dependency>
					<groupId>org.javassist</groupId>
					<artifactId>javassist</artifactId>
					<version>${javassist.version}</version>
				</dependency>
			</dependencies>
		</plugin>
	</plugins>
</build>

因此,对于以下实体源类:

@Entity
public class EnhancedOrderLine {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private Long number;

    private String orderedBy;

    private Date orderedOn;

    public Long getId() {
        return id;
    }

    public Long getNumber() {
        return number;
    }

    public void setNumber(Long number) {
        this.number = number;
    }

    public String getOrderedBy() {
        return orderedBy;
    }

    public void setOrderedBy(String orderedBy) {
        this.orderedBy = orderedBy;
    }

    public Date getOrderedOn() {
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值