`
zeeeitch
  • 浏览: 85584 次
  • 性别: Icon_minigender_1
  • 来自: 九江
社区版块
存档分类
最新评论

hibernate初始化优化

    博客分类:
  • java
阅读更多

还记得每个hibernate初学者都会被指导使用这样的函数来获取数据库资源


public   static   Session   currentSession()   throws   HibernateException   {

        Session   session   =   (Session)   threadLocal.get();


        if   (session   ==   null)   {

            if   (sessionFactory   ==   null)   {

                try   {

                    cfg.configure(CONFIG_FILE_LOCATION);

                    sessionFactory   =   cfg.buildSessionFactory();

                }

                catch   (Exception   e)   {

                    System.err.println("%%%%   Error   Creating   SessionFactory   %%%%");

                    e.printStackTrace();

                }

            }

            session   =   sessionFactory.openSession();

            threadLocal.set(session);

        }


        return   session;

    }



当你打开TOmcat的时候,一下有几十人来访问你的页面,那么这个函数很有可能就会初始化失败了。多年前实践中总结出来,修改一下,今天想到在这里写一下:



    public static Session currentSession() throws HibernateException {
        Session session = (Session) threadLocal.get();


        if (session == null) {
            if (sessionFactory == null) {
                synchronized(SessionFactory.class){
                    if (sessionFactory == null) {
                        try {


                            cfg.configure(CONFIG_FILE_LOCATION);
                            sessionFactory = cfg.buildSessionFactory();
                        }
                        catch (Exception e) {
                            System.err.println("%%%% Error Creating SessionFactory %%%%");
                            e.printStackTrace();
                        }
                    }
                }
            }
            session = sessionFactory.openSession();
            threadLocal.set(session);
        }


        return session;
    }



实际上就是一个同步问题,避免多个人同时进入hibernate初始化
分享到:
评论

相关推荐

    hibernate 优化

    - 使用懒加载(Lazy Loading)策略,延迟加载不常用的数据,降低初始化时的内存占用。 - 合理设置实体的访问策略,例如字段访问优于属性访问,以减少不必要的代理对象生成。 4. **配置优化**: - 调整Hibernate...

    Hibernate性能优化

    4. **懒加载与立即加载**:Hibernate的懒加载机制可以推迟关联对象的加载,减少初始化时的数据量。但过度依赖懒加载可能导致N+1查询问题,因此需要合理设计实体关系和加载策略。 5. **预加载与子查询**:预加载...

    Hibernate优化

    4. **延迟加载与立即加载**:根据需求选择合适的加载策略,对于不常用的数据可采用延迟加载,减少初始化时的内存消耗。 三、对象关系映射优化 1. **懒加载与Eager加载**:理解两者区别,避免在不必要时加载关联...

    Hibernate 操纵持久化对象

    懒加载(Lazy Loading)是一种优化策略,只在真正需要时才加载关联对象,而立即加载(Eager Loading)则会在初始加载时加载所有关联对象。开发者可以根据性能和需求选择合适的加载策略。 **十、实体关系映射** ...

    Struts Spring Hibernate性能优化

    在本项目中,性能瓶颈主要出现在Hibernate的XML配置解析和Spring容器的bean初始化上。首先,针对Hibernate的性能优化,可以从减少XML解析开销入手。按照hibernate.org上的建议,可以通过将XML配置序列化到本地文件,...

    Hibernate性能优化共9页.pdf.zip

    7. **预热与初始化**:预热是指在应用启动时进行一些基础操作,如加载常用对象到缓存,以减少用户请求时的延迟。初始化策略也可以根据需求定制。 8. **二级缓存同步策略**:了解不同缓存同步模式(如read-only、...

    hibernate aip hibernate aip

    总的来说,Hibernate AIP涵盖了从项目初始化、数据库设计、对象关系映射、数据操作到性能调优的全过程。通过熟练掌握这些知识点,开发者可以高效地在Java项目中整合和利用数据库资源,实现更简洁、可维护的代码。在...

    Hibernate程序性能优化.doc

    - **属性延迟加载**:对对象的某些属性进行延迟加载,减少初始化时的数据加载量。 #### 七、方法选用 1. **结果集处理**:使用ScrollableResults或Iterator替代List或Set,以避免一次性加载大量数据导致内存溢出。...

    Middlegen-Hibernate-r5,hibernate-extensions-2.1.3

    例如,Middlegen可以用于快速初始化项目,而Hibernate Extensions则可以在后期的开发过程中提供持续的优化和支持。 【压缩包子文件的文件名称列表】"Hibernate工具"表明压缩包可能包含了与Hibernate相关的各种工具...

    第10章 Hibernate 3持久化技术实践与性能优化

    三、Hibernate 3的配置与初始化 1. hibernate.cfg.xml:这是Hibernate的主要配置文件,包含了数据库连接信息、缓存配置、方言设置等。 2. SessionFactory:它是Hibernate的核心,负责管理所有Session的创建和配置。...

    hibernate优化前的程序

    大量的对象初始化**:一次性加载大量关联对象可能导致内存溢出。应考虑使用`fetch="select"`或`fetch="join"`策略来控制加载行为。 **3. 延时加载的误用**:不合理的延时加载可能导致“懒加载地狱”,即在不期望的...

    hibernate-3.2源代码

    三、配置与初始化 Hibernate的配置文件(hibernate.cfg.xml)包含了数据库连接信息、缓存设置等关键参数。通过Configuration类加载配置,然后通过buildSessionFactory()方法生成SessionFactory实例。 四、实体类与...

    hibernate性能优化

    - Hibernate使用CGLIB动态代理机制,使得many-to-one关系的子对象也能实现延迟初始化。即使在调试时看到SQL语句,但如果正确配置,实际执行速度会有所提升。 5. **缓存(Cache)使用**: - Hibernate提供了第一级...

    hibernate_3.2官方开发包

    2. **Configuration类**:Hibernate的初始化工作主要由Configuration类完成,它负责读取配置文件,建立SessionFactory,并且可以加载Hibernate的映射文件(.hbm.xml)。 3. **SessionFactory**:SessionFactory是...

    Hibernate3.6

    5. **初始化 SessionFactory**:根据配置文件创建 SessionFactory 实例,它是线程安全的,整个应用程序只需一个。 6. **使用 Session**:通过 SessionFactory 获取 Session 实例,进行数据库操作,如保存、更新、...

    hibernate第一个hibernate

    创建一个简单的Java应用,初始化`SessionFactory`,打开`Session`,创建一个`User`对象并保存到数据库,最后关闭`Session`。这将演示基本的Hibernate操作流程。 8. 事务管理: Hibernate支持JTA和JDBC两种事务...

    hibernate3.5.6开发包

    3. **配置与初始化**:使用Hibernate时,需要配置Hibernate配置文件(hibernate.cfg.xml),其中包含数据库连接信息、方言设置等。初始化Hibernate会话工厂(SessionFactory)是应用程序启动时的关键步骤。 4. **...

    HibernateDemo

    7. **操作流程**:在学习这个例子时,开发者通常会经历以下步骤:加载配置、初始化SessionFactory、打开Session、创建或获取实体对象、执行CRUD操作(创建、读取、更新、删除)、最后关闭Session。 通过分析这个...

Global site tag (gtag.js) - Google Analytics