hibernate使用步骤

关于在使用hibernate之前的配置步骤博主另一篇博客有讲到https://blog.csdn.net/My_name_is_ZwZ/article/details/82822661

1.读取总的配置文件

 Configuration configuration = new Configuration( ).configure( );//将配置文件的信息读给Configuration对象


    Configuration configuration = new Configuration( ).configure("");hibernate总的配置文件的默认名字hibernate.cfg.xml如果改掉了的话上边那句代码就要改成这个,其中引号里面要加进去改后的名字(具体原因看hibernate在线API Configuration类里面这两个方法的介绍,这里不再阐述)
    Configuration类的四个重要用途:
        1)负责管理hibernate的配置信息(也就是说程序运行的时候会把这个配置文件给加载进去)
        2)读取hibernate.cfg.xml
        3)加载hibernate.cfg.xml配置文件中的配置驱动,url,用户名,密码,连接池
        4)管理 *.hbm.xml对象关系文件(从总的配置文件中的<mapping resource="">标签就可以看得出来)
    
2.创建sessionFactory

即session工厂,可以简单地理解成 生产session的地方,而生产session的目的就是用它去连接数据库并对数据库内容和信息进行操作(这里的session跟浏览器和服务器之间交互的那个session没有半毛钱关系。这里的是指java程序和数据库之间的交互。在javaweb程序中,session工厂在服务器一端,并不在浏览器)

SessionFactory sessionFactory = configuration.buildSessionFactory( );

    SessionFactory是一个接口,其关键知识点:
        1)缓存sql语句和某些数据(称为session级缓存)
        2)它是一个重量级的类,比较吃内存
        3)一个数据库对应一个SessionFactory对象即可

3.通过SessionFactory对象得到session (session就是对connection的封装) :
    1).

Session session = factory.openSession( );


    2).

Session session = factory.getCurrentSession( );


    以上两种方法的区别:
        1>openSession( )用于获取一个新的回话,每一次用factory.openSession( )创建回话的时候都是创建的新的回话。
        2>getCurrentSession( )用于获取和当前线程绑定的session,也就是说在同一个线程中我们调用这个方法获取到的session始终是同一个session(这一点可以在两次调用此方法后将得到的对象的hashCode输出到控制台加以验证),这样利于事务控制。
        3>采用getCurrentSession( )创建的session在事务commit或者rollback时会自动关闭,但是采用openSession( )创建的session必须手动关闭。
        4>使用getCurrentSession( )创建session后用于查询的时候,也是必须要用事务提交。否则会报错
    ***使用getCurrentSession( )方法之前要在hibernate.cfg.xml中进行一个简单的配置,内容如下:
        如果使用的是本地事务(jdbc事务)
            <property name="current_session_context_class">thread</property>
        如果使用的是全局事务(即jta事务,使用较少)
            <property name="current_session_context_class">jta</property>
        ***jdbc事务与jta事务的区别:
            本地事务即是针对一个数据库的操作
            全局事务即是跨数据库的事务
            (一般一个java程序都是用的某一个数据库,所以对两个数据库进行操作的情况比较少见。例如:跨行转账,且他们两            个银行所用到的数据库不相同)


4.开启事务(什么是事务:事务是数据库中的一个概念,是数据库运行中的一个逻辑工作单位。增删改需要事务,查询不需要事务,但是查询的时候也可以写事务。因为事务只有在数据发生变化的时候才起到作用。具体看百度百科)

 Transaction transaction = session.beginTransaction( );

 

5.持久化存储数据(也就是通过相关对象去进行操作数据库)
 

  . . .
  . . .
  session.save( );//这里是拿添加的方法作为例子来说明,还有可能是删除修改查询

6.提交事务
  

 transaction.commit( );


7.关闭session(就好比关闭connection连接一样)
    

session.close( );


           

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值