hibernate 数据操作流程
来源:互联网 发布:淘宝助理 csv excel 编辑:程序博客网 时间:2024/06/06 04:25
1.hibernate中的5个核心接口:
Configuration接口:
Configuration接口负责配置并启动Hibernate
创建SessionFactory对象
在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、
读取配置,然后创建SessionFactory对象。
SessionFactory接口:
SessionFactroy接口负责初始化Hibernate
负责创建Session对象
需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,
当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
Session接口:类似于connection对象
负责执行被持久化对象的CRUD操作
Hibernate的session不同于JSP应用中的HttpSession
Transaction接口:
Transaction接口负责事务相关的操作
Query和Criteria接口:
Query和Criteria接口负责执行各种数据库查询
添加数据:
@Test
public void save() {
TUser user= new TUser();
user.setUsername("笑傲江湖4");
user.setRealname("笑傲江湖");
user.setPassword("111");
//1读取配置文件
Configuration cfg=new Configuration().configure("hibernate.cfg.xml");
//2 获取session工厂
// SessionFactory sf= cfg.buildSessionFactory(); 旧版本过时 不推荐使用
//
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(cfg.getProperties()).
buildServiceRegistry();
SessionFactory sf = cfg.buildSessionFactory(serviceRegistry);
//3 打开 sessiuon
Session session= sf.openSession();
//4 打开事物
Transaction transaction = null;
try {
transaction=session.beginTransaction();
//返回主键的id
Serializable id = session.save(user); //保存 将数据提交到数据库
System.out.println(id);
transaction.commit();//提交回滚 数据保存到数据库
} catch (Exception e) {
transaction.rollback();
e.printStackTrace();
}finally{
//5 关闭事物
session.close();
}
修改数据:
/**
* 根据主键id更新所有字段
*/
@Test
public void update(){
TUser user=new TUser();
user.setUserid(38);
user.setUsername("abdddf");
//1 读取配置文件
Configuration cfg= new Configuration().configure("hibernate.cfg.xml");
//2 获取session 工厂
ServiceRegistry serviceRegistry =new ServiceRegistryBuilder().applySettings(cfg.getProperties()).
buildServiceRegistry();
SessionFactory sf=cfg.buildSessionFactory(serviceRegistry);
//3 打开 session
Session session=sf.openSession();
//4 打开事物
Transaction transaction =null;
try {
transaction=session.beginTransaction();
//保存到数据库
session.update(user);
//提交回滚
transaction.commit();
} catch (Exception e) {
// 提示错误信息
transaction.rollback();
e.printStackTrace();
}finally{
//5 关闭事物
session.close();
}
如图:
删除数据:注意:根据主键删除数据,即使对象中有其他数据也不会作为删除条件
注意:执行的步骤要搞清楚,面试的时候问hibernate的执行流程就是这5个步骤!!!
/**
* 根据主键id删除字段
*/
@Test
public void delete(){
TUser user = new TUser();
user.setUserid(38);
user.setUsername("诸葛亮"); //不作为删除数据的条件
//1 读取配置文件
Configuration cfg = new Configuration().configure("hibernate.cfg.xml");
//2 获取session 工厂
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().
applySettings(cfg.getProperties()).buildServiceRegistry();
//cfg.buildSessionFactory(serviceRegistry);
SessionFactory sf=cfg.buildSessionFactory(serviceRegistry);
// 3 打开session
Session session = sf.openSession();
//4 打开事物
Transaction transaction = null;
try {
//
transaction =session.beginTransaction();
//保存到数据库 执行对应的方法 根据id执行删除操作
session.delete(user);
//提交和回滚
transaction.commit();
} catch (Exception e) {
// 提示对应的错误信息
transaction.rollback();
e.printStackTrace();
}finally{
// 5 关闭事物
session.close();
}
}
如图:
3.在控制台显示执行的SQL语句操作:
在hibernate.cfg.xml 文件中选择Configuration 下图
- hibernate 数据操作流程
- hibernate基本操作流程
- Hibernate操作流程
- hibernate--数据库完整操作流程
- Hibernate操作Blob数据
- Hibernate、批量操作数据
- 【Hibernate】数据操作
- JDBC数据访问操作流程
- Hibernate的简单数据操作
- Hibernate操作Clob类型数据
- mysql 数据操作命令汇总 hibernate操作
- 用hibernate对递归数据的操作
- hibernate 作批量数据操作心得
- 用hibernate对递归数据的操作
- 用hibernate对递归数据的操作
- hibernate 数据保存操作的原理
- Hibernate 线程,数据操作锁机制测试
- hibernate操作mysql的blob数据
- Servlet中的站内转发、重定向以及请求包含
- Unity NGUI 获得点击的UI
- dwz 个人学习笔记(一)页面的返回json返回值的详解
- impala与hbase整合
- Android Material Design Behavior
- hibernate 数据操作流程
- 多线程之GCD详解
- 浏览器访问网页全过程
- java运算符
- Linux下解决Qt连接MySql找不到驱动的问题
- 难理解的c代码(1)
- arraycopy方法和二维数组
- Fiddler--下载安装、原理、教程
- 自定义view group