一   、API的定义
所谓的API全称就是(Application Programming Interface,应用程序编程接口)。就是类库对外提供的接口、类、枚举、注解等元素。
如:JDK API帮助文档,可以理解为,JDK对外提供的(接口,类,枚举,注解)元素的帮助文档。
 
二 、Hibernate的常用API
 
SessionFactory:会  话工厂
Session:会话
Transaction:事务处理类
Configuration:配置类
 
 
  1. Configuration类:作用:用于获得框架的信息,构建将会话工厂。
 
1.1 获取默认的配置文件
//1.创建一个Configuration的对象
Configuration config=new Configuration();
//2.读取默认路径下的hibernate.cfg.xml配置文件
config.configure();

1.2 获取指定的配置文件

//1.创建一个Configuration的对象
Configuration config=new Configuration();
//2.读取默认路径下的hibernate.cfg.xml配置文件
config.configure("config.xml");
2  .  SessionFactory接口
 
作用:类似DataSource。用于管理数据库的连接。
openSession():打开session
getCurrentSession():获得当前线程的session(线程绑定)
close():关闭会话工厂。
//2.获得Session
public static Session getSession(){
return sessionFactory.openSession();
}
3   . session接口 :类似JDBC的Statement。用于操作数据库的数据。Session操作是必须先映射,后操作。
方法名
作用
save()
保存数据库到数据库
saveOrUpdate()
如果数据库没有记录就保存,如果有记录就更新,重要的判断是OID是否相同,OID(Object ID)就是在配置文件配置为<id>属性。
delete()
用于通过OID删除数据库记录
update()
用于通过OID更新数据的记录
load()
用于通过OID,获得一条记录,有延迟
get()
用于通过OID,获得一条记录,无延迟
beginTransaction()
打开并且启动事务(增删改操作必须,)
getTransation()
打开了事务,没有开启。
clear()
清除session所有对象的持久态。
close()
关闭session对象
evit()
清除指定的对象的持久态
createQuery()
获得使用HQL查询的Query对象
createSQLQuery()
获得使用SQL查询的Query对象
createCriteria()
获得标准查询的Criteria对象
 
 
4   .  Transaction
 
就是用于处理事务。
begin(): 启动
commit():提交
rollback():回滚
 
 
 
5   .  Hibernate的CRUD
 
在配置好框架的前提下
 
5.1  增加的代码
//增加操作
@Test
public void save() {
//获取session
Session session = HibernateUtils.getSession();
//打开事务
Transaction transaction = session.beginTransaction();
Student student = new Student();
student.setStu_name("张三"); //进行增加操作
session.save(student);
session.close();
}

5.2  删除的代码

//删除
@Test
public void delete() { Session session = HibernateUtils.getSession();
Transaction transaction = session.beginTransaction();
Student student = new Student();
student.setStu_id(1L);
session.delete(student); transaction.commit();
session.close();
}
5.3  更新的代码
 
除了增,.        删,查改都需要通过ID进行操作,就是需要指定了需要更新的那一个项的id。还有内容
//更新
@Test
public void update() {
Session session = HibernateUtils.getSession(); Transaction transaction = session.beginTransaction(); Student student = new Student();
student.setStu_id(4L);
student.setStu_name("赵六");
session.update(student);
transaction.commit();
session.close(); }
5.4  查找的代码
 
GET方法进行查找: //查询数据都没有操作数据库,不用开启事务
@Test
public void get() { //查询数据都没有操作数据库,不用开启事务
Session session = HibernateUtils.getSession();
Student student = session.get(Student.class, 4L);
System.out.println(student.getStu_name());
session.close();
System.out.println(student.getStu_name()); }

Load方法进行查找

@Test
public void load() { //查询数据都没有操作数据库,不用开启事务
Session session = HibernateUtils.getSession();
Student student = session.load(Student.class, 4L);
System.out.println(student.getStu_name());
session.close(); }
两者的区别
 
相同之处:get方法和load方法都是通过OID获得指定的记录的数据的。
 
不同之处
 
GET
1.由于get方法是无延迟的,所以查不到数据直接返回null
2.由于get方法是无延迟的,查询的时候数据已经在对象里面,所以关闭session,数据依然可以使用
session.close();
System.out.println(student.getStu_name());
Load
1. load是有延迟,基于延迟的机制,如果找不到数据就报异常
2. load是有延迟,意味着在对象的时候才去查询数据库。导致在使用对象前关闭数据库,报错。
3. load方法可以通过修改<class lazy="false">修改为无延迟获得数据
正确
System.out.println(student.getStu_name());
session.close(); 错误
session.close();
System.out.println(student.getStu_name());
解决方法:在XXX.hbm.xml配置的时候加一条 lazy="false"
<!-- 设置load直接查询。设置class标签的lazy为false -->
<class name="com.sxt.entity.Student" table="tb_student" lazy="false">

Hibernate常用api以及增删改查的更多相关文章

  1. hibernate关联对象的增删改查------查

    本篇博客是之前博客hibernate关联对象的增删改查------查 的后继,本篇代码的设定都在前文已经写好,因此读这篇之前,请先移步上一篇博客 //代码片5 SessionFactory sessi ...

  2. 05_Elasticsearch 单模式下API的增删改查操作

    05_Elasticsearch 单模式下API的增删改查操作 安装marvel 插件: zjtest7-redis:/usr/local/elasticsearch-2.3.4# bin/plugi ...

  3. Elasticsearch 单模式下API的增删改查操作

    <pre name="code" class="html">Elasticsearch 单模式下API的增删改查操作 http://192.168. ...

  4. zkCli的使用 常用的节点增删改查命令用法

    zkCli的使用 常用的节点增删改查命令用法 1. 建立会话  命令格式:zkCli.sh -timeout 0 -r -server ip:port ./zkCli.sh -server -time ...

  5. Hadoop基础-HDFS的API实现增删改查

    Hadoop基础-HDFS的API实现增删改查 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客开发IDE使用的是Idea,如果没有安装Idea软件的可以去下载安装,如何安装 ...

  6. Elasticsearch学习系列之单模式下API的增删改查操作

    这里我们通过Elasticsearch的marvel插件实现单模式下API的增删改查操作 索引的初始化操作 创建索引之前可以对索引进行初始化操作,比如先指定shard数量以及replicas的数量 代 ...

  7. hibernate关联对象的增删改查------增

    本文可作为,北京尚学堂马士兵hibernate课程的学习笔记. 这一节,我们看看hibernate关联关系的增删改查 就关联关系而已,咱们在上一节已经提了很多了,一对多,多对一,单向,双向... 其实 ...

  8. MYSQL的常用命令和增删改查语句和数据类型

    连接命令:<a href="http://lib.csdn.net/base/mysql" class='replace_word' title="MySQL知识库 ...

  9. Hibernate入门案例及增删改查

    一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...

随机推荐

  1. MVC框架的主要问题是什么?

    以下是MVC框架的一些主要问题: 对 DOM 操作的代价非常高 程序运行缓慢且效率低下 内存浪费严重 由于循环依赖性,组件模型需要围绕 models 和 views 进行创建

  2. AI学习网址记录

    https://ai.yanxishe.com/ https://ai.yanxishe.com/page/blogDetail/14365 GAN网络 对抗式生成网络-图像超分辨及图像修复 完全可见 ...

  3. [转][linux][centos]嵌入式 Linux下编译并使用curl静态库

    #x86 ./configure --disable-shared --enable-static --disable-ftp --disable-ipv6 --disable-rtsp --disa ...

  4. Typescript中的可索引接口 类类型接口

    /* 5.typeScript中的接口 可索引接口 类类型接口 */ /* 接口的作用:在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用 ...

  5. stl中map的四种插入方法总结

    stl中map的四种插入方法总结方法一:pair例:map<int, string> mp;mp.insert(pair<int,string>(1,"aaaaa&q ...

  6. C++ STL中常见容器的时间复杂度和比较和分析

    C++ STL中常见容器的时间复杂度 map, set, multimap, and multiset 上述四种容器采用红黑树实现,红黑树是平衡二叉树的一种.不同操作的时间复杂度近似为: 插入: O( ...

  7. VMware 快速克隆出多个 Linux centos7 环境

    这样一台系统就已经克隆好了,但是,现在还没有完,因为是克隆的,里面的ip地址和创建的主机名都是一样,需要进行修改 登录服务器,然后使用 [ifcfg-ens33需根据实际情况而定] vi /etc/s ...

  8. HR数据分析常用的50个公式

    HR数据分析常用的50个公式 HR经常需要和数据打交道,如入职率.离职率.加班费计算等.虽然日常工作中,单个数据的计算并不麻烦,但几十上百个累计在一起,确实很容易混淆,甚至计算失误.今天小编急HR之所 ...

  9. Ubuntu18.04下LAMP环境搭建

    可以安装安装Xampp,Xampp是一个集成的LAMP开发环境. 但是这只是对于一个刚安装好的系统来说的,但是很有可能我的电脑上面已经安装过Apache,或者安装过MySQL,或者安装过PHP了,或者 ...

  10. Linux使用sleep进行延迟实验

    sleep命令可以延迟脚本执行一段时间(以秒为单位).下面的命令使用tput和sleep从0开始计时到40秒: #/bin/bash echo Count: tput sc # 循环40s for c ...