Hibernate是一个开源的ORM全自动框架
它对JDBC进行了非常轻量级的封装。
JPA是一种规范,内部由接口和抽象类组成
实现了JPA规范的框架有Hibernate、TopLink等
核心配置文件:
persistence.xml
hibernate.show_sql = true
hibernate.hbm2ddl.auto = create/update/none
create: 程序运行时建表,如果存在则删除再建表
update:程序运行时建表,如果存在则不建表
none: 不自动建表
JPA注解
@Entity 声明实体类
@Table 实体类和表的映射关系
@Id 声明主键的配置
@GeneratedValue 主键生成策略 GenerationType.IDENTITY 自增,底层数据库必须支持自动增长。mysql支持
GenerationType.SEQUENCE oracle不支持自增,支持序列
GenerationType.TABLE 用一张表记录id增长
GenerationType.AUTO 自动根据数据库环境选择
@Column 属性与字段的映射关系
JPA操作步骤:
1、加载配置文件创建实体管理器工厂
Persisitence.createEntityManagerFactory
2、根据工厂创建实体管理器工厂
3、创建事务对象开启对象
4、增删改查
entityManager.persist(obj) // 保存操作
entityManager.find(Obj.class, 1l) // 查询操作,立即加载
entityManager.getReference(Obj.class, 1l) // 查询操作,获取的是一个动态代理对象,不会立即发送sql,什么时候用到属性什么时候发。懒加载机制
entityManager.remove(obj) // 删除操作,先查才能删
entityManager.merge(obj) //更新对象
5、提交事务
6、释放资源
jpql jpa查询语句
与sql类似
sql查询表及字段
jpql查询的是实体和类属性
String jpql = “from Customer where name like ? order by ?”
Query query = em.createQuery(jpql)
query.getResultList()
支持排序、计数、分页(limit)、条件查询
分页
query.setFirstResult(0)
query.setMaxResults(2)
query.setParameter(1, “xx”)