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. jquery的input:type=file实现文件上传

    <!DOCTYPE html> <html> <head> <title>html5_2.html</title> <style> ...

  2. 跟着百度学PHP[14]-PDO的预处理语句2

    在$sql = $pdo -> prepare("insert into users(gold,user,password) values(?,?,?)"):条语句我们不仅仅 ...

  3. What is Web Application Architecture? How It Works, Trends, Best Practices and More

    At Stackify, we understand the amount of effort that goes into creating great applications. That’s w ...

  4. 将td中文字过长的部分变成省略号显示的小技巧

    首先设置表格的样式table-layout:"fixed"再设置表格的宽度(这步必须) 最后再设置td样式的三个必要属性 代码如下: text-overflow: ellipsis ...

  5. .net 编译原理

    这听起来像是个非常高大上的名字,上学的时候我们学过的编译原理或者编译技术实际上是在讲如何将高级程序语言如C++编译为计算机可以理解的汇编语言,这里说的编译原理只是想说明在.NET的世界里编译这件事儿和 ...

  6. php socket编程入门

    服务端 <?php /** * File name server.php * 服务器端代码 * * @author guisu.huang * @since 2012-04-11 * */ // ...

  7. jquery mobile demo

    <!DOCTYPE html> <html> <head> <title>jQuery Mobile Demo</title> <me ...

  8. 【BZOJ】2060: [Usaco2010 Nov]Visiting Cows 拜访奶牛(树形dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2060 裸的树形dp d[x][1]表示访问x的数量,d[x][0]表示不访问x的数量 d[x][1] ...

  9. 【BZOJ】1654: [Usaco2006 Jan]The Cow Prom 奶牛舞会(tarjan)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1654 请不要被这句话误导..“ 如果两只成功跳圆舞的奶牛有绳索相连,那她们可以同属一个组合.” 这句 ...

  10. Anaconda2+Theano 安装过程中的所有的坑。。。

    写在前面的废话 上次搞theano安装还是一年多以前..anaconda才出到1.4,当时的AnacondaCE,直接安装完基本上theano啥的都一套成功.. 今天换了个电脑,重装anaconda, ...