POJO(plain
old java object普通java类):具有setter/getter方法的Java类就称为POJO

POJO转化为实体,手工使用标记,

@Entity

public
class XXXX{...

JDBC方法由于它的简易性而具有吸引力,JTA方法提供了更多灵活性。你选择什么样的实现将依赖于你的应用程序的特定需求。


JTA:Java Transaction API,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等等),其实就是把数据从数据库里提出,然后在内存里处理的,再返回数据库的法则。

J2EE之JPA的更多相关文章

  1. ADF_Starting系列9_使用EJB/JPA/JSF通过ADF构建Web应用程序之测试J2EE Container

    2013-05-01 Created By BaoXinjian

  2. JPA事务总结

    http://www.soso.io/article/65405.html 事务管理是JPA中另一项重要的内容,了解了JPA中的事务管理,能够进一步掌握JPA的使用.事务管理是对一系列操作的管理,它最 ...

  3. atitit.j2ee 1.5 1.6 的不同跟 Servlet 3.0新特性总结

    atitit.j2ee 1.5 1.6 的不同跟 Servlet 3.0新特性总结 1. jar比较,j2ee 1.6 添加了许多的jar 1 2. ,Servlet 3.0 2 2.1. 可插性   ...

  4. JPA学习---第三节:搭建JPA开发环境和全局事务介绍

    一.创建 Java 项目 1.导入所需的 jar 包: 2.创建 persistence.xml 文件, 代码如下: <?xml version="1.0" encoding ...

  5. JavaEE(12) - JPA规范及实现(TopLink和Hibernate)

    1. JPA规范与ORM框架之间的联系 JPA规范并不属于EJB3规范,它是一套完全独立的规范,不仅可以在基于EJB的JavaEE应用程序中使用,而且完全可以在普通JavaSE应用程序中使用. JPA ...

  6. JPA规范及其它持久层框架

    JPA是一种规范,而hibernate是JPA的一种实现 JPA全称为Java Persistence API ,Java持久化API是Sun公司在Java EE 5规范中提出的Java持久化接口.J ...

  7. ECP系统J2EE架构开发平台

    一 体系结构 ECP平台是一个基于J2EE架构设计的大型分布式企业协同管理平台,通过采用成熟的J2EE的多层企业架构体系,充分保证了系统的健壮性.开放性和扩展性.可选择部署于多种系统环境,满足不同类型 ...

  8. 集成JPA+springmvc+spring+EJB中的Java EE应用

    EJB是sun的JavaEE服务器端组件模型,设计目标与核心应用是部署分布式应用程序.凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台.EJB (Enterprise Jav ...

  9. j2ee中spring的分布式事务实现及解决方案

    1 java事务类型 Java事务的类型有三种:JDBC事务.JTA(Java Transaction API)事务.容器事务. 常见的容器事务如Spring事务,容器事务主要是J2EE应用服务器提供 ...

随机推荐

  1. php 36进制与10进制转换

    php 36进制与10进制转换 /** * @desc im:十进制数转换成三十六机制数 * @param (int)$num 十进制数 * return 返回:三十六进制数 */ function ...

  2. KVC之-setValue:forKey:方法实现原理与验证

    KVC之-setValue:forKey:方法实现原理与验证 - (void)setValue:(id)value forKey:(NSString *)key方法,实现原理与验证 功能:使用一个字符 ...

  3. javascript断点设置和调试

    JS调试必备的5个debug技巧http://www.jb51.net/article/47812.htm Chrome 中的 JavaScript 断点设置和调试技巧http://www.xuebu ...

  4. QT界面 使用QStyledItemDelegate QPainter QStyleOptionViewItem QModelIndex组合实现项的绘制

    QStyledItemDelegate类为来自模型的数据项提供了显示和编辑工具. 当在Qt项视图(例如QTableView)中显示来自模型的数据时,各个项由委托(delegate)绘制.此外,当编辑一 ...

  5. myeclipse之完全破解

    并不是所有的破解都是成功的,就如并不是所有的战争都会胜利一样,我们在做事情的时候,总会遇到些问题,比如Activate不成功,需要手动激活. 激活不成功就是不成功,来回的破解.卸载.重装,都还是不可能 ...

  6. javascript立刻执行函数

    一般常见的立刻执行函数推荐如下两种: (function(a){ console.log(a); })("kk"); (function(a){ console.log(a) }( ...

  7. Node.js 配置Nginx

    1.修改nginx.conf upstream nodejs { server 127.0.0.1:3000; #server 127.0.0.1:3001; keepalive 64; } serv ...

  8. UVALive 3942 Remember the Word 字典树+dp

    /** 题目:UVALive 3942 Remember the Word 链接:https://vjudge.net/problem/UVALive-3942 题意:给定一个字符串(长度最多3e5) ...

  9. db_keep_cache_size參数的控制范围測试

    ocm考试新题中.须要创建keep存储的表,但在该參数是否应该改动上,有一些分歧.有人说asmm会自己主动给keep分配内存的,该參数就不用设置了. 看文档和asktom.也是云山雾罩,说什么的都有, ...

  10. Shell面试题8:筛选符合长度的单词案例

    企业Shell面试题8:筛选符合长度的单词案例 利用bash for循环打印下面这句话中字母数不大于6的单词(某企业面试真题). I am oldboy teacher welcome to oldb ...