国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

Hibernate性能優(yōu)化之SessionFactory重用

2019-11-15 00:46:38
字體:
供稿:網(wǎng)友
Hibernate性能優(yōu)化之sessionFactory重用

Hibernate優(yōu)化的方式有很多,如緩存、延遲加載以及與SQL合理映射,通過對SessionFactory使用的優(yōu)化是最基礎(chǔ)的。

SessionFactory負責創(chuàng)建Session實例,Session相當于JDBC里的Connection。

SessionFactory的創(chuàng)建


SessionFactory是通過Configuration來構(gòu)建的,Configuration會根據(jù)配置信息來構(gòu)建SessionFactory。

SessionFactory中保存了對應當前數(shù)據(jù)庫配置的所有映射關(guān)系,還負責維護二級緩存和Statement池,因此SessionFactory的創(chuàng)建過程是非常耗時的。

Hibernate建議在代碼中設計SessionFactory的重用策略,并且SessionFactory默認是線程安全的,允許多個線程并發(fā)調(diào)用。

一般系統(tǒng)中只需創(chuàng)建一個SessionFactory實例,可以避免每次重新創(chuàng)建的時間,還可以更好的共享二級緩存。

SessionFactory的重用


NetBeans提供默認的HibernateUtil.java來重用SessionFactory。

在我自己的項目中自己實現(xiàn)了一個重用類,可以作為參考:

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;    }}

這個地方設計時要考慮多線程的環(huán)境,因此使用內(nèi)部類來支持多線程。

性能測試


對于重用前和重用后用ab命令進行了簡單的性能測試,性能提升一倍,效果還是非常明顯的。

重用前:

重用后:


記錄,為更好的自己!


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 黄平县| 新巴尔虎右旗| 阳信县| 准格尔旗| 巴楚县| 岢岚县| 鲁甸县| 大庆市| 株洲市| 平罗县| 二连浩特市| 临高县| 湖南省| 周口市| 青冈县| 通化市| 泰顺县| 维西| 锦屏县| 弋阳县| 阜康市| 大城县| 博白县| 双柏县| 温宿县| 黑水县| 青龙| 谷城县| 阳朔县| 潞西市| 平山县| 临江市| 枣阳市| 乐东| 桂阳县| 河北省| 满洲里市| 大宁县| 华池县| 锦州市| 锦州市|