JPA API(四)

一、EntityManager的一些主要的接口方法:

        【1】void  persist(Object  entity)

                        将新实体实例转换为受控状态

        【2】void  remove(Object  entity)

                        删除某个实体对象,也就是删除数据库中的某条记录

        【3】void  flush()

                        将受控态的实体数据同步到数据库中

        【4】T merge(T  entity)

                        游离态的实体持久化到数据库中,并转换为受控态的实体

        【5】T find(Class  entityClass,  Object  primaryKey)

                        以主键查询实体对象,entityClass是实体的类,primaryKey是主键值

【使用JPA实现数据的加载/修改】

        public  void  updatePerson()  throws  exception{

                ......

                Person  p = em.find(Person.class,  new  Long(2));  //  根据主键加载

                p.setName("创");        //  先加载,再更新,不再需要繁琐的逐字段编码

                p.getAddress.setStreet("司马24");

                ......

                em.getTransaction().begin();        //  更新数据需要进行事务控制

                em.merge(p);

                em.getTransaction().commit();

                p = em.find(Person class,  new Long(2));

                assertEquals(p.getName(),"创");

                assertEquals(p.getAddress().getStreet(),"司马24");

        }

【使用JPA实现数据的加载/删除】

        public  void  removePerson()  throws  Exception{

                javax..persistence.EntityManager  em = emf.createEntityManager();

                Person  p = em.find(Person.class,  new  Long(2));  //  先加载,再删除

                try{

                        em.getTransaction().begin();  //  删除数据需要进行事务控制

                        em.remove(p);        //  级联删除

                        em.getTransaction().commit();

                        p = em.find(Person.class,  new  Long(2));

                        assertNull(p);

                }catch(Exception e){

                        ......

                }

        }

二、JPA的生命周期--实体状态

        【新建态          new】:新创建的实体对象,尚未拥有持久化主键,没有和一个持久化上下文关联起来

        【受控态managed】:已经拥有持久化主键并和持久化上下文建立了联系

        【游离态 detached】:拥有持久化主键,但尚未和持久化上下文建立联系

        【删除态  removed】:拥有持久化主键,已经和持久化上下文建立联系,但已经被安排从数据库中删除









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值