JPA JTA JMS 都是啥呀,谁能给举个生动的例子,不要百度出来的

mixer_b 2010-12-26 11:01:22
JPA JTA JMS 都是啥呀,谁能给举个生动的例子,不要百度出来的
...全文
110 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jlins 2010-12-27
  • 打赏
  • 举报
回复
JTA 分布式事务,如果你操作一个数据库用Jdbc就可以完成事务,如果你操作2个数据库要完成2个数据库之间的事务就用JTA
JPA 你知道hibernate吗?hibernate不光有配置文件,还有通过注解直接来映射,JPA就是java规范的映射,是对EJB3准备的一套规范
JMS 意思是 java消息服务,比如你操作一个程序跑任务,想跑完之后忘你的邮箱里发送一个邮件,而且是异步的,那你就可以使用JMS的api来发送邮件了...邮件就是消息...

以上个人理解
  • 打赏
  • 举报
回复
这上面三个,每一个都可以写一本书,推荐看的书:

JPA
Apress 出版的 Pro JPA 2,目前无中文版


O'Reilly 出版的 Enterprise JavaBeans 3.0(第五版),该书有七个章节介绍了 JPA 1.0


O'Reilly 出版的 Enterprise JavaBeans 3.1(第六版),该书介绍了 JPA 2.0,目前无中文版


JTA
由于 JTA 涉及的领域太多,还没有专门讲 JTA 的书。关于 Java 事务上我只见过这本书:
Java Transaction Processing: design and implementation,目前无中文版


JMS
O'Reilly 出版的 Java 消息服务。JMS 中最好的一本书,作者全都是分布式领域的公认专家!

  • 打赏
  • 举报
回复
这些都是 Java EE 中的技术。

1:JPA(Java Persistence API, Java 持久化 API)

JPA 是 Java EE 中新增的东西,旨在统一 Java EE 中的 ORM 操作。以替代 EJB 3 之前的 Entity Bean。你可以把 JPA 看作与 Hibernate 是一样的功能。

JPA 的设计并不仅限于在 J2EE 环境中使用,也可以在 Tomcat 等 J2SE 环境中使用,甚至在 main 方法中使用。

JPA 只是一个规范,具体的实现由 Provider 去做。JPA 常用的 Provider 有:Hibernate, Apache OpenJPA, EclipseLink

2:JTA (Java Transaction API, Java 事务 API)

JTA 是 J2EE 中重要的组成部分,旨在处理分布式事务。我们都知道 JDBC 的事务仅适用于单数据库环境中,若要在两个或两个以上的数据库中实现事务,那么 JDBC 的 Connection 就做不了了,比如说:应用需要在 MySQL 数据库中插入一条数据,在 Oracle 中插入一条数据,在另一个 MySQL 库中更新一条数据,这三个操作要么全部成功,要么全部失败,在这种情况下就需要使用 JTA 事务了。

并不是所有的数据库都能支持分布式事务(XA),这需要数据库支持 2-PC(也就是两阶段提交协议),关于两阶段提交协议是怎么工作的,可以看看这帖子中我在 3 楼的回复:

http://topic.csdn.net/u/20100521/11/04b05a96-30e5-4356-9675-72111bfb9df3.html

另外,JTA 只能在 J2EE 容器中使用,因为 JTA 中的 UserTransaction 根据规范是需要从 JNDI 上获得的。J2EE 应用服务器的优劣主要就体现在对于 JTA 的处理能力,一般来说开源的 J2EE 应用服务器在 JTA 上不如商用的 J2EE 应用服务器。

3:JMS(Java Message Service, Java 消息服务)

这又是 J2EE 分布式应用的体现之一。你应该知道生产者-消费者模式吧?对于普通应用来说生产者-消费者是在一个 JVM 中运行的,也就是说在一个应用中的。倘若生产者分布在不同的应用中,甚至生产者可能是 Java 的,也可能是 .NET 的,这样的话,根据线程调度实现的生产者-消费者代码就用不了!

我们把生产者生产的东西称之为消息,而 JMS 的出现就可以适用于这种分布式环境中的消息服务,JMS 规范JMS 的实现商除了必须支持 Java 之外,JMS Provider 也会支持 native 程序,这样就使得生产者可以是不同的客户端程序。生产者将消息往 JMS 队列中放,JMS 消费者从 JMS 队列中取数据。

当然了,这上面说的只是生产者-消费者的 PULL 模式,也就是 JMS 中的 Point-to-Point 模式。在 JMS 中也支持 Pub-Sub 模式,也就是发布-订阅模式,这种模式是 PUSH 模式,也就是像群聊那样,我只要加入了这个群,那群中所产生的消息都会给我 PUSH 过来。使用 JMS 的 Pub-Sub 可以很方便地实现一个群聊系统,呵呵。

常见的 JMS Provider 有:JBoss Messaging, Apache ActiveMQ, IBM WebSphere MQ 等。

上面这些是我对于 JPA, JTA, JMS 的理解,不知道能否看明白 :)
dinghun8leech 2010-12-26
  • 打赏
  • 举报
回复
赞一下敬爱的果子前辈!

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧