POJO(plain old java object普通java类):具有setter/getter方法的Java类就称为POJO
POJO转化为实体,手工使用标记,
@Entity
public class XXXX{...
JDBC方法由于它的简易性而具有吸引力,JTA方法提供了更多灵活性。你选择什么样的实现将依赖于你的应用程序的特定需求。
Javax.transaction.UserTransaction接口使得应用程序能够编程控制事务边界。JTA(Java
Transaction API) 为 J2EE 平台提供了分布式事务服务。
应用程序调用begin()来起动事务,即可调用commit()也可以调用rollback()来结束事务。
(A卡取钱,转入B卡)
XML:(Extensible
Markup Language)扩展型可标记语言。面向短期的临时数据处理、面向万维网络
---------------------------------------------------------------------------------------------------------------------
事务:访问或更新数据库中各种数据项的一个程序执行单元(一系列不可分割的改动数据库的操作),具备ACID特性
持久化的过程:内存中对象被管理的过程,对象鱼数据库自动同步,由系统完成这个过程。
持久化上下文:由处于托管状态下的全部实体实例的集合构成(被JPA管理的内存空间)
实体管理器:是实体对象与数据库进行交互的桥梁,所有的数据库操作都需要通过实体管理器进行,提供管理对象的方法,当持久化上下文处于打开状态时,实体管理器将跟踪实体实例的状态,对实体实例所做的修改将会自动同步到数据库。
分2种:J2EE 分布式的 java SE local的
持久化单元: 持久化单元通过persistence.xml文件定义实体管理器管理下的实体集合(他们都映射到同一个数据库中),该XML文件里的<persistence-unit>元素用于定义持久化单元,<persistence-unit>元素的name属性是持久化单元的名称 eg:first, EntityManagerFactory,作为EntityManager的工厂,包含有当前O-R映射 的元数据信息,每个EntityManagerFactory,可称为一个持久化单元(PersistenceUnit),每个持久化单元可认为是一个数据源的映射(所谓 数据源,可理解为一个数据库,我们可以在应用服务器中配置多个数据源,同时使用不同的PersistenceUnit来映射这些数据源,从而能够很方便的实现跨越多个数据库之间的事务操作!)
//通过Persistence.createEntityManagerFactory(“持久化单元的名称”);方法就能获取实体管理器工厂实例,进而获得实体管理器实例。
EntityManagerFactory emf =Persistence.createEntityManagerFactory("first");
EntityManager em=emf.createEntityManager();
//然后调用getTransaction()方法获取实体事务对象,对实体的增删改查之前,都要用tx.begin()开启事务
EntityTransaction tx= em.getTransaction();
tx.begin();
em.persist(Student);//将Student持久化到数据库
tx.commit();
.
.
tx.begin();
/**对实体实例的任何改动操作
*..
*..
*....
*/
tx.commit();
//关闭实体管理器
em.close();
emf.close();
实体管理器API:
detached 游离
managed:实体管理器将实体持久化后,状态变为托管
persist(java.lang.Object entity):创建托管实体,并将实体保存到数据库中,但并不是立即更改数据库。
find(entityclass,primaryKey)通过给定的实体类型和实体主键,在特定上下文中查找实体实例,找到则返回之。
merge(entity)不能直接将实体状态由游离变为托管,而是重新生成一个托管状态的实体实例,内存->数据库
refresh(entity)从数据库中读取实体状态,即刷新。
remove(entity)从数据库中删除实体实例 (序列化:将对象的每个属性保存到数据库)
@Resource可以理解为资源->数据源->也就是数据连接,基本上就是告诉程序数据库在哪里
@PersistenceContext则是注入一坨保存实体类状态的数据结构,针对实体类的不同状态(四种,managedh或detached等)可以做出不同的反应(merge,persist等等),其实就是把数据从数据库里提出,然后在内存里处理的,再返回数据库的法则。