千锋教育-做有情怀、有良心、有品质的IT职业教育机构
位置:首页 > 行业动态

千锋深圳培训老师分享 高性能Java持久化的六个技巧

时间:2018-01-30 14:49:25  |  来源:千锋教育  |  作者:千锋  

  一个高性能的数据访问层需要大量关于数据库内部、JDBC、JPA、Hibernate的知识,千锋深圳Java培训老师在本文总结了一些可用来优化企业应用程序的重要的技术。

千锋03735.jpg

  1、SQL语句日志

  如果您用了生成符合自己使用习惯的语句的框架,则应始终验证每个语句的有效性和效率。测试时使用断言机制验证好,因为即使在提交代码之前,也可以捕获N + 1个查询问题。

  2、连接管理

  数据库的连接开销非常大,因此您应该始终使用连接池机制。由于连接数由底层数据库集群的功能给出,所以您需要尽可能快地释放连接。在性能调优中,你总是要测量、设置出正确的连接池,池的大小又是差不多的。

  但像FlexyPool这样工具可以帮助您找到合适的大小,即使您已经将应用程序部署到生产环境中。

  3、JDBC批处理

  JDBC批处理允许我们在单个数据库往返中发送多个SQL语句。性能增益在驱动程序和数据库端都很重要。Prepared Statements 非常适合批处理,而某些数据库系统(例如 Oracle)仅支持用于预处理语句的批处理。

  4、语句缓存

  语句缓存是您可以轻松利用的鲜为人知的性能优化之一。 根据基础的JDBC驱动程序,可以在客户端(驱动程序)或数据库端(语法树甚至执行计划)上缓存Prepared Statements。

  5、Hibernate 标识符

  当使用Hibernate时,IDENTITY生成器不是一个好的选择,因为它禁用了JDBC批处理。TABLE生成器糟糕,因为它使用一个单独的事务来获取新的标识符,这会对底层事务日志以及连接池造成压力,因为每次我们需要一个新的标识符时都需要单独的连接。

  SEQUENCE是正确的选择,甚至从2012版本就开始支持SQL Server。对于SEQUENCE标识符,Hibernate一直提供优化器,如 pooled 或 pooled-lo,这可以减少获取新的实体标识符值所需的数据库往返次数。

  6、选择正确的列类型

  您应该始终在数据库端使用正确的列类型。 列类型越紧凑,数据库工作集中可容纳的条目越多,索引将好地适应于内存。 为此,您应该利用特定于数据库的类型(例如PostgreSQL中的IPv4地址的inet),尤其是在实现新自定义类型时,Hibernate非常灵活。

  高性能数据访问层必须与底层数据库系统互相响应。了解关系数据库和正在使用的数据访问框架的内部工作原理可以使企业高性能应用程序和几乎没有crawls的应用程序之间产生差异。

上一篇:深圳Python培训需要多久才合理 23周时长真的够吗
下一篇:千锋深圳Java培训靠谱 用良心做教育

课程咨询

千锋开发者联盟QQ群

JavaEE学习交流群:343013298

HTML5学习技术交流群: 314548237

UI技术学习交流群:159532533

PHP学习交流群:517739045

  • 深圳科技园校区:深圳市南山区科苑南路高新技术产业园R3-B栋5层
    深圳大学城校区:深圳市南山区留仙大道1201号大学城创客小镇16栋2楼、3楼
    咨询电话:0755-86681178/9-801
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、好程序员特训营
  • 北京天丰利校区:北京市海淀区宝盛北里西区28号天丰利商城4层
    北京沙河校区:北京市昌平区沙阳路18号北京科技职业技术广场服务楼2层、南区服务楼2层
    咨询电话:400-654-7778 010-82790226/7-801
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训、好程序员特训营
  • 上海地址:上海市宝山区同济支路199号智慧七立方3号楼2-4层
    咨询电话:400-627-7899 021-65025129-601
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、好程序员特训营
  • 郑州地址:郑州市金水区纬五路21号河南教育综合楼6楼、7楼
    咨询电话:0371-55911950 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训
  • 广州地址:广州市天河区元岗路310号智汇park创意园E座5层
    咨询电话:020-22119207 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 大连地址:大连市高新园区软件园路2号B8座
    咨询电话:0411-39026086 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 武汉地址:武汉市东新区光谷大道77号金融港B26栋9楼
    咨询电话:027-59905909 027-59905908 027-59905902
    面授课程:iOS课程培训、Android课程培训
  • 成都地址:成都市一环路西二段17号四川旅游青羊校区内
    咨询电话:028-83178771 028-61967740
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训
  • 西安地址:西安市二环南路西段60号永安大厦4层
    咨询电话:029-85260160 029-85261030 029-85260960
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 杭州地址:浙江省杭州市江干区九堡旺田书画城A座4层
    咨询电话:0571-86893632 010-82790226/7-801
    面授课程:iOS课程培训、Android课程培训
  • 青岛校区地址:青岛市市南区金坛路17号青岛职业技术南校区实训楼A4层
    咨询电话:0532-80910752/3 010-82790226/7-801
    面授课程:iOS课程培训、Android课程培训
  • 千锋学员专属客户端
    “锋向标”扫描下载

  • 千锋教育微信号
    扫描加好友

关闭