初识Hibernate

Hibernate

. ORM (对象关系映射)——————————可行的ORM框架技术

1. 写Sql有什么不好?

a. 不同的数据库使用的SQL语法不通

PL/SQL(Oracle) T/SQL (微软)

b. 同样的功能在不同的数据库中有不同的实现方式

eg:分页 rownum (Qracle) limt (mysql) top(sql server)

c. 程序过分依赖SQL对程序的移植,扩展和维护等带来很大的麻烦。

2. 有没有办法让程序员彻底抛弃书写sql的思想,完全的使用面向对象思想开发软件呢?

. 什么是Herbinate?————针对持久化层的ORM框架

1. 是Java领域的一款开源的ORM框架技术

2. 对JDBC进行了非常轻量级的对象封装

3. 其他主流的ORM框架技术

  • MyBatis<—-iBatis(Apache)

  • Toplink————–>Oracle AS TopLink(Oracle)

  • EJB : 本身是JAVAEE的规范 重量级框架

. 编写第一个Herbinate例子(Hibernate的编写步骤)

a.编写配置文档 hibernate.cfg.xml

b.编写实体类

c.生成对应实体类的配置文件并添加到配置文档中

d.调用Hibernate API进行测试

1.Hibernate关键点

image

2.javaBeans的规范

  • 公有的类

  • 提供公有的不带参数的默认的构造方法

  • 属性私有

  • 属性setter/getter封装

3.hibernate.cfg.xml常用配置

  • hibernate.show_sql——是否展示

  • hibernate.format_sql——是否格式化sql

  • hbm2ddl.auto——自动生成策略:create/update/create—drop/validate

  • hibernate.default_schema——数据库前缀

  • hibernate.dialect——方言

    hibernate前缀可以省略

4. hibernate的执行流程

image
image

5. 什么是Session——操作数据库的对象

类似Connection——> session(多) 对 (一)connection

image

* openSession与getCurrentSession的区别
  1. getCurrentSession在事务提交或者回滚之后会==自动关闭==,而openSession==需要手动关闭==。若长期不关闭,会导致连接池溢出。
  2. openSession==每次创建新==的session对象,getCurrentSession==使用现有的==session对象。

6. 什么是transaction?(事务)

不开启事务就不能将对象保存在数据库中

==beginTransaction==

7. 单表操作的常用方法

save delete update get load

8. get与load的区别

a. 是否立即访问数据库

在==不考虑缓存==的情况下

get方法会在调用之后==立即向数据库发出SQL语句==,返回==持久化对象==

load方法会在调用后返回一个==代理对象==——该代理对象只保存了实体对象的id,直到使用对象的非主键属性时才会发出SQL语句。

b. 当返回的对象在数据库中不存在时

对于调用get和load方法后的==结果==

get方法的结果为null

load方法返回异常 ObjectNotFoundException

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值