SpringDataJPA实体概述
JPA提供了一种简单高效的方式来管理Java对象(POJO)到关系型数据库的映射,此类Java对象成为JPA实体或简称实体。实体通常与底层数据库中的单个关系表相关联,每个实体的实例表示数据库表格中的某一行
SpringDataJPA实体管理器
实体管理器(EntityManager)用于管理系统中的实体,它是实体与数据库之间的桥梁,通过调用实体管理器的相关方法可以把实体持久化到数据库中,同时也可以把数据库中的记录打包成实体对象。
实体的生命周期:
从图中我们可以看到,一个实体有四种状态:新建状态、托管状态、游离状态、删除状态。
刚创建出来的一个对象是处于新建状态,跟创建一个普通java对象一样,是通过new出来的一个对象,对新建对象进行赋值以后,调用实体管理器的persist方法,可以让实体状态迁移到托管状态,这个时候可以做两件事:插入语句把数据插入到数据库中同时标记实体为托管状态,处于托管状态的实体如果被修改属性,事务提交以后这些改变会自动提交到数据库中。托管状态标志着正在被实体管理器管理,如果我们提交事务,那么实体的状态就变成游离状态。
所谓的游离状态,是指修改实体的属性是不会触发数据库操作,这种状态跟新建状态很相似,区别在于游离态的实体的id属性是有值的,而新建状态的实体id是没有值的。如果调用实体管理器的close方法或者clear方法或者detach都可以让实体变成游离状态。其中close方法是关闭实体管理器,clear方法是是实体管理器的所有的实体都变成游离态,detach可以使单个实体变成游离态。处于托管状态的实体我们可以删除,可以调用实体管理器的remove方法。但这个时候系统是不会实际删除数据的,需要提交事务才会删除记录。