星空网 > 软件开发 > Java

Hibernate性能优化之SessionFactory重用

Hibernate优化的方式有很多,如缓存、延迟加载以及与SQL合理映射,通过对SessionFactory使用的优化是最基础的。

SessionFactory负责创建Session实例,Session相当于JDBC里的Connection。

SessionFactory的创建


SessionFactory是通过Configuration来构建的,Configuration会根据配置信息来构建SessionFactory。

SessionFactory中保存了对应当前数据库配置的所有映射关系,还负责维护二级缓存和Statement池,因此SessionFactory的创建过程是非常耗时的。

Hibernate建议在代码中设计SessionFactory的重用策略,并且SessionFactory默认是线程安全的,允许多个线程并发调用。

一般系统中只需创建一个SessionFactory实例,可以避免每次重新创建的时间,还可以更好的共享二级缓存。

SessionFactory的重用


NetBeans提供默认的HibernateUtil.java来重用SessionFactory。

在我自己的项目中自己实现了一个重用类,可以作为参考:

public class HibernateSessionFactory {  private final Configuration configuration;  private final ServiceRegistry serviceRegistry;  private final SessionFactory sessionFactory;  private HibernateSessionFactory() {    configuration = new Configuration().configure();    serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).build();    sessionFactory = configuration.buildSessionFactory(serviceRegistry);  }  public Session getSession() {    return sessionFactory.openSession();  }  private static class SingletonHolder {    private final static HibernateSessionFactory INSTANCE = new HibernateSessionFactory();  }  public static HibernateSessionFactory getInstance() {    return SingletonHolder.INSTANCE;  }}

这个地方设计时要考虑多线程的环境,因此使用内部类来支持多线程。

性能测试


对于重用前和重用后用ab命令进行了简单的性能测试,性能提升一倍,效果还是非常明显的。

重用前:

Hibernate性能优化之SessionFactory重用

重用后:

Hibernate性能优化之SessionFactory重用


记录,为更好的自己!




原标题:Hibernate性能优化之SessionFactory重用

关键词:Hibernate

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

Shopee Fans(虾皮助手):https://www.ikjzd.com/w/3282
BPOM认证:https://www.ikjzd.com/w/3283
麒麟计划:https://www.ikjzd.com/w/3284
Shopmatic:https://www.ikjzd.com/w/3285
Trade B2B:https://www.ikjzd.com/w/3286
顺丰快递(国际):https://www.ikjzd.com/w/3287
在古巴做游轮 古巴旅游项目:https://www.vstour.cn/a/363194.html
西藏旅游攻略自驾游需要多少天 去西藏旅游自驾游要多久时间:https://www.vstour.cn/a/363195.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流