Persistence
Persistence类用于获取EntityManagerFactory的实例,该类包含了一个叫做createEntityManagerFactory的static方法,该方法有2个版本:
①带有一个参数:该参数就是JPA配置文件persistence.xml中的持久化单元名为参数;
②带有两个参数:第一个参数与上面含义相同,第二个参数是Map类型,用于设置JPA的属性,这时将忽略其他地方设置的属性,Map对象的属性名必须是JPA实现库提供商的命名空间约定的属性名;(服务提供商的jar包中规定的属性,不能随便乱填)
EntityManagerFactory
该接口主要用于创建EntityManager实例,该接口里有4个方法:
①createEntityManager():创建实体管理器对象实例;
②createEntityManager(Map):创建实体管理器对象实例,Map参数用于提供EntityManager的属性;
③isOpen():检查EntityManagerFactory是否处于打开状态,该工厂创建后一直处于打开状态,除非调用close()方法将其关闭;
④close():关闭EntityManagerFactory,释放所有资源,如果isOpen返回false的情况下继续调用close方法,将发生IllegalStateException异常;
EntityManager
查询find
根据SQL查询出实例对象;
查询getReference
先返回一个空对象,等用户使用的时候,再去执行SQL语句进行查询;
保存persist
把对象保存到数据库表,如果参数对象有主键,则抛出异常;
删除remove
只能删除持久化记录,通俗理解就是先用find查询出某个对象之后,再去用remove移除这个对象;
合并merge
①如果传入的对象的主键为null,则先把记录插入到数据库表中,再把记录查询出来填充到新对象中;
②如果传入的对象的主键有值,则先去EntityManager缓存中查看是否有该对象,然后再去数据库中查看是否有该对象,如果都没有,则JPA会创建一个新的对象,然后把参数对象的属性复制到新建的对象中,对新建的对象执行isnert操作;
③如果数据库有对应的记录,则JPA查询该记录并返回该记录对应的对象,再把参数对象的属性复制到这个对象中,再去执行update操作;
④如果EntityManager缓存中有对应的记录,然后把参数对象中的属性填充到缓存的对象中,然后把缓存对象update到数据库表中;
flush
同步持久上下文环境,即将持久上下文环境的所有未保存实例的状态信息保存到数据库表中,待事务提交之后完成数据库真正更新;
refresh
不再从缓存中读取,直接通过SQL语句查询数据库来返回实例对象;
setFlushMode
设置持久化上下文环境的flush模式:FlushModeType.AUTO自动更新数据库表、FlushModeType.COMMIT直到提交事务时再去更新数据库记录;
getFlushMode
获取持久上下文环境的Flush模式,返回FlushModeType的枚举值;
clear
清楚持久上下文环境,断开所有关联的实体,如果这时还有未提交的更新也会被撤销;
contains
判断一个实例是否属于当前持久上下文环境管理的实体;
isOpen
判断当前的实例管理器是否处于打开状态;
getTransaction
获取资源的事务对象;
close
关闭实体管理器,关闭之后只能调用getTransaction和isOpen方法,其他方法则抛出IllegalstateException异常,不过当与EntityManager管理的事务处于活动状态时,调用close方法后持久化上下文还是处于被管理状态,直到事务完成为止;
createQuery
创建一个查询对象;
createNamedQuery
根据命名的查询语句块来创建查询对象,参数为命名的查询语句;
createNativeQuery
使用SQL语句来创建查询对象,参数为SQL语句字符串;
createNativeQuery(String,String)
使用SQL语句创建查询对象,并制定返回结果集的Map名称;
EntityTransaction
用于EntityManager的事务管理,通过EntityManager.getTransaction方法来获取对象实例;
begin
用于启动一个事务,之后的多个数据库操作将作为一个整体被提交或回滚;
commit
用于提交当前事务,将事务启动后的所有数据库更新操作持久化到数据库中;
rollback
回滚当前事务,撤销事务开启后的所有数据库更新操作;
setRollbackOnly
使当前事务只能被撤销;
getRollbackOnly
查看当前事务是否设置了只能撤销的标记;
isActive
查看当前事务是否处于活动状态,处于活动状态才能commit或者rollback;
110

被折叠的 条评论
为什么被折叠?



