ORM思想
我们在用JDBC操作数据库时,操作非常繁琐:
1.注册驱动
2.获取连接
3.拼接SQL,提供占位符
4.创建执行SQL对象
5.执行SQL
我们利用ORM的思想封装成工具类,可以通过Obj.save(),Obj.get()等方法来对数据库进行操作.这样实体类和数据库建立映射关系,通过实体类找到表,通过实体类中的属性找到表中的字段.
核心: 操作实体类就相当于操作数据库表;
思想: 建立实体类和数据库表映射,建立实体类中属性和表中字段的映射关系.
Hibernate
Hibernate 是对象关系映射框架,它对JDBC进行轻量级封装,将POJO和数据库表建立映射关系,是一个全自动的ORM框架
JPA规范
JPA规范仅仅是一种规范而已,内部是接口和抽象类,并不能实现对数据库的操作,需要去实现这写接口和实现类才能操作数据库,例如:Hibernate就是实现里面的接口.
JPA配置文件
Jpa实体类中常用注解
@Entity:声明实体类
@Table(name=“数据库表名”):建立实体类和表的映射关系
@Id:声明主键
@GereratedValue():配置主键生成策略stragegy:
GenerationType.IDENTITY:自增–Mysql数据库支持
GenerationType.SEQUENCE:序列–Oracle数据库支持
GenerationType.TABLE:jpa提供的一种机制,通过一张数据库表维护主键
GenerationType.AUTO:程序自动的帮助我们选择主键生成策略@Column(name=“表中字段名”):配置属性和字段的映射关系
JPA操作数据库的步骤
其中:
Persisitance静态方法:根据持久化单元名称创建实体管理器工厂
作用:创建实体管理器工厂
createEntityManger()方法:
作用:内部维护了数据库信息,缓存信息,所有实体类管理对象
createEntityManger创建过程浪费资源但是线程安全,解决方法就是在程序运行时用静态代码块创建.
EntityManger对象:实体类管理对象,对数据库进行CRUD操作.
beginTransaction()创建事务对象
presist()保存
marge()更新
remove()删除
find/getRefrence()通过ID查找
注:getRefence()是懒加载的方式,得到的是一个代理对象,什么时候用什么时候才会查询Transaction对象:
begin:开启事务
commit:提交事务
JPQL的使用
统计查询:
分页查询:
条件查询:
注意:
query.setParameter(坐标,内容)占位符参数赋值
query.setFirstresult()
query.setMaxresult()分页查询