一.Configuration对象

   解释:Hibernate的配置文件对象,是Hibernate启动加载的第一个对象,它会定位到映射文档的位置,读取配置文件,创建一个SessionFactory对象。

      作用:加载核心配置文件

   用法:

1.如果是Hibernate.properties文件(里面是键值对存放的配置信息)

  

Configuration cfg = new Configuration()  //直接new就行了

2.如果是Hibernate.cfg.xml文件

Configuration cfg = new Configuration().configure("hibernate.cfg.xml"); //后面还要在跟一个configure()方法,方法里面可以传配置文件路径,不写默认加载就在src下名字叫hibernate.cfg.xml文件
如果该配置文件在src下的config包下
Configuration cfg = new Configuration().configure("/config/hibernate.cfg.xml");

注意:如果hibernate.cfg.xml里面没有加载映射文件(<mapping resource="">),那么就需要该对象来帮你加载映射文件

Configuration cfg = new Configuration().configure("hibernate.cfg.xml");
cfg.addResource("com/xxx/pojo/Customer.hbm.xml");

二。SessionFactory-session工厂对象

  概述:SessionFactory接口负责HIbernate的初始化和建立session对象。他在hibernate中起到了一个缓冲区作用,hibernate可以将自动生成的sql语句、映射数据以及某些可以重复利用的数据放在这个缓冲区中,同时他还保存了对数据库配置的所有映射关系,维护当前的二级缓存。

  获取:

    

SessionFactory sessionFactory = cfg.buildSessionFactory();//貌似这个方法很通用

  注意:不同版本

1)在hibernate 3.x中的写法
SessionFactory sf = cfg.buildSessionFactory();
2)hibernate 4.0~hibernate 4.3的写法
ServiceRegistry sr = new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();
3)hibernate 4.3的写法
ServiceRegistry registry = new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();
SessionFactory sf = cfg.buildSessionFactory(registry);
4)hibernate 5.1的写法
StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build();
SessionFactory sessionFactory = new MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory();

  特点:

  •   线程安全的,同一个实例能够供多个线程共享。
  •  它是重量级的,不能随意的创建和销毁它的实例

一般情况下,一个项目只需要一个SessionFactory,只有当有多个数据源的时候,才会为每个数据源建立一个SessionFactory实例

三.Session对象

    概述:Session接口负责负责被持久化对象的CRUD操作。Session对象是线程不安全的,(这个session其实就相当于jdbc里面的connection)是应用程序与数据库之间的交互操作的一个单线程对象,是hibernate运转核心。

    功能:为持久化对象提供创建,读取和删除的能力,所有的持久化对象必须在session的管理下才可以进行持久化操作(为后面持久化类的状态做铺垫)

    获取:

1.第一种方式获取:

Session session = sessionFactory.openSession();  //SessionFactory直接创建一个新的session实例,并且使用完成后需要调用close方法将session关闭

2.第二种方式:

Session session = SessionFactory.getCurrentSession();   //将session对象绑定到当前的线程中,随着事务提交或者回滚,线程结束,session也会自动销毁

    session里面的方法

  •   save(),update(),saveOrUpdate()            用于增加和修改对象
  •  delete()                                                   用于删除对象
  •  get()和load()                                           根据主键查询
  •  createQuery()和createSQLQuery()         用于数据库操作对象             
  •       createCriteria()                                         条件查询                            

四:Transaction对象

    Transaction接口主要用于管理事务,它是hibernate的数据库事务接口。

  hibernate开启事务:

Transaction tx = session.beginTransaction();

  方法:

  • commit()方法:提交相关联的session实例
  • rollback()方法:撤销事务操作。

Hibernate学习——API学习的更多相关文章

  1. Hibernate 马士兵 学习笔记 (转)

    目录(?)[+] 第2课 Hibernate UML图 第3课 风格 第4课 资源 第5课 环境准备 第6课 第一个示例Hibernate HelloWorld 第7课 建立Annotation版本的 ...

  2. 框架源码系列十一:事务管理(Spring事务管理的特点、事务概念学习、Spring事务使用学习、Spring事务管理API学习、Spring事务源码学习)

    一.Spring事务管理的特点 Spring框架为事务管理提供一套统一的抽象,带来的好处有:1. 跨不同事务API的统一的编程模型,无论你使用的是jdbc.jta.jpa.hibernate.2. 支 ...

  3. ssh架构之hibernate(二)进阶学习

    1.JPA入门 JPA的认识:JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中Java持久层AP ...

  4. Openstack api 学习文档 & restclient使用文档

    Openstack api 学习文档 & restclient使用文档 转载请注明http://www.cnblogs.com/juandx/p/4943409.html 这篇文档总结一下我初 ...

  5. ASP.NET MVC Web API 学习笔记---第一个Web API程序

    http://www.cnblogs.com/qingyuan/archive/2012/10/12/2720824.html GetListAll /api/Contact GetListBySex ...

  6. Openstack python api 学习文档 api创建虚拟机

    Openstack python api 学习文档 转载请注明http://www.cnblogs.com/juandx/p/4953191.html 因为需要学习使用api接口调用openstack ...

  7. Windows录音API学习笔记(转)

    源:Windows录音API学习笔记 Windows录音API学习笔记 结构体和函数信息  结构体 WAVEINCAPS 该结构描述了一个波形音频输入设备的能力. typedef struct { W ...

  8. Hibernate的系统 学习

    Hibernate的系统 学习 一.Hibernate的介绍 1.什么是Hibernate? 首先,hibernate是数据持久层的一个轻量级框架.数据持久层的框架有很多比如:iBATIS,myBat ...

  9. NSData所有API学习

      www.MyException.Cn  网友分享于:2015-04-24  浏览:0次   NSData全部API学习. 学习NSData,在网上找资料竟然都是拷贝的纯代码,没人去解释.在这种网上 ...

随机推荐

  1. SignalR网页实时推送

    1.新建项目,选择mvc4 Wed应用程序,选择Internet,视图引擎:Razor 2.在控制器中添加 并添加上视图 3.引用(install-package Microsoft.AspNet.S ...

  2. 第三章之S5PV210串口初始化

    1,在start.S中执行373行b lowlevel_init跳转到/board/samsung/goni/lowlevel.S中,此代码中初始化一样硬件. 找到241行,此行执行URAT初始化,如 ...

  3. js基础--javaScript数据类型你都弄明白了吗?绝对干货

    欢迎访问我的个人博客:http://www.xiaolongwu.cn 数据类型的分类 JavaScript的数据类型分为两大类,基本数据类型和复杂数据类型. 基本数据类型:Null.Undefine ...

  4. spring 切入点表达式

    spring表达式有多种的指示符,如: 切入点指示符用来指示切入点表达式目的,,在Spring AOP中目前只有执行方法这一个连接点,Spring AOP支持的AspectJ切入点指示符如下: exe ...

  5. MySQL松散索引扫描与紧凑索引扫描

    什么是松散索引? 答:实际上就是当MySQL 完全利用索引扫描来实现GROUP BY 的时候,并不需要扫描所有满足条件的索引键即可完成操作得出结果. 要利用到松散索引扫描实现GROUP BY,需要至少 ...

  6. libevent库简单使用

    一.libevent库简介 Libevent是一个用于开发可扩展性网络服务器的基于事件驱动(event-driven)模型的网络库.Libevent有几个显著的亮点: (1)事件驱动(event-dr ...

  7. 谈谈对Javascript构造函数和原型对象的理解

    对象,是javascript中非常重要的一个梗,是否能透彻的理解它直接关系到你对整个javascript体系的基础理解,说白了,javascript就是一群对象在搅..(哔!).   常用的几种对象创 ...

  8. Masonry中的mas_makeConstraints方法

    2018年04月12日 10:10:54 阅读数:138 一.简单介绍 我们一般来说会这样进行使用 [view mas_makeConstraints:^(MASConstraintMaker *ma ...

  9. 手把手教你创建「人物角色Persona」

    一.为什么要创建人物角色 下图来自 Cooper interaction design ,同样有购车需求的用户,用车的人不同.各自的目的不同,最终满足需求的车型也有很大差异.对于汽车公司而言,在车辆设 ...

  10. 让站点支持MarkDown语法~(转)

    Markdown是一种可以使用普通文本编辑器编写的标记语言,通过类似HTML的标记语法,它可以使普通文本内容具有一定的格式.Markdown的语法简洁明了.学习容易,而且功能比纯文本更强,因此有很多人 ...