ORM
对象关系映射
英语:Object Relational Mapping
持久层框架的实现:
- JPA
- HIBERNATE
- IBATIS/MYBATIS
JPA
Java持久层API
英文:Java Persistence API
JPA包括以下3方面的技术:
ORM映射元数据 JPA支持XML和JDK5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中;
API 用来操作实体对象,执行CRUD操作,框架在后台替代我们完成所有的事情,开发者从繁琐的JDBC和SQL代码中解脱出来。
查询语言 这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。
JPA 只是一个API,他需要供应商来实现:
- Hibernate
- Spring
- OpenJPA
EJB
Java 企业Bean
英文:Enterprise JavaBean
核心代码:
- Session Bean/会话bean
- Entity Bean/实体bean
在EJB3.0推出以后,实体Bean被单独分了出来,形成了新的规范JPA。 - MessageDriven Bean/消息驱动bean
JPQL
Java持久化查询语言
英文:Java Persistence Query Language
MOM
面向消息的中间件
英文:Message Oriented Middleware
一个MOM系统的基本元素:
- 客户端
客户端发送或接受消息,分为消息生产者和消息消费者- 消息
- MOM提供商
MOM可以存储和转发消息
消息传递和排队技术有以下三个主要特点:
- 通讯程序可在不同的时间运行:
程序不在网络上直接相互通话,而是间接地将消息放入消息队列,因为程序间没有直接的联系。所以它们不必同时运行。消息放入适当的队列时,目标程序甚至根本不需要正在运行;即使目标程序在运行,也不意味着要立即处理该消息。- 对应用程序的结构没有约束:
在复杂的应用场合中,通讯程序之间不仅可以是一对一的关系,还可以进行一对多和多对一方式,甚至是上述多种方式的组合。多种通讯方式的构造并没有增加应用程序的复杂性。- 程序与网络复杂性相隔离:
程序将消息放入消息队列或从消息队列中取出消息来进行通讯,与此关联的全部活动,比如维护消息队列、维护程序和队列之间的关系、处理网络的重新启动和在网络中移动消息等是MOM的任务,程序不直接与其它程序通话,并且它们不涉及网络通讯的复杂性。
MOM好处:
- 降低系统间通信复杂度:
只需关心如何和MOM进行消息接受和发送 提高了消息的灵活性,不必阻塞等待。尤其时间无关或并行处理。- 松散耦合:
a系统变化不影响B系统- 提高系统响应时间:
例如原来的一套逻辑,完成支付可能涉及先修改订单状态、计算会员积分、通知物流配送几个逻辑才能完成;通过MQ架构设计,就可将紧急重要(需要立刻响应)的业务放到该调用方法中,响应要求不高的使用消息队列,放到MQ队列中,供消费者处理。MOM坏处:
- 缺点之一源自松散耦合本身。在异步系统中,调用方客户端会继续为接收方装入工作,直到处理装入工作所需的资源耗尽且被调用组件发生故障。
JMS
Java消息服务
英文:Java Message Service
JMS是一个Java平台中关于面向消息中间件(MOM)的API
JMS由以下元素组成:
- JMS提供者:
常见的有:RocketMQ,RabbitMQ,ActiveMQ,Redis,Kafka,ZeroMQ- JMS客户:
生产或消费基于消息的Java的应用程序或对象。- JMS生产者:
创建并发送消息的JMS客户。- JMS消费者:
接收消息的JMS客户。- JMS消息:
包括可以在JMS客户之间传递的数据的对象。- JMS队列:
一个容纳那些被发送的等待阅读的消息的区域。与队列名字所暗示的意思不同,消息的接受顺序并不一定要与消息的发送顺序相同。一旦一个消息被阅读,该消息将被从队列中移走。- JMS主题:
一种支持发送消息给多个订阅者的机制。