代码改变世界

jpa的一些重要方法

2017-02-17 17:10  绿贝  阅读(674)  评论(0编辑  收藏  举报

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。