分享知识-快乐自己:Hibernate框架常用API详解
1):Configuration配置对象
Configuration用于加载配置文件。
1): 调用configure()方法,加载src下的hibernate.cfg.xml文件
Configuration conf = new Configuration().configure();
2):如果配置文件不符合默认的加载规则,我们可以用:
new Configuration().configure(file); //通过file加载
new Configuration().configure(path); //通过路径加载
3): 通过Configuration对象加载映射文件(不推荐,一般都将*hbm.xml映射文件配置到hibernate.cfg.xml中)
conf.addClass(User.class);
规范:1、orm映射文件名称应与实体的简单类名一致;
2、orm映射文件需要与实体的类在同一包下。
2):SessionFactory工厂
SessionFactory相当于javaWeb的连接池,用于管理所有的session
根据Configuration配置信息创建SessionFactory
SessionFactory sf = conf.buildSessionFactory();
SessionFactory是线程安全的,可以是成员变量,多个线程同时访问时,不会出现线程并发的问题。
3):Session会话
Session相当于JDBC的Connection会话,通过操作session操作PO对象实现增删改查
session的api:
1、save 保存
2、update 更新
3、delete 删除
4、get 通过id查询,如果没有null
load通过id查询,如果没有抛异常
5、createQuery("hql") 获得Query对象
6、createCriteria(Class) 获得Criteria对象
session是单线程,线程不安全,不能编写成员变量。
4):Transaction事务
打开事务: Transaction ts = session.beginTransaction();
获得事务(已经打开的事务对象):session.getTransaction();
提交事务:commit();
回滚事务:rollback();
5):Query对象
Qyuery主要用于Hibernate执行hql语句。
hql语句:hibernate提供的面向对象的查询语句,使用对象(类)和属性进行查询,区分大小写。
获得Query对象:Query query = session.createQuery("hql")
方法:
list():查询所有 List<User> list = query.list();
uniqueResult():获得一个结果
setFirstResult(int):分页,开始索引数startIndex
setMaxResult(int):分页,每页显示的个数pageSize
6):工具类
package com.zju.model; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; //工具类
public class H3Utils { // 会话工厂,整个程序只有一份
private static SessionFactory factory; // 放在静态块里
static {
// 1 加载配置文件
Configuration conf = new Configuration().configure();
// 2 获得工厂
factory = conf.buildSessionFactory();
// 3 关闭虚拟机时,释放SessionFactory
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { @Override
public void run() {
System.out.println("虚拟机关闭,释放资源!");
factory.close();
}
}));
} // 获得一个新的session
public static Session openSession() {
return factory.openSession();
} //获得当前线程中绑定的session
public static Session getCurrentSession(){
return factory.getCurrentSession();
}
}
分享知识-快乐自己:Hibernate框架常用API详解的更多相关文章
- hibernate常用API详解
根据个人使用Hibernate的经验,介绍一下Hibernate的多种不同的查询和CUD操作,这些东西在日常开发中非常常用,希望对大家有所帮助. 以下示例均以两张表为例:member和userinfo ...
- Java程序员从笨鸟到菜鸟之(五十二)细谈Hibernate(三)Hibernate常用API详解及源码分析--csdn 曹胜欢
新接触一个框架的目的就是想利用这个框架来为我们做一些工作,或者是让他来简化我们的工作,利用这个框架无非就是要利用这个框架所给我们提供的API去操作我们的数据,所以利用一个框架的好坏很大一部分取决于你对 ...
- 分享知识-快乐自己:Java常用API总结
1):java.io.BufferedReader类(用于从文件中读入一段字符:所属套件:java.io) 1. 构造函数BufferedReader(java.io.FileReader FileR ...
- Selenium常用API详解介绍
转至元数据结尾 由 黄从建创建, 最后修改于一月 21, 2019 转至元数据起始 一.selenium元素定位 1.selenium定位方法 2.定位方法的用法 二.控制浏览器操作 1.控制 ...
- [总结]JS操作DOM常用API详解
文本整理了javascript操作DOM的一些常用的api,根据其作用整理成为创建,修改,查询等多种类型的api,主要用于复习基础知识,加深对原生js的认识. 基本概念 在讲解操作DOM的api之前, ...
- Hibernate框架之Criteria 详解
自从学数据库以来,从SQL查询-HQL查询-到Criteria 查询.有人问我:掌握一种查询语句不就可以吗,为什么还要学Criteria 查询?我回答道:用到特定于数据库的SQL 语句,程序本身会依赖 ...
- 分享知识-快乐自己:Spring_IOC(控制反转)详解
IoC是什么: 1):Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想. 2):在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的 ...
- 分享知识-快乐自己:oracle表分区详解
从以下几个方面来整理关于分区表的概念及操作: 1)表空间及分区表的概念: 2)表分区的具体作用: 3)表分区的优缺点: 4)表分区的几种类型及操作方法: 5)对表分区的维护性操作: 1):表空间及分区 ...
- hibernate学习(2)——api详解对象
1 Configuration 配置对象 /详解Configuration对象 public class Configuration_test { @Test //Configuration 用户 ...
随机推荐
- vuex 中关于 mapState 的作用
辅助函数 Vuex 除了提供我们 Store 对象外,还对外提供了一系列的辅助函数,方便我们在代码中使用 Vuex,提供了操作 store 的各种属性的一系列语法糖,下面我们来一起看一下: mapSt ...
- UNP学习笔记(第十三章 守护进程和inetd超级服务器)
关于守护进程可以查看apue的笔记 http://www.cnblogs.com/runnyu/p/4645046.html daemon_init函数 下面给出名为daemon_init函数,通过调 ...
- Lua数据库访问
© 版权声明:本文为博主原创文章,转载请注明出处 1.代码 luasql = require "luasql.mysql" --创建环境对象 env = luasql.mysql( ...
- struts2 文件上传和下载,以及部分源代码解析
struts2 文件上传 和部分源代码解析,以及一般上传原理 (1) 单文件上传 一.简单介绍 Struts2并未提供自己的请求解析器,也就是就Struts2不会自己去处理multipart/form ...
- python os模块 常用函数
os.getcwd() 获取当前工作目录 os.listdir() 返回指定目录下的所有文件和目录 os.remove() 删除单个文件 os.path.split() 以元祖形式返回一个路径的目录和 ...
- Ejabberd作为推送服务的优化手段(转)
AVOS Cloud目前还在用Ejabberd做Android的消息推送服务.当时选择Ejabberd,是因为Ejabberd是一个发展很长时间的XMPP实现,并且基于Erlang,设想能在我们自主研 ...
- Java学习之路 第四篇 oop和class (面向对象和类)
本人水平有限,创作本文是为了记录学习和帮助初学者学习,欢迎指正和补充 一.面向对象编程的设计概述 很多同学都在学校学了电脑的编程,现在的书籍大部分都是oop面向对象编程,一个很抽象的的名字,比较难以理 ...
- 访问一个绝对地址把一个整型数强制转换 (typecast)为一个指针是合法的
在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66.编译器是一个纯粹的ANSI编译器.写代码去完成这一任务. 解析:这一问题测试你是否知道为了访问一个绝对地址把一个整型数强制转换 ...
- Java 基础系列之volatile变量(一)
一.锁 两种特性:互斥性(mutual exclusion).可见性(visibility).原子性(atomic) 互斥性就是一次只有一个线程可以访问该共享数据,可见性就是释放锁之前,对共享数据的修 ...
- python 基础 2.2 if流程控制(二)
一. if else 1.逻辑值(bool)包含了两个值: ----True:表示非空的值,比如:string ,tuple,list,set,dictonary,所有非空的序列. -----F ...