一、概述
1、适用的场合
适用于中小型企业:表的关系不是很复杂;数据量不是很大。
2、缺点
如果该项目对sql的优化要求特别高,不适合用hibernate
如果数据库的数据量特别大,也不适合用hibernate
如果表与表之间的关系比较复杂,也不能用hibernate来做
3、优点
1、面向对象的编程
2、缓存(重点)
拥有三种缓存:一级缓存、二级缓存、查询缓存。
如果数据量不是特别大
Hibernate 支持分布式缓存
oscache 不支持分布式缓存
ehcache 不支持分布式缓存
如果数据量很大
redis 支持分布式缓存
memorycache 支持分布式缓存
3、代码操作比较简单
4、平台的移植性比较强
4、JDBC的缺点
1、代码比较繁琐
2、sql语句平台的移植性不是很强
3、没有data pool(数据缓存)
4、当jdbc调用mysql的存储过程的时候,存储过程本身移植性比较差
5、没有做到面向对象开发
5、hibernate与jdbc
Hibernate是对JDBC的轻量级封装。
二、环境的搭建
1、拷贝必要的jar包
2、编写hibernate的配置文件
配置文件的名字是固定的,位置一定要在类的根目录下。
3、定义持久化类
持久化类即可序列化的类,并且在映射文件中有定义。
4、编写映射文件
映射文件与持久化类(JavaBean)在同一个目录下,映射文件的名字以其对应的类名开头,格式是固定的。
5、创建数据库中的表
SessionFactory中包含了大量的Map,存放有很多的数据,是一个很复杂的类。创建了此类的对象,即可以建立与之对应的数据库中的表。
三、操作数据库表
1、添加
2、查询一条记录
3、查询多条记录
4、修改
5、删除
四、一些概念
1、sessionFactory
1、sessionFactory是单例的
2、hibernate的配置文件的信息、映射文件的信息、持久化类的信息全部在sessionFactory中
3、sessionFactory封装的信息全部是公共的数据
4、sessionFactory本身是线程安全的
2、session
1、crud操作都是由session来完成的
2、Session是一个接口,实现类是SessionImpl
3、在创建sessionImpl的时候,传递一个参数为Connection,所以在hibernate编程的时候,创建session相当于打开了一个连接
4、当关闭session的时候,相当于关闭了一个连接
3、transaction
1、事务是由session来产生的
2、事务默认是关闭的,必须手动开启