Hibernate 基础

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hibernate 基础相关的知识,希望对你有一定的参考价值。

hibernate.cfg.xml 常用配置

属性名字含义
hibernate.show_sql是否把Hibernate运行时的SQL语句输出到控制台,编码阶段便于测试。
hibernate.format_sql输出到控制台的SQL语句是否进行排版,便于阅读。建议设置为true。
hbm2ddl.auto可以帮助由Java代码生成数据库脚本,进而生成具体的表结构。create | update | create-drop | validate
hibernate.default_schema默认的数据库前缀
hiberante.dialect配置Hibernate数据库方言,Hibernate可针对特殊的数据库进行优化。

session简介

hibernate的执行流程

1. 读取配置 Configuration                 hibernate.cfg.xml
2. 创建会话工厂 SessionFactory     创建和销毁都相当耗费资源,通常一个系统内一个数据库只创建一个SessionFactory
3. 创建会话 Session                         类似于JDBC中的Connection
4. 开始事务 Transaction                   
5. 执行 save、delete、update、get等操作    
6. transaction提交 transaction.commit()
7. 关闭会话  session.close()
8. 结束

什么是Session

Hibernate不建议直接使用JDBC的Connection操作数据库,而是通过使用Session操作数据库
Session可以理解为操作数据库的对象
session与connection,是多对一的关系,每个session都有一个与之对应的connection,一个connection不同时刻可以供多个session使用

要把对象保存到关系数据库中,需要调用Session的各种方法,
如:save(), update(), delete(), createQuery()等

transaction简介

hibernate对数据的操作都是封装在事务当中,并且默认是非自动提交的方式。所以用session保存对象时,如果不开启事务,并且手工提交事务,对象并不会真正保存在数据库中。

如果想让hibernate像jdbc那样自动提交事务,必须调用session对象的doWork()方法,获得jdbc的connection后,设置其为自动提交事务模式。(注意:通常不推荐这样做)
  1. session.doWork(new Work() {
  2. public void execute(Connection connection) throws SQLException {
  3. connection.setAutoCommit(true);
  4. }
  5. });
  6. session.save(new Student("***", new Date(), "男","福建省福州市 "));
  7. session.save(new Student("***", new Date(), "男","福建省泉州市 "));
  8. session.flush();

Session详解

openSession与getCurrentSession的区别

1. getCurentSession在事务提交或者回滚之后会自动关闭,而openSession需要手动关闭。如果使用openSession而没有手动关闭,多次之后会导致连接池溢出
2. openSession每次创建新的session对象,getCurrentSession使用现有的session对象(类似于单例模式)








以上是关于Hibernate 基础的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate基础

[vscode]--HTML代码片段(基础版,reactvuejquery)

Hibernate基础

Hibernate 基础

Hibernate基础

[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础