`
yun342173024
  • 浏览: 72874 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jpa persist,meger,remove,find方法介绍

阅读更多
jpa规范提供了EntityManager接口来操作数据库,它定义了一些操作数据库的方法,在这里介绍几个重要的方法,就是crud方法。
1.persist(Object entity)方法
  这个方法把一个实体加入持久化上下文中,也就是缓存中,在事务提交或者调用flush()方法的时候,把这个实体保存到数据库中(执行insert语句),如果实体已存在,则抛出EntityExistsException异常,缓存则不存在了。

2.find(Class<T> entityClass,Object primaryObject)
  根据主键从数据库中查询一个实体,这个方法首先从缓存中去查找,如果找不到,就从数据库中去找,并把它加入到缓存中。
3.merge(T object)
把一个对象加入到当前的持久化上下文中,就是把一个对象从detach转变为managed,并返回这个对象。当一个对象设置了主键,并调用此方法,就会从数据库中根据主键查找到该对象把它放到持久化上下文中,当事物提交的时候,如果对象发生了改变,更新该对象的改变到数据库中,如果对象没有改变,则什么也不做,如果对象没有设置主键,则插入该对象到数据库中。
4.remove(Object entity)
  根据主键从数据库中删除一个对象,这个对象的状态必须是managed,否则会抛出IllegalArgumentException,在一个事务中删除一个对象,假如实体管理器对象为em,
em.remove(em.merge(entity)),如果直接调用em.remove(entity);会抛出异常
IllegalArgumentException。

下面介绍对象的状态
1. new/transient
  新建的对象,或者是说这个对象没有加入到持久化上下文当中。
2 managed
  对象存在持久化上下文中
3 detach
  对象脱离了持久化上下文
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics