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

建设网站所有步骤班级网站设计模板

建设网站所有步骤,班级网站设计模板,首页关键词排名优化,个人博客系统毕业设计论文hibernate删除记录如何通过适当的日志记录解决一些最常见的Hibernate问题#xff1f; Hibernate的日志记录配置是一个重要但很少讨论的主题。 正确的配置可以帮助您在开发过程中发现潜在的问题#xff0c;而错误的配置则可以在生产中导致严重的性能问题。 这就是我在新书《 … hibernate删除记录 如何通过适当的日志记录解决一些最常见的Hibernate问题 Hibernate的日志记录配置是一个重要但很少讨论的主题。 正确的配置可以帮助您在开发过程中发现潜在的问题而错误的配置则可以在生产中导致严重的性能问题。 这就是我在新书《 Hibernate提示》中解释不同配置选项的原因之一 常见Hibernate问题的70多种解决方案 。 在本文中我们将分享本书中最有用的2个Hibernate日志记录技巧。 让我们开始吧。 1.解决最常见的Hibernate性能问题 让我们看一下本书中包含的食谱之一。 它可以帮助您在开发过程中找到n 1个选择问题。 当Hibernate必须初始化实体之间的延迟获取的关联时经常会发生此性能问题。 不幸的是在源代码中很难找到此问题因为您仅调用了映射关联的属性的getter方法例如author.getBooks 。 如果在循环遍历Author实体列表的循环中执行此操作则Hibernate必须执行1个查询以加载n个Author实体并执行n个其他查询来初始化关联。 这称为n 1选择问题它是最常见的性能问题之一。 您可以通过激活Hibernate的Statistics组件找到它该组件提供了一种简单的方法来对Hibernate Session中所有已执行的查询进行计数。 让我们看看它是如何完成的。 如何计算会话中已执行的查询 问题 我的一些用例很慢似乎执行了太多查询。 如何计算在Hibernate 会话中执行的所有查询 解 计算所有已执行查询的最简单方法是激活Hibernate的统计信息组件。 然后Hibernate收集了大量内部统计数据并将它们作为日志消息并通过Statistics API提供。 警告请勿在生产中使用该产品 收集统计信息会产生开销从而降低您的应用程序速度。 默认情况下Hibernate的统计信息组件处于禁用状态。 您可以通过将hibernate.generate_statistics参数设置为true来激活它。 您可以通过提供具有相同名称的系统属性或通过在persistence.xml文件中设置参数来执行此操作。 persistencepersistence-unit namemy-persistence-unitdescriptionHibernate Tips/descriptionproviderorg.hibernate.jpa.HibernatePersistenceProvider/providerpropertiesproperty namehibernate.generate_statistics valuetrue /…/properties/persistence-unit /persistence 您有两个选项可以访问统计信息。 Hibernate可以将每个会话的最重要信息的子集写入日志文件或者您可以通过Statistics API访问它们。 让我们先来看一下日志消息。 Hibernate在每个会话结束时会写一条类似于以下内容的日志消息。 它显示了SQL语句的数量准备和执行它们所花费的时间以及与第二级缓存的交互。 16:24:55,318 INFO [org.hibernate.engine.internal.StatisticalLoggingSessionEventListener] – Session Metrics {25659 nanoseconds spent acquiring 1 JDBC connections;22394 nanoseconds spent releasing 1 JDBC connections;1091216 nanoseconds spent preparing 12 JDBC statements;11118842 nanoseconds spent executing 12 JDBC statements;0 nanoseconds spent executing 0 JDBC batches;0 nanoseconds spent performing 0 L2C puts;0 nanoseconds spent performing 0 L2C hits;0 nanoseconds spent performing 0 L2C misses;16999942 nanoseconds spent executing 1 flushes (flushing a total of 17 entities and 17 collections);63915 nanoseconds spent executing 1 partial-flushes (flushing a total of 0 entities and 0 collections) 您还可以通过Hibernate的Statistics界面访问Statistics API。 您可以从SessionFactory获得它。 它提供了几种获取方法使您可以访问比日志输出更详细的信息。 Statistics stats sessionFactory.getStatistics(); long queryCount stats.getQueryExecutionCount(); long collectionFetchCount stats.getCollectionFetchCount();源代码 在本书中您可以找到带有可执行测试用例的项目的下载链接其中包含可执行的测试用例。 学到更多 如果您想了解有关Hibernate日志记录功能的更多信息请查看以下章节 如何记录SQL语句及其参数 如何使用查询注释来识别查询 计算已执行的查询可以帮助发现效率低下和避免性能问题。 但这还不够。 您还需要知道Hibernate执行哪些查询以及它使用哪些参数值。 使用正确的日志记录配置Hibernate会将所有这些信息写入日志。 2.如何记录SQL语句及其参数 问题 您如何配置Hibernate使其将已执行SQL语句和已使用的绑定参数写入日志文件 解 Hibernate使用两种不同的日志类别和日志级别来记录已执行SQL语句及其绑定参数 SQL语句作为DEBUG消息写入类别org.hibernate.SQL 。 绑定参数值以日志级别TRACE记录到org.hibernate.type.descriptor.sql类别中。 您可以在日志配置中相互独立地激活和停用它们。 警告记录所有SQL查询及其绑定参数绑定会减慢您的应用程序的速度并创建巨大的日志文件。 您不应该在生产中激活这些日志消息。 以下代码段显示了一个可同时激活两者的log4j配置示例。 log4j.appender.stdoutorg.apache.log4j.ConsoleAppender log4j.appender.stdout.TargetSystem.out log4j.appender.stdout.layoutorg.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern%d{HH:mm:ss,SSS} %-5p [%c] - %m%nlog4j.rootLoggerinfo, stdout # basic log level for all messages log4j.logger.org.hibernateinfo# SQL statements and parameters log4j.logger.org.hibernate.SQLdebug log4j.logger.org.hibernate.type.descriptor.sqltrace 然后Hibernate将类似于以下内容的日志消息写入您的日志文件。 17:34:50,353 DEBUG [org.hibernate.SQL] - select author0_.id as id1_0_, author0_.firstName as firstNam2_0_, author0_.lastName as lastName3_0_, author0_.version as version4_0_ from Author author0_ where author0_.id1 17:34:50,362 TRACE [org.hibernate.type.descriptor.sql.BasicExtractor] - extracted value ([id1_0_] : [BIGINT]) - [1] 17:34:50,373 TRACE [org.hibernate.type.descriptor.sql.BasicExtractor] - extracted value ([firstNam2_0_] : [VARCHAR]) - [Thorben] 17:34:50,373 TRACE [org.hibernate.type.descriptor.sql.BasicExtractor] - extracted value ([lastName3_0_] : [VARCHAR]) - [Janssen] 17:34:50,374 TRACE [org.hibernate.type.descriptor.sql.BasicExtractor] - extracted value ([version4_0_] : [INTEGER]) - [0] 代码段中SQL语句不容易阅读。 当您告诉Hibernate格式化它时情况会好得多。 您可以通过将配置参数hibernate.format_sql设置为true来实现 。 您可以将其提供为系统属性也可以在persistence.xml文件中进行设置例如以下代码片段或在hibernate.cfg.xml文件中进行设置。 ?xml version1.0 encodingUTF-8 standaloneyes? persistencepersistence-unit namemy-persistence-unitdescriptionHibernate Tips/descriptionproviderorg.hibernate.jpa.HibernatePersistenceProvider/providerexclude-unlisted-classesfalse/exclude-unlisted-classespropertiesproperty namehibernate.format_sql valuetrue /.../properties/persistence-unit /persistence 下面的代码片段显示了格式化SQL语句它比上一条消息更易于阅读。 16:42:56,873 DEBUG [org.hibernate.SQL] -selectauthor0_.id as id1_0_,author0_.firstName as firstNam2_0_,author0_.lastName as lastName3_0_,author0_.version as version4_0_fromAuthor author0_whereauthor0_.id? 16:42:56,926 TRACE [org.hibernate.type.descriptor.sql.BasicBinder] - binding parameter [1] as [BIGINT] - [1] 16:42:56,950 TRACE [org.hibernate.type.descriptor.sql.BasicExtractor] - extracted value ([id1_0_] : [BIGINT]) - [1] 16:42:56,965 TRACE [org.hibernate.type.descriptor.sql.BasicExtractor] - extracted value ([firstNam2_0_] : [VARCHAR]) - [Thorben] 16:42:56,965 TRACE [org.hibernate.type.descriptor.sql.BasicExtractor] - extracted value ([lastName3_0_] : [VARCHAR]) - [Janssen] 16:42:56,966 TRACE [org.hibernate.type.descriptor.sql.BasicExtractor] - extracted value ([version4_0_] : [INTEGER]) - [0]源代码 在本书中您可以找到带有可执行测试用例的项目的下载链接其中包含可执行的测试用例。 使您的日志更好 如前所述激活TRACE和DEBUG级别的消息并将其发送到您的日志可能会导致文件很大甚至可能减慢您的应用程序的速度。 但是它们可能包含对于调试过程至关重要的信息并且可以帮助您在关键错误投产之前确定关键错误。 OverOps会向您显示错误之前在生产中记录的最后250个DEBUGTRACE和INFO级别的语句即使它们已关闭并且从未到达日志文件。 它还显示任何异常记录的错误或警告背后的变量状态而无需依赖实际记录的信息。 您可以在错误的整个调用堆栈中看到完整的源代码和变量状态甚至在微服务和计算机上也可以看到。 探索调试生产中错误的新方法。 观看OverOps的现场演示 。 结论 有关更多类似的食谱请查看我的新书《 Hibernate Tips70多种常见Hibernate问题的解决方案》 。 它为您提供了70多个现成的食谱用于基本和高级映射日志记录Java 8支持缓存以及静态和动态定义的查询等主题。 在短短几天内您可以在hibernate-tips.com上以$ 2.99的价格获得电子书以$ 12.99的价格获得平装本。 翻译自: https://www.javacodegeeks.com/2017/04/hibernate-logging-tips-solutions-common-problems.htmlhibernate删除记录
http://www.yutouwan.com/news/465912/

相关文章:

  • 阿里云服务器添加网站宝安中心医院怎么样
  • 给网站网站做推广犯法网站建设包涵哪些领域
  • 惠州建站平台影楼后期修图培训学校
  • 国外社交网站做的比较好的是八上电脑课做网站需要什么软件
  • 拐角型网站石龙镇网站建设公司
  • 邯郸网站推广移动端网站怎么制作
  • 网站开发校园经历范文wordpress 静态化插件
  • 建了一个网站 如何找到放图片的文件夹wordpress获取照片信息
  • 国办网站建设规范制作企业宣传片的厂家
  • 网站建设 团队介绍wordpress木子
  • 济南机关建设网站wordpress 无法打开
  • 做网站 想做成宽屏的手机网站活动策划方案
  • 做网站制作一般多少钱网站建设放哪个科目好
  • 影响网站权重的因素有哪些开发软件学什么专业
  • 深圳做网站公司有哪些公司苏州十大广告公司
  • 不用代码可以做网站设计吗品牌设计公司是做什么的
  • 沈阳做网站的地方做网站需要了解的知识
  • 网站群建设方案.docwordpress 搭建博客
  • 网站推广报价页面设计原则
  • 网上做调查问卷赚钱的网站微网站建设及微信推广方案ppt
  • 网站案例展示怎么做网站多域名怎么做
  • 如何做视频网站的广告推广山西省网站域名备案得多长时间
  • 淘宝做问卷的网站好wordpress 打车
  • 做网站推广方法seo关键词优化最多可以添加几个词
  • 建设信用卡登录中心网站怎样做网站跳转
  • 京东自营入驻流程及费用百度seo公司
  • 千岛湖建设集团有限公司网站门户网站的布局
  • 江门网站建设维护减压疗程wordpress
  • 网站建设专业的商家微信下单小程序怎么开通
  • 帮别人做高仿产品网站 违法么兰州优化定制