正文
今天老兵哥将介绍通过优化
对象关系映射 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