分层原则:下层为上层提供服务
表示层,业务层,持久层,数据库
对象模型到关系模型的转换
阻抗不匹配(继承关系数据库没有这种概念)
还有缓存,除了Hibernate还有OJB,JDO,TopLink,EJB,JPA
IBatis是基于sql映射
操纵对象使得更加对象化,有很好的数据库移植性,透明持久化(不需要继承或者实现什么,纯POJO)
使用情况:对单个对象修改,保存,查询比较适合,对象之间有着很清晰的关系
聚集性操作就不适合,这是O/R映射的一个特点,如果使用数据库特定优化机制的时候也不适合使用
原来的设计方式是先建数据模型,然后对象模型
现在的模式应该是对象模型,然后映射数据模型(自动生成表)
Hibernate支持两种方式配置文件,一种是properties,一种是xml
第一个hibernate项目
1. 创建java项目
2. 引入库
3. 创建全局配置文件,最好加入log4j配置文件
4. 定义实体类
5. 定义实体类的配置文件
6. 将User.hbm.xml加入到全局配置中
7. 编写hbm2ddl工具类,将实体类生成数据库表
一个数据库对应一个SessionFactory,他是线程安全的
Session对Connection进行了包装,在连接池里面拿连接,hibernate默认实现了连接池,也可以集成第三方的连接池,session管理了缓存,这也是跟连接不一样的地方,session是非线程安全的,一个session对应一个业务请求
JNDI:一个树,所有EJB都注册到这个树上,好处是对想可以统一管理,而且不依赖于连接池实现
Query也支持SQL查询
对想也可以获得事件,但是必须实现接口,但是侵入性增大,所以不建议使用,现在一般使用Interceptor
UserType是转换器
浙公网安备 33010602011771号