Hibernate
-
神马是Hibernate?
数据持久化框架;自动化的ORM框架;
优点:开发效率高、便于数据迁移
缺点:不适合批量操作,不好优化 -
使用Hibernate的3个准备工作
下载并部署jar(maven) -> hibernate.cfg.xml -> 持久化类和映射文件(annotation) -
7个使用步骤
读取并解析配置文件和映射文件 --> 创建SessionFactory -> 打开session --> 开启事务 -> 持久化操作 -> 结束事务 --> 关闭session -
hibernate常用的注解有哪些?
- @Id : 主键
- @Entity: 标识实体类
- @Column : 映射普通列
- @Table : 映射表
- @GeneratedValue : 设置自增列
- @SequenceGenerator : 声明序列生成器
- @ManyToOne : 多对一
- @JoinColumn : 定义列
- @ManyToMany : 多对多
- @JoinTable : 定义关联表
- @OneToMany 一对多
- @LazyCollection:
- LazyCollectionOption.TRUE:集合具有延迟性,只有在访问的时候才加载。
- LazyCollectionOption.EXTRA:集合具有延迟性,并且所有的操作都会尽量避免加载集合, 对于一个巨大的集合特别有用,因为这样的集合中的元素没有必要全部加载。
- LazyCollectionOption.FALSE:非延迟加载的关联。
- @LazyToOne
- LazyToOneOption.PROXY:基于代理的延迟加载。
- LazyToOneOption.NO_PROXY:基于字节码增强的延迟加载 - 注意需要在构建期处理字节码增强。
- LazyToOneOption.FALSE:非延迟加载的关联。
- @Cascade :级联
- @Fetch:配置加载方式
- @Transient:瞬时属性
-
Hibernate的查询方式有几种:
- HQL : Hibernate Query Language
Query 接口
query.list();
query.uniqueResult();
query.setFirstResult();
query.setMaxResults();
query.setProperties(entity);
query.setParameter(“name”,“haha”);
query.executeUpdate(); 批量删除或者更新 - Criteria:
- HQL : Hibernate Query Language
-
Hibernate的连接查询:hql
String hql = “from Emp e left join fetch e.dept”;
Spring集成Hibernate需要什么?
- applicationContext.xml
- 数据源 datasoure
- sessionFactory
- 事务管理器、事务通知,aop织入通知
- 组件扫描