专栏名称: IT老兵哥
应用架构专家/企业大学讲师
目录
相关文章推荐
华泰期货要咨询  ·  早盘解读 | ADP数据大幅低于预期 ... ·  7 小时前  
华泰期货要咨询  ·  直播预告 | 黄金行情分析展望 10:00 ·  7 小时前  
江苏药品监管  ·  徐州检查分局举办药品生产企业落实质量安全主体 ... ·  21 小时前  
江苏药品监管  ·  徐州检查分局举办药品生产企业落实质量安全主体 ... ·  21 小时前  
田俊国讲坛  ·  【6月12日】第21期《18天金课开发训练营 ... ·  2 天前  
51好读  ›  专栏  ›  IT老兵哥

程序员必须练就的「性能调优」组合拳【4】

IT老兵哥  · 掘金  ·  · 2020-01-21 06:29

正文

请到「今天看啥」查看全文



今天老兵哥将介绍通过优化 对象关系映射 ORM 框架 (Hibernate)等来优化系统性能的方法。

4. ORM 框架 Hibernate

对象-关系映射 ORM(Object/Relation Mapping),是伴随着面向对象软件开发方法的发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流方法,关系数据库是企业级应用环境中数据永久存储的主流数据存储系统。对象和关系是业务实体数据的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。

对象-关系映射 ORM 系统通常以中间件的形式存在,借助描述对象到关系数据库数据的映射元数据,将内存中的对象自动持久化到关系数据库中,其本质就是将数据从一种形式转换到另外一种形式。这个转换过程需要额外的开销,自然也就存在许多优化的机会,接下来我们一起来看看如何提升 ORM 框架 Hibernate 的性能。

4.1 批量处理

应用或者 ORM 框架每次执行 SQL 语句都需要跟数据库建立连接,每次建立连接都需要额外开销。如果某个事务内部有循环多次操作数据库的场景,那么将这些操作汇集在一起批量执行,这样就可以降低损耗,具体如下:

  • 批量插入

使用这种方法时,首先在 Hibernate 的配置文件 hibernate.cfg.xml 中设置批量尺寸属性 hibernate.jdbc.batch_size ,且最好关闭Hibernate的二级缓存以提高效率。

<hibernate-configuration><session-factory><property name="hibernate.jdbc.batch_size">50</property> //设置尺寸<property name="hibernate.cache.use_second_level_cache">false</property> //关闭缓存<mapping resource="com/itlaobingge/po/User.hbm.xml" /></session-factory></hibernate-configuration>复制代码


public class HibernateDemo {public static void main(String args[]) {Session session = HibernateSessionFactory.getSession();Transaction ts = session.beginTransaction();for






请到「今天看啥」查看全文