`
隐形的翅膀
  • 浏览: 498404 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate SessionFactory and Session

阅读更多
1. Hibernate 的主类是Session类,它提供查找,保存和删除映射对象的方法,必须来建立一个SessionFactory,来得到Session

   SessionFactory 有三个重要的属性, datasource,mappingLocation,hibernateProperties
   <bena id="hibernateSessionFactory">
       <property name="dataSource" ref="dataSource"/>
       <property name="mappingLocations">
            <list>
                 <value>classpath*:/com/test/*.hbm.xml</value>
            </list>
       </property>
       <property name="hibernateProperties">
                 ......
       </property>
   </bean>


2. 直接使用Hibernate SessionFactory and Session
  
   ApplicationContext ac=new ClassPathXmlApplicationContext("application.xml");
   SessionFactory sessionFactory=(SessionFactory)ac.getBean("hibernateSessionFactory");
   Session session=sessionFactory.openSession();
   // do your work
   session.close();
   

3. 使用Hibernate session 应该从调用beginTransaction 开始, 到调用Transaction.commit()方法结束,如果抛出异常,我们可以回滚事务
 
   ApplicationContext ac=new ClassPathXmlApplicationContext("application.xml");
   SessionFactory sessionFactory=(SessionFactory)ac.getBean("hibernateSessionFactory");
   Session  session=null;
   Transaction transaction=null;
   try{
         session=sessionFactory.openSession();
         transaction=session.beginTransaction();
         
         // do your work
         tramsactopm.commit();
   }catch(Exception e){
         if(transaction!=null)transaction.rollback();
         throw e;
   }finally{
         if(session!=null) session.close();
   }
   

4. 两种得到Spring 实现的 HibernateTemplate 的方法
  
   ApplicationContext ac=new ClassPathXmlApplicationContext("application.xml");
   SessionFactory sessionFactory=(SessionFactory)ac.getBean("hibernateSessionFactory");
   HibernateTemplate template=new HibernateTemplate(sessionFactory)
   template.execute(new HibernateCallback(){
        public Object doInHibernate(Session session) throws HibernateException,SQLException{
           //do the work
           return null
        }
   })
   

  在配置文件中
 
   <bean id="hibernateTemplate" class="org.springframework.orm.hibernate.HibernateTemplate">
        <property name="sessionFactory" ref="hibernateSessionFactory"/>
   </bean>
   HibernateTemplate template=(HibernateTemplate)at.getBean("hibernateTemplate");
   template.execute(new HibernateCallback(){
        public Object doInHibernate(Session session) throws HibernateException,SQLException{
           //do the work
           return null
        }
   })
  

5. Hibernate  不支持泛型,要对自己的代码进行单元测试和集成测试,保证返回了正确的对象

6. 如何简写DAO
  省去了在每个DAO中写 sessionFactory 的麻烦
 
  <bean id="hibernateDaoSupport" abstract="true" class="org.springframework.orm.hibernate.support.HibernateDaoSupport">
       <property name="sessionFactory" ref="hibernateSessionFactory"/>
    </bean>
    <bean id="dao1" class="com.test.class1" parent="hibernateDaoSupport"/>
    <bean id="dao2" class="com.test.class2" parent="hibernateDaoSupport"/>
    <bean id="dao3" class="com.test.class3" parent="hibernateDaoSupport"/>

  

分享到:
评论

相关推荐

    HibernateSessionFactory 代码

    本篇文章将深入探讨`HibernateSessionFactory`及其在Hibernate中的作用,以及如何使用它来实现增、删、查、改(CRUD)操作。 `SessionFactory`是Hibernate的核心组件,它是线程安全的,负责管理数据库连接和会话。`...

    使用 HibernateSessionFactory 类

    在`HibernateSessionFactory.java`这个文件中,我们可能看到对上述过程的封装,例如创建`SessionFactory`的静态方法,以及提供会话的获取和关闭功能。这样的封装有助于代码的整洁和复用。 在实际应用中,`...

    HibernateSessionFactory.java Hibernate使用的整合的工具文件

    Session s= HibernateSessionFactory.getSession(); 就是Hibernate的工具java类

    新Hibernate SessionFactory().getCurrentSession()猫腻

    SessionFactory是Hibernate的核心组件之一,它是线程安全的,负责创建Session实例。而Session接口则是与数据库交互的主要接口,用于执行SQL查询、保存或更新实体等操作。在传统的Hibernate使用模式中,开发者通常会...

    Hibernate-nosession

    然而,在某些特定场景下,我们可能并不需要频繁地打开和关闭Session,这时“Hibernate-nosession”就显得尤为重要。本文将深入探讨Hibernate-nosession的概念、应用场景以及如何在实际代码中实现。 首先,理解什么...

    HibernateSessionFactory

    用于获得Session会话及关闭Session会话

    spring配置sessionFactory(spring3.2.3+hibernate4.2.2)

    SessionFactory是Hibernate的核心组件,它负责创建Session对象,而Session则是与数据库交互的接口。 首先,我们需要在项目中添加Spring和Hibernate的依赖。Spring的jar包通常包括spring-context、spring-beans、...

    重写hibernate的session简单增删改查

    "重写hibernate的session简单增删改查"是一个针对初学者的实践教程,旨在帮助理解如何在Hibernate中自定义Session的操作,以便更好地控制数据库交互。 一、Hibernate Session Hibernate的Session是与数据库交互的...

    Hibernate_11session

    Hibernate有两级缓存:一级缓存(Session级缓存)和二级缓存(SessionFactory级缓存)。一级缓存默认开启,它是自动的,当对象在Session中被修改并提交后,这些变化会被立即写入数据库。二级缓存则需要手动配置和...

    Hibernate(session管理)

    1. **Session的创建**:在Hibernate中,我们通常通过SessionFactory对象来创建Session。SessionFactory是线程安全的,它是一个全局的单例对象,负责管理Session的生命周期。我们可以通过配置文件或者使用Annotation...

    hibernate中session的管理

    首先,SessionFactory是Hibernate的核心组件,它是一个线程安全的工厂类,用于创建Session实例。SessionFactory通常在应用程序启动时初始化,并在整个应用生命周期内保持不变,因此它可以被多个并发线程共享。...

    hibernate数据库通用SQL代码

    Session session = HibernateSessionFactory.currentSession(); Transaction t = session.beginTransaction(); session.save(o); t.commit(); HibernateSessionFactory.clossSession(); } ``` 2. 删除数据...

    hibernate和session学习

    总结来说,Hibernate简化了Java应用与数据库之间的交互,通过`SessionFactory`和`Session`的使用,我们可以方便地进行数据操作,而无需关注底层的SQL细节。学习并熟练掌握Hibernate和Session,对于提升Java开发的...

    hibernate--3.Hibernate数据持久化(通过 Session 操纵对象)

    在开始使用Session之前,需要配置Hibernate的环境,包括创建SessionFactory,这是整个应用与数据库交互的工厂。SessionFactory由Configuration实例创建,配置文件通常为`hibernate.cfg.xml`,其中包含了数据库连接...

    JAVA的hibernate手动获取session的方法

    本篇将详细讲解如何在Hibernate中手动获取Session,以及涉及到的相关配置和连接管理。 首先,理解Hibernate的核心组件——Session。Session是Hibernate中的工作单元,它是与数据库交互的主要接口,负责保存、更新和...

    JavaEE技术-自主学习.zip_hibernate_hibernate session _javaee映射.xml

    这包括创建SessionFactory,打开Session,执行CRUD操作,最后关闭Session和SessionFactory,确保资源得到正确释放。 通过这些步骤,我们可以看到Hibernate如何简化了数据库操作,将底层SQL语句抽象为面向对象的方法...

    Hibernate中获取Session的两种方式代码示例

    Hibernate 中获取 Session 的两种方式是:通过 HibernateUtil 工具类和通过 SessionFactory 获取当前 Session。 方式一:通过 HibernateUtil 工具类 HibernateUtil 是一个工具类,用于管理 Session。通过 ...

Global site tag (gtag.js) - Google Analytics