一.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. servlet简介及生命周期

    Servlet 简介 Servlet 是什么? Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上 ...

  2. 一些常用的linux命令(2)

    参考:http://www.cnblogs.com/laov/p/3541414.html 系统管理命令 stat               显示指定文件的详细信息,比ls更详细 who       ...

  3. 从CSDN到cnblogs

    博客热的年代,我也赶潮流,开了不少,以前的blogbus博客大巴,CSDN,以及MSN space,再到新浪博客,微博... 提笔写的热情越来越少,这次准备重新整理以前在CSTQB.业界分享的一些内容 ...

  4. Java操作Memcached

    本文复制其他播客,有好的技术文章希望各位大神能告知... 谢谢. 如何使用Java操作Memcached实例: 代码一: package com.ghj.packageoftool; import j ...

  5. MQ、JMS 关系的理解

    MQ简介: MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们.消息传 ...

  6. Tiny4412之重力感应器驱动

    一:Tiny4412 裸板重力感应驱动编写 整个编写过程大概分为如下几步: (1)在底板上找到重力感应器的所在位置,找到芯片型号(我用的板子上重力感应器芯片型号为:MMA7660FC) (2)通过型号 ...

  7. 解决_CRT_SECURE_NO_WARNINGS警告

    VS中: 工程属性->属性->配置属性->C/C++->命令行 在命令行中添加一行: /D _CRT_SECURE_NO_WARNINGS OK!

  8. redis与python交互

    import redis #连接 r=redis.StrictRedis(host="localhost",port=6379,password="sunck" ...

  9. MyBatis的增删改查。

    数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改,并且对程序接口做了一些调整,以及对一些问题进行了解答. 1.调整后的结构图: 2.连接数据库文件配置分离: 一般的程序都会把连 ...

  10. 【小白学C#】浅谈.NET中的IL代码

    一.前言 前几天群里有位水友提问:”C#中,当一个方法所传入的参数是一个静态字段的时候,程序是直接到静态字段拿数据还是从复制的函数栈中拿数据“.其实很明显,这和方法参数的传递方式有关,如果是引用传递的 ...