JavaWeb框架复习笔记-Hibernate(事务管理、绑定线程、API)

Hibernate里面的事务规范写法

try{
	开启事务
	提交事务
}catch(){
	回滚事务
}finally{
	关闭资源
}

写个例子表示如下

public class HibernateTest {
    @Test
    public void testTranscription(){
        SessionFactory sessionFactory = null;
        Session session = null;
        Transaction tx = null;
        try{
            //使用工具类获得sessioFactory对象
             sessionFactory = HibernateUtils.getSessionFactory();
             session = sessionFactory.openSession();
            //开启事务
             tx = session.beginTransaction();
             
             //这里就写业务逻辑
            

            //提交事务
            tx.commit();
        }catch (Exception e){
            e.printStackTrace();
            tx.rollback();
        }finally {
            //关闭资源
            session.close();
            sessionFactory.close();
        }
    }
}

我们测试以下事务的效果
在这里插入图片描述
在这里插入图片描述
可以看出虽然执行了插入的sql操作,但是并没有提交到数据库里面,可知这次失败的事务给回滚了。

Hibernate绑定本地线程

1.session类似于jdbc的connection。

2.session是单线程了,我们可以利用hibernate帮助把它绑定到本地线程确保它保持单线程的状态

绑定过程如下:
1.去hibernate的核心配置文件中配置
在这里插入图片描述
2.调用sessionFactory的方法得到
在这里插入图片描述
然后调用该方法插入一条数据
在这里插入图片描述
然后观察控制台输出和数据库的记录
在这里插入图片描述
这个空指针异常就是因为我们这个线程结束了,session已经关闭了,但是我们的finally代码块又进行了一次关闭,所以会抛出异常。

Hibernate的操作数据库的API

1.使用Query对象
使用query对象,不需要写sql语句,但是写hql语句
(1)hql:hibernate query language,hibernate提供查询语言,这个hql语句和普通sql语句很相似

(2)hql和sql语句区别:

  • 使用sql操作表和表字段
  • 使用hql操作实体类和属性

写个例子来用Query对象实现对数据库的操作:
在这里插入图片描述
在这里插入图片描述
2.使用Criteria对象
使用这个对象查询操作,但是使用这个对象时候,不需要写语句,直接调用方法实现
在这里插入图片描述
在这里插入图片描述
3.使用SQLQuery对象
使用hibernate时候,调用底层sql实现,就是允许我们使用底层的sql语句
在这里插入图片描述
在这里插入图片描述

现在这些都是基本查询,后面会用到更加复炸的查询语句

猜你喜欢

转载自blog.csdn.net/weixin_42341232/article/details/94411239