一、Configuration对象

功能:配置加载类,用于加载主配置,orm元数据加载。

         //1、创建,调用空参构造(还没有读配置文件)
Configuration conf=new Configuration();
//2、读取指令配置文件=>空参加载方法,加载src下的hibernate.cfg.xml文件
conf.configure(); //3、读取指定orm元数据(扩展),如果主配置中已经引入映射配置,不需要手动加载
//conf.addResource(resourceName);
//conf.addClass(persistentClass); //4、根据配置信息创建SessionFactory对象
SessionFactory sf = conf.buildSessionFactory();

二、SessionFactory对象

功能:用于创建操作数据库核心对象Session对象的工厂,简单说功能就一个——>创建session对象。

注意:1.SessionFactory负责保存和使用所有配置信息,消耗内存资源非常大
      2.SessionFactory属于线程安全的对象设计
结论:保证在web项目中只创建一个SessionFactory

      //5、获得session
//打开一个新的session对象
sf.openSession();
//获得一个与线程绑定的session对象
sf.getCurrentSession();

在实际项目使用中,常常会抽取出一个HibernateUtils的工具类,用来提供Session对象。

Hibernate工具类:

 package cn.itheima.utils;

 import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; public class HibernateUtils {
//保证web项目中只创建一个SessionFactory
private static SessionFactory sf; static{
Configuration conf=new Configuration().configure();
sf = conf.buildSessionFactory();
} //获得session=>获得全新的session
public static Session openSession(){
Session session = sf.openSession();
return session;
} //获得session=>获得与线程绑定的session
public static Session getCurrentSession(){
Session session = sf.getCurrentSession();
return session;
} //测试一下工具类
public static void main(String[] args){
System.out.print(HibernateUtils.openSession());
}
}

三、Session对象

功能:表达Hibernate框架与数据库之间的连接(会话), 类似于JDBC年代的Connection对象,还可以完成对数据库中数据的增删改查操作。
    
   session是Hibernate操作数据库的核心对象

1、获得事务

2、session的新增

3、session的查询(通过id,第二个参数要带数据类型,如下Long类型,在1后面添加l)

4、session的修改(通过id)

5、session的删除(通过id)

四、Transaction对象

功能:封装了事务的操作

1、打开事务

方式一:

方式二:

2、提交事务

3、回滚事务

Hibernate框架学习(二)——api详解的更多相关文章

  1. Hibernate框架笔记04HQL_QBC查询详解_抓取策略优化机制

    目录 1. Hibernate的查询方式 1.1 方式一:OID查询 1.2 方式二:对象导航查询 1.3 方式三:HQL方式 1.4 方式四:QBC查询 1.5 方式五:SQL查询 2. 环境搭建 ...

  2. Struts2框架学习(三)——配置详解

    一.struts.xml配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts ...

  3. Vue 学习 二 路由详解

    1 roter-link 和roter-view组件 2路由配置 a.动态路由 b.嵌套路由 c.别名路由 d.命名路由 3 Js操作路由 4 重定向和别名 1为路由默认绑定 2 使用组件 根据 路由 ...

  4. Android Developer -- Bluetooth篇 开发实例之四 API详解

    http://www.open-open.com/lib/view/open1390879771695.html 这篇文章将会详细解析BluetoothAdapter的详细api, 包括隐藏方法, 每 ...

  5. hibernate学习(2)——api详解对象

    1   Configuration 配置对象 /详解Configuration对象 public class Configuration_test { @Test //Configuration 用户 ...

  6. iOS 开发之照片框架详解之二 —— PhotoKit 详解(下)

    本文链接:http://kayosite.com/ios-development-and-detail-of-photo-framework-part-three.html 这里接着前文<iOS ...

  7. iOS 开发之照片框架详解之二 —— PhotoKit 详解(上)

    转载自:http://kayosite.com/ios-development-and-detail-of-photo-framework-part-two.html 一. 概况 本文接着 iOS 开 ...

  8. Hibernate入门(二)——hibernateAPI详解

    Hibernate API 详解 1.Configuration 功能:配置加载类,用于加载主配置,orm元数据加载 .创建: Configuration conf = new Configurati ...

  9. Java8学习笔记(五)--Stream API详解[转]

    为什么需要 Stream Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念.它也不同于 StAX 对 ...

随机推荐

  1. CSS3中的2D和3D转换知识介绍

    一  2D转换 转换是CSS3中具有颠覆性的特征之一,可以实现元素的位移.旋转.变形.缩放,甚至支持矩阵方式,配合即将学习的过渡和动画知识,可以取代大量之前只能靠Flash才可以实现的效果. 1.移动 ...

  2. 自定义view 之多个引导层动画效果

    SupernatantView 如果我英文还可以的话这个应该叫做漂浮在上层的view---引导层 今天闲来无事看了网上的一些引导层案例总感觉如果不是很舒服,就是类似于很死板的显示和消失 我在想能不能弄 ...

  3. 动画view

    1:view动画 @1:xml中 alph:渐变透明度动画效果 scale:渐变尺寸伸缩动画效果 translate:画面转换位置移动动画效果 rootate:画面转移旋转动画效果 @2:JavaCo ...

  4. socket代码(简单)

    SERVER: #!/usr/bin/python # -*- coding: utf-8 -*- import socket import time s = socket.socket(socket ...

  5. SpringMVC(六)POJO类作为 @RequestMapping方法的参数

    Command or form objects to bind request parameters to bean properties (via setters) or directly to f ...

  6. 这个夏天有你,有CorelDRAW X7,有理想,有设计!

    CorelDRAW是加拿大Corel公司出品的一款功能全面的矢量绘图.平面设计软件,兼有图形设计的简易操作性和图像编辑的强大功能.目前,被广泛应用于广告宣传.艺术作品.纺织业等各个行业.和Photos ...

  7. Pyhton学习——Day28

    #上下文协议:文件操作时使用with执行# with open('a.txt','w',encoding='utf-8') as f1:# with语句,为了让一个对象兼容with语句,必须在这个对象 ...

  8. CF895C Square Subsets (组合数+状压DP+简单数论)

    题目大意:给你一个序列,你可以在序列中任选一个子序列,求子序列每一项的积是一个平方数的方案数. 1<=a[i]<=70 因为任何一个大于2的数都可以表示成几个质数的幂的乘积 所以我们预处理 ...

  9. MySQL的读写分离的几种选择

    MySQL的读写分离的几种选择 MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 原址如下: http://heylinux.com/archives/1004. ...

  10. Myeclipse学习总结(9)——MyEclipse2014安装插件的几种方式(适用于Eclipse或MyEclipse其他版本)

    众所周知MyEclipse是一个很强大的Java IDE,而且它有许多开源免费又好用的插件,这些插件给我们开发过程中带来了许多方便.插件具有针对性,例如,你如果做安卓开发,可能需要一个ADT(Andr ...