当前位置: 首页 > news >正文

茂港网站设计公司wordpress创建目录

茂港网站设计公司,wordpress创建目录,网站建设不能持续消费,下载一个百度导航介绍 既然您了解了Hibernate脏检查的基础知识 #xff0c;我们就可以研究增强的脏检查机制。 虽然默认的图遍历算法对于大多数用例可能已足够#xff0c;但有时您需要优化的脏检查算法#xff0c;并且检测方法比构建自己的自定义策略更方便。 使用Ant休眠工具 传统上#… 介绍 既然您了解了Hibernate脏检查的基础知识 我们就可以研究增强的脏检查机制。 虽然默认的图遍历算法对于大多数用例可能已足够但有时您需要优化的脏检查算法并且检测方法比构建自己的自定义策略更方便。 使用Ant休眠工具 传统上Hibernate Tools一直专注于Ant和Eclipse。 从Hibernate 3开始就可以进行字节码检测但是它需要Ant任务才能运行CGLIB或Javassist字节码增强例程。 Maven支持通过maven-antrun-plugin运行Ant任务 buildpluginspluginartifactIdmaven-antrun-plugin/artifactIdexecutionsexecutionidInstrument domain classes/idconfigurationtaskstaskdef nameinstrumentclassnameorg.hibernate.tool.instrument.javassist.InstrumentTaskclasspathpath refidmaven.dependency.classpath/path refidmaven.plugin.classpath//classpath/taskdefinstrument verbosetruefileset dir${project.build.outputDirectory}include name**/flushing/*.class//fileset/instrument/tasks/configurationphaseprocess-classes/phasegoalsgoalrun/goal/goals/execution/executionsdependenciesdependencygroupIdorg.hibernate/groupIdartifactIdhibernate-core/artifactIdversion${hibernate.version}/version/dependencydependencygroupIdorg.javassist/groupIdartifactIdjavassist/artifactIdversion${javassist.version}/version/dependency/dependencies/plugin/plugins /build 因此对于以下实体源类 Entity public class EnhancedOrderLine {IdGeneratedValue(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() {return orderedOn;}public void setOrderedOn(Date orderedOn) {this.orderedOn orderedOn;} } 在构建期间将生成以下类 Entity public class EnhancedOrderLine implements FieldHandled {IdGeneratedValue(strategyGenerationType.AUTO)private Long id;private Long number;private String orderedBy;private Date orderedOn;private transient FieldHandler $JAVASSIST_READ_WRITE_HANDLER;public Long getId() {return $javassist_read_id();}public Long getNumber() {return $javassist_read_number();}public void setNumber(Long number) {$javassist_write_number(number);}public String getOrderedBy() {return $javassist_read_orderedBy();}public void setOrderedBy(String orderedBy) {$javassist_write_orderedBy(orderedBy);}public Date getOrderedOn() {return $javassist_read_orderedOn();}public void setOrderedOn(Date orderedOn) {$javassist_write_orderedOn(orderedOn);}public FieldHandler getFieldHandler() {return this.$JAVASSIST_READ_WRITE_HANDLER;}public void setFieldHandler(FieldHandler paramFieldHandler) {this.$JAVASSIST_READ_WRITE_HANDLER paramFieldHandler;}public Long $javassist_read_id() {if (getFieldHandler() null)return this.id;}public void $javassist_write_id(Long paramLong) {if (getFieldHandler() null) {this.id paramLong;return;}this.id ((Long)getFieldHandler().writeObject(this, id, this.id, paramLong));}public Long $javassist_read_number() {if (getFieldHandler() null)return this.number;}public void $javassist_write_number(Long paramLong) {if (getFieldHandler() null) {this.number paramLong;return;}this.number ((Long)getFieldHandler().writeObject(this, number, this.number, paramLong));}public String $javassist_read_orderedBy() {if (getFieldHandler() null)return this.orderedBy;}public void $javassist_write_orderedBy(String paramString) {if (getFieldHandler() null) {this.orderedBy paramString;return;}this.orderedBy ((String)getFieldHandler().writeObject(this, orderedBy, this.orderedBy, paramString));}public Date $javassist_read_orderedOn() {if (getFieldHandler() null)return this.orderedOn;}public void $javassist_write_orderedOn(Date paramDate) {if (getFieldHandler() null) {this.orderedOn paramDate;return;}this.orderedOn ((Date)getFieldHandler().writeObject(this, orderedOn, this.orderedOn, paramDate));} } 尽管org.hibernate.bytecode.instrumentation.spi.AbstractFieldInterceptor设法拦截脏字段但在进行脏污跟踪时从未真正询问过此信息。 InstrumentTask字节码增强功能只能分辨一个实体是否脏了缺乏对指示已修改哪些属性的支持因此使InstrumentTask更适合“ No-proxy” LAZY提取策略 。 休眠增强Maven插件 Hibernate 4.2.8增加了对专用Maven字节码增强插件的支持 。 Maven字节码增强插件易于配置 buildpluginsplugingroupIdorg.hibernate.orm.tooling/groupIdartifactIdhibernate-enhance-maven-plugin/artifactIdexecutionsexecutionphasecompile/phasegoalsgoalenhance/goal/goals/execution/executions/plugin/plugins /build 在项目构建期间将生成以下类 Entity public class EnhancedOrderLineimplements ManagedEntity, PersistentAttributeInterceptable, SelfDirtinessTracker {IdGeneratedValue(strategy GenerationType.AUTO)private Long id;private Long number;private String orderedBy;private Date orderedOn;Transientprivate transient PersistentAttributeInterceptor $$_hibernate_attributeInterceptor;Transientprivate transient Set $$_hibernate_tracker;Transientprivate transient CollectionTracker $$_hibernate_collectionTracker;Transientprivate transient EntityEntry $$_hibernate_entityEntryHolder;Transientprivate transient ManagedEntity $$_hibernate_previousManagedEntity;Transientprivate transient ManagedEntity $$_hibernate_nextManagedEntity;public Long getId() {return $$_hibernate_read_id();}public Long getNumber() {return $$_hibernate_read_number();}public void setNumber(Long number) {$$_hibernate_write_number(number);}public String getOrderedBy() {return $$_hibernate_read_orderedBy();}public void setOrderedBy(String orderedBy) {$$_hibernate_write_orderedBy(orderedBy);}public Date getOrderedOn() {return $$_hibernate_read_orderedOn();}public void setOrderedOn(Date orderedOn) {$$_hibernate_write_orderedOn(orderedOn);}public PersistentAttributeInterceptor $$_hibernate_getInterceptor() {return this.$$_hibernate_attributeInterceptor;}public void $$_hibernate_setInterceptor(PersistentAttributeInterceptor paramPersistentAttributeInterceptor) {this.$$_hibernate_attributeInterceptor paramPersistentAttributeInterceptor;}public void $$_hibernate_trackChange(String paramString) {if (this.$$_hibernate_tracker null)this.$$_hibernate_tracker new HashSet();if (!this.$$_hibernate_tracker.contains(paramString))this.$$_hibernate_tracker.add(paramString);}private boolean $$_hibernate_areCollectionFieldsDirty() {return ($$_hibernate_getInterceptor() ! null) (this.$$_hibernate_collectionTracker ! null);}private void $$_hibernate_getCollectionFieldDirtyNames(Set paramSet) {if (this.$$_hibernate_collectionTracker null)return;}public boolean $$_hibernate_hasDirtyAttributes() {return ((this.$$_hibernate_tracker null) || (this.$$_hibernate_tracker.isEmpty())) ($$_hibernate_areCollectionFieldsDirty());}private void $$_hibernate_clearDirtyCollectionNames() {if (this.$$_hibernate_collectionTracker null)this.$$_hibernate_collectionTracker new CollectionTracker();}public void $$_hibernate_clearDirtyAttributes() {if (this.$$_hibernate_tracker ! null)this.$$_hibernate_tracker.clear();$$_hibernate_clearDirtyCollectionNames();}public SetString $$_hibernate_getDirtyAttributes() {if (this.$$_hibernate_tracker null)this.$$_hibernate_tracker new HashSet();$$_hibernate_getCollectionFieldDirtyNames(this.$$_hibernate_tracker);return this.$$_hibernate_tracker;}private Long $$_hibernate_read_id() {if ($$_hibernate_getInterceptor() ! null)this.id ((Long) $$_hibernate_getInterceptor().readObject(this, id, this.id));return this.id;}private void $$_hibernate_write_id(Long paramLong) {if (($$_hibernate_getInterceptor() null) || ((this.id null) || (this.id.equals(paramLong))))break label39;$$_hibernate_trackChange(id);label39:Long localLong paramLong;if ($$_hibernate_getInterceptor() ! null)localLong (Long) $$_hibernate_getInterceptor().writeObject(this, id, this.id, paramLong);this.id localLong;}private Long $$_hibernate_read_number() {if ($$_hibernate_getInterceptor() ! null)this.number ((Long) $$_hibernate_getInterceptor().readObject(this, number, this.number));return this.number;}private void $$_hibernate_write_number(Long paramLong) {if (($$_hibernate_getInterceptor() null) || ((this.number null) || (this.number.equals(paramLong))))break label39;$$_hibernate_trackChange(number);label39:Long localLong paramLong;if ($$_hibernate_getInterceptor() ! null)localLong (Long) $$_hibernate_getInterceptor().writeObject(this, number, this.number, paramLong);this.number localLong;}private String $$_hibernate_read_orderedBy() {if ($$_hibernate_getInterceptor() ! null)this.orderedBy ((String) $$_hibernate_getInterceptor().readObject(this, orderedBy, this.orderedBy));return this.orderedBy;}private void $$_hibernate_write_orderedBy(String paramString) {if (($$_hibernate_getInterceptor() null) || ((this.orderedBy null) || (this.orderedBy.equals(paramString))))break label39;$$_hibernate_trackChange(orderedBy);label39:String str paramString;if ($$_hibernate_getInterceptor() ! null)str (String) $$_hibernate_getInterceptor().writeObject(this, orderedBy, this.orderedBy, paramString);this.orderedBy str;}private Date $$_hibernate_read_orderedOn() {if ($$_hibernate_getInterceptor() ! null)this.orderedOn ((Date) $$_hibernate_getInterceptor().readObject(this, orderedOn, this.orderedOn));return this.orderedOn;}private void $$_hibernate_write_orderedOn(Date paramDate) {if (($$_hibernate_getInterceptor() null) || ((this.orderedOn null) || (this.orderedOn.equals(paramDate))))break label39;$$_hibernate_trackChange(orderedOn);label39:Date localDate paramDate;if ($$_hibernate_getInterceptor() ! null)localDate (Date) $$_hibernate_getInterceptor().writeObject(this, orderedOn, this.orderedOn, paramDate);this.orderedOn localDate;}public Object $$_hibernate_getEntityInstance() {return this;}public EntityEntry $$_hibernate_getEntityEntry() {return this.$$_hibernate_entityEntryHolder;}public void $$_hibernate_setEntityEntry(EntityEntry paramEntityEntry) {this.$$_hibernate_entityEntryHolder paramEntityEntry;}public ManagedEntity $$_hibernate_getPreviousManagedEntity() {return this.$$_hibernate_previousManagedEntity;}public void $$_hibernate_setPreviousManagedEntity(ManagedEntity paramManagedEntity) {this.$$_hibernate_previousManagedEntity paramManagedEntity;}public ManagedEntity $$_hibernate_getNextManagedEntity() {return this.$$_hibernate_nextManagedEntity;}public void $$_hibernate_setNextManagedEntity(ManagedEntity paramManagedEntity) {this.$$_hibernate_nextManagedEntity paramManagedEntity;} } 很容易意识到新的字节码增强逻辑与以前的InstrumentTask生成的逻辑不同。 与自定义脏检查机制类似新的字节码增强版本记录了已更改的属性而不仅仅是一个简单的脏布尔标志。 更改时增强逻辑会标记脏字段。 这种方法比必须将所有当前属性值与加载时快照数据进行比较要有效得多。 我们到了吗 即使实体类字节码得到了增强使用Hibernate 4.3.6 仍然以某种方式缺少一些拼图 。 例如当调用setNumberLong number时 将执行以下拦截方法 private void $$_hibernate_write_number(Long paramLong) {if (($$_hibernate_getInterceptor() null) || ((this.number null) || (this.number.equals(paramLong))))break label39;$$_hibernate_trackChange(number);label39:Long localLong paramLong;if ($$_hibernate_getInterceptor() ! null)localLong (Long) $$_hibernate_getInterceptor().writeObject(this, number, this.number, paramLong);this.number localLong;} 在我的示例中$$ _ hibernate_getInterceptor始终为null从而绕过$$ _ hibernate_trackChange“ number”调用。 因此将不会记录任何脏属性从而迫使Hibernate退回到默认的深度比较脏检查算法 。 因此即使Hibernate在该特定领域取得了长足的进步肮脏检查的增强仍然需要额外的工作才能变得容易获得。 代码可在GitHub上获得 。 翻译自: https://www.javacodegeeks.com/2014/09/hibernate-bytecode-enhancement.html
http://www.pierceye.com/news/133973/

相关文章:

  • 厦门做个网站多少钱360建筑网官网下载
  • 镇江外贸网站建设电子工程王粟
  • 申请网站建设经费wordpress做商城网站
  • google下载app西安分类信息seo公司
  • 淘宝是什么语言做的网站手机网站开发+手机模拟器
  • 视频网站开发框架小说类网站功能建设
  • 网站规划与设计案例网站建设方案设计
  • 漯河网站建设费用成都网站建设重庆最加科技
  • 莱芜 网站wordpress 关闭警告
  • 深圳做棋牌网站建设哪家技术好建设一个网站的规划
  • 网站开发流程比较合理网站已经申请了域名 接下来怎么
  • 校园电商平台网站建设网站网址模板
  • 沈阳有资质做网站的公司温州做网站定制
  • wordpress codex网站seo和sem是什么意思
  • 建网站平台哪家好装修设计软件app排行
  • 网站开发文档撰写企业管理培训课程图片
  • 网站开发公司资质wordpress文章管理模板
  • 建筑网站知识大全江苏有哪些网站建设的公司
  • 江汉网站建设用js做网站登录
  • wordpress做购物网站河南省建设工程造价协会网站
  • wex5可以做网站吗爱射影院网站建设中
  • 网站建设多选题百度文库做好中心网站建设工作总结
  • 网站开发都用phpwordpress文章内图片幻灯片
  • 岳阳网站建设企业绿色大气漂亮dedecms茶叶企业网站
  • 网站建设使用虚拟主机的优点与缺点做百科网站
  • 网站被墙是谁做的电影网站模板
  • 合肥建设网官方网站网页设计网站制作公司
  • 外贸网站建设评价网站的营销方案
  • 邯郸专业做wap网站中国设计网址导航
  • 邯郸移动网站建设价格官方网站车联网是谁做