学习笔记

本文详细介绍了ORM(Object-Relational Mapping)的概念及其在Java持久层API(JPA)中的应用,探讨了JPA的核心技术,包括元数据映射、API操作和查询语言JPQL。同时,对比了JPA与EJB的差异,以及JPA的实现供应商如Hibernate和Spring。此外,还讲解了面向消息的中间件(MOM)和Java消息服务(JMS)的工作原理及优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ORM

对象关系映射
英语:Object Relational Mapping
持久层框架的实现:

  1. JPA
  2. HIBERNATE
  3. 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系统的基本元素:

  1. 客户端
    客户端发送或接受消息,分为消息生产者和消息消费者
  2. 消息
  3. MOM提供商
    MOM可以存储和转发消息

消息传递和排队技术有以下三个主要特点:

  • 通讯程序可在不同的时间运行:
    程序不在网络上直接相互通话,而是间接地将消息放入消息队列,因为程序间没有直接的联系。所以它们不必同时运行。消息放入适当的队列时,目标程序甚至根本不需要正在运行;即使目标程序在运行,也不意味着要立即处理该消息。
  • 对应用程序的结构没有约束:
    在复杂的应用场合中,通讯程序之间不仅可以是一对一的关系,还可以进行一对多和多对一方式,甚至是上述多种方式的组合。多种通讯方式的构造并没有增加应用程序的复杂性。
  • 程序与网络复杂性相隔离:
    程序将消息放入消息队列或从消息队列中取出消息来进行通讯,与此关联的全部活动,比如维护消息队列、维护程序和队列之间的关系、处理网络的重新启动和在网络中移动消息等是MOM的任务,程序不直接与其它程序通话,并且它们不涉及网络通讯的复杂性。

MOM好处:

  1. 降低系统间通信复杂度:
    只需关心如何和MOM进行消息接受和发送 提高了消息的灵活性,不必阻塞等待。尤其时间无关或并行处理。
  2. 松散耦合:
    a系统变化不影响B系统
  3. 提高系统响应时间:
    例如原来的一套逻辑,完成支付可能涉及先修改订单状态、计算会员积分、通知物流配送几个逻辑才能完成;通过MQ架构设计,就可将紧急重要(需要立刻响应)的业务放到该调用方法中,响应要求不高的使用消息队列,放到MQ队列中,供消费者处理。

MOM坏处:

  1. 缺点之一源自松散耦合本身。在异步系统中,调用方客户端会继续为接收方装入工作,直到处理装入工作所需的资源耗尽且被调用组件发生故障。

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主题:
    一种支持发送消息给多个订阅者的机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_26264237

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值