SSH Hibernate: 持久层
ORM框架 Object Ralational Mapping
对象 关系(关系型数据库) 映射
web
service
DAO
-----------------------------------
DB
使用面向对象的方式 操作数据库
ORM框架:
hibernate JDO OBJ TopLink MyBatis ...
JPA(标准)
版本: 2 3 4 5
3.6 (3.2 开始支持注解方式开发)
用hibernate:
1 导入jar包 hibernate3.jar
lib/required/*.jar
lib/jpa/*.jar
数据库驱动包
2 hibernate的配置文件: 1 hibernate的总体配置文件 src/hibernate.cfg.xml
数据库连接信息 和少量其余总体配置
2 映射配置文件 实体类 和 数据库表的对象
类名 ------- 表名
属性 ======== 字段
通常映射文件和类型相同 放在同一个包下
***.hbm.xml
Configuration ------ 类
SessionFactory 接口
Session 接口
Tranaction 接口
根据主键查询 session get() load()
get方法和load方法的区别:
1 get方法立即加载 向数据库发送sql 查询数据
load方法 延时加载 执行load时,没有发送sql 而是生成一个代理商对象
当第一个去取非主键属性值时,再发送sql 查询数据
2 当查不到数据时, get 返回null
load 抛异常
封装工具类:
crud save() update() delete() get/load saveOrUpdate()
实体对象在hibernate中的三种状态:
1 瞬时 (transient) 刚new出来的对象
1 生命周期没有被session管理 2 不和数据库中的任何一条数据对应只考虑主键能否对应)
2 持久化 (persistant) session.save(user) session.saveOrUpdate(user)
1 生命周期被session管理 2 和数据中的一条数据对应(只考虑主键能否对应)
3 脱管 (detached)
1 生命周期没有被session管理 2 和数据库中的一条数据对应
修改和删除 只能操作持久化和脱管状态的对象
大字段入库 数据库 blob 类 byte[]
type="binary"
web项目 文件选择框 把文件存到数据库 (strut2)