优势
1.有利于数据库之间的移植,因为有方言(适配器)
2.解决了阻抗不匹配的问题,对象模型与关系模型的中介,如果使用对象数据库,Hibernate的意义就不大
3.侵入性小,轻量级框架,利于移植
适用场景
1.数据对象只读的比较多,可以用于缓存
2.对象之间的关系很清晰
3.增删改查
4.不需要考虑到特定的sql优化以及一些效率问题
切忌批处理(Ibatis比较适合批处理)
Base knowledge===================
支持JNDI,JDBC,JTA
SessionFactory: 重量级对象,创建耗时,一个DB对应一个,线程安全的
Session: 一个业务请求对应一个session,请求完毕,session关闭,非线程安全的
Transaction: 默认是手动提交的,可以设置为自动提交,但是一般使用的为手动提交,commit()的时候,会清理缓存,根据快照更新数据
Interceptor: 可以注册到session中,就可以拦截到
UseType: 可以用户自定义的存储方式
配置文档=======================
Hibernate地址:
SLF4j地址:
${MENU} hibernate根目录
使用hibernate3.6需要引入包为:
1.${MENU}/hibernate3.jar
1.${MENU}/lib/required/
2.${MENU}/lib/jpa/
hibernate默认是使用slf4j,如果要换成log4j,使用到的jar:
1.slf4j-api-1.6.1.jar
2.slf4j-log4j12-1.6.1.jar
3.log4j.jar
hibernate.cfg.xml属性
hbm2ddl.auto 是否通过映射文件自动建表
实体类的设计原则:
* 实现一个默认的Constructor
* 实体类不能为final的,因为在使用到Lazy的时候.会有一个代理类继承实体类
* 需要一个pk,且pk不能有任何业务逻辑.