hibernate
基础部分
jdbc缺点
1、编程的时候很繁琐,用的try和catch比较多
2、jdbc没有做数据的缓存
3、没有做到面向对象编程
4、sql语句的跨平台性很差
jdbc的优点
效率比较高
hibernate的优点
1、完全的面向对象编程
2、hibernate的缓存很牛的,一级缓存,二级缓存,查询缓存 重点
3、编程的时候就比较简单了
4、跨平台性很强
5、使用场合就是企业内部的系统
hibernate的缺点
1、效率比较低
2、表中的数据如果在千万级别,则hibernate不适合
3、如果表与表之间的关系特别复杂,则hibernate也不适合
利用hibernate实现crud的操作
步骤
1、创建一个工程
2、导入jar包
说明:
javassist包是用来创建代理对象的
代理对象的三种创建方式:
1、jdkproxy
2、cglib
3、javassist
jta: Java Transaction API,是sun公司给分布式事务处理出来的规范
3、hibernate.cfg.xml
主要的用途:
告诉hibernate连接数据库的信息,用的什么样的数据库(方言)
根据持久化类和映射文件生成表的策略
4、持久化类和映射文件
5、生成表
6、客户端
说明
hibernate.cfg.xml文件的加载
可以指定配置文件的路径,配置文件可以随意放
sessionFactory
1、hibernate中的配置文件、映射文件、持久化类的信息都在sessionFactory中
2、sessionFactory中存放的信息都是共享的信息
3、sessionFactory本身就是线程安全的
4、一个hibernate框架sessionFactory只有一个
5、sessionFactory是一个重量级别的类
session
1、得到了一个session,相当于打开了一次数据库的连接
2、在hibernate中,对数据的crud操作都是由session来完成的
transaction
hibernate中的事务默认不是自动提交的
设置了connection的setAutoCommit为false
只有产生了连接,才能进行事务的操作。所以只有有了session以后,才能有transaction
流程
内部执行原理
根据表生成持久化类和映射文件
把一个工程变成hibernate工程
把数据库引入到myeclipse中
类型
hibernate类型
这个效率比较低
java类型
该种类型的效率比较高
在hibernate内部,为了一张表,这张表中有如下的映射关系:
hibernate类型 java类型 数据库的字段的类型
string java.lang.String varchar/varchar2
对象的状态
save
该方法可以把一个对象从临时装填转换成持久化状态
get
从数据库中根据主键提取出一个对象,该对象就是一个持久化状态的对象
update
把一个对象变成持久化状态
evict
把一个对象从持久化状态转化为脱管状态
clear
把所有的hibernate中的持久化对象都转换成脱管状态的对象
副本