程序源码:

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import pers.zhb.domain.Student;
class HinernateTest{
    public static void testAdd()  {
        //(1)加载hibernate核心配置文件
        //src目录下的配置文件名称是固定的:hibernate.cfg.xml
        Configuration configuration= new Configuration();
        configuration.configure();
        //(2)读取hibernate核心配置文件的内容,创建sessionFactory对象,根据映射关系创建相应的表
        SessionFactory sessionFactory=configuration.buildSessionFactory();
        //(3)利用sessionFactory对象创建session对象
        //类似于创建连接
        Session session=sessionFactory.openSession();
        //(4)开启事务
        Transaction transaction=session.beginTransaction();
        //(5)具体操作
        Student student=new Student();
        student.setSname("zzzz");
        student.setSex("男");
        student.setBirthday("2019-11-11");
        student.setClassno("201911");
        student.setPoint(111);
        student.setPhone("1873496511");
        student.setEmail("20171514@qq.com");
        session.save(student);
        //(6)提交事务
        transaction.commit();
        //(7)关闭资源
        session.close();
        sessionFactory.close();
    }
    public static  void main(String []args){
        HinernateTest hinernateTest=new HinernateTest();
        hinernateTest.testAdd();
    }
}

1、configuration对象:

 Configuration configuration= new Configuration();
 configuration.configure();

创建时调用空参构造方法,加载src目录下的hibernate.cfg.xml文件。

2、sessionFactory对象(用于创建操作数据库的session对象的工厂):

SessionFactory sessionFactory=configuration.buildSessionFactory();

根据配置信息,创建sessionFactory对象。

特点:

(1)负责保存和使用所有配置信息,消耗的内存资源比较大。

(2)线程安全。

根据sessionFactory对象的特点,应该尽量只创建一个sessionFactory对象。

3、session对象:

        Session session=sessionFactory.openSession();

类似于JDBC中的创建连接。

4、transaction对象:

 Transaction transaction=session.beginTransaction();

开启事务并获得操作事务的transaction对象。

5、提交事务:

transaction.commit();

6、回滚事务:

transaction.rollback();

7、释放资源:

session.close();
sessionFactory.close();

最新文章

  1. JVM-操作码助记符
  2. 洛谷P1196 银河英雄传说[带权并查集]
  3. 解析html并使用canvas进行渲染
  4. [转]IIS添加MIME扩展类型及常用的MIME类型列表
  5. WampServer 给电脑搭建apache服务器和php环境
  6. PHP访问数据,增删改
  7. [原]Unity3D深入浅出 - 物理引擎之碰撞体(Colliders)
  8. 领域驱动设计和实践(转:http://kb.cnblogs.com/page/112298/)
  9. cocos2d-x 3.6版连连看载入资源
  10. 移除UIView上面的所有控件
  11. windows tcp端口映射或端口转发
  12. Linux IO控制命令生成
  13. sql server 高可用故障转移(3)
  14. cmd中mysql主键id自增,在添加信息时发生错误,再次成功添加时,id已经跳过错误的信息继续自增。
  15. 关于pycharm中使用charts无法显示图表的问题(属于个人粗心问题)
  16. pThreads线程(一) 基本API
  17. 由n个元素组成的数组,n-2个数出现了偶数次,两个数出现了奇数次,且这两个数不相等,如何用O(1)的空间复杂度,找出这两个数
  18. 利用图片中的exif元数据批量查找图片中所包含的GPS信息
  19. Python: 读文件,写文件
  20. 基于AppDomain的"插件式"开发

热门文章

  1. 生意bisynes商业
  2. MongoDB 概述
  3. 记一次奇怪的python多个变量拼接后的字符串丢失事件
  4. Springcloud的版本依赖问题(最全,包含springCloud所有的版本)
  5. SpringBoot1.x升级SpringBoot2.x踩坑之文件上传大小限制
  6. 解决SqlDataSource连接超时的问题
  7. Linux内核同步机制之completion
  8. 【OGG】OGG简单配置双向复制(三)
  9. 二十六、聊聊mysql如何实现分布式锁
  10. Github 上 36 个最实用的 Vue 开源库