- 聊聊artemis消息的推拉模式
go4it
序本文主要研究一下artemis消息的推拉模式拉模式receiveactivemq-artemis-2.11.0/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessageConsumer.javapublicfinalclassActiveMQMessageConsumerimpl
- JMS 的消息可靠性机制
追梦@Java
java开发语言
消息传输在两个环节上进行:第一个环节是生产者发送消息到队列;第二个环节是消费者从队列获得消息。因此,在下面的三个阶段可能会使消息丢失:在生产者发送消息到代理的时候;当代理发生故障时在代理内存中的时候;在消费者从代理节点获取消息的时候;由于当代理发生故障时非持久性消息总是会丢失,因此可靠传输仅适用于持久性消息。可靠传递机制可保证传输过程在上述任一阶段都不会失败。消息的可靠性传递使用了两种机制来确保可
- 1. ActiveMQ的生产者,消费者事务
水无痕simon
java-activemqactivemqjava
activemq的基本的消息发送操作:packagecom.paic.mq;importorg.apache.activemq.ActiveMQConnectionFactory;importjavax.jms.*;/***发送Activemq消息队列*/publicclassProducer{privatestaticfinalStringURL="tcp://127.0.0.1:61616";
- 收集网上关于ActiveMQ ,JMS 的入门知识
leisure55
Javajmsactivemqsessionfunctionstringapplication
(注:本文内容来自互联网,大部分内容引用于http://whitesock.javaeye.com/,自己整理以作学习用)JMS基础概念强烈推荐参考:jms规范http://cds-esd.sun.com/ESD4/JSCDL/jms/1.1-fr/jms-1_1-fr-spec.pdf?AuthParam=1251941497_cd0bdf66dcfd87835d5a7b024d2b7ae1&T
- ActiveMQ生产者详解
iteye_11587
ActiveMQactivemq
JMS(ActiveMQ)PTP和PUB/SUB模式实例:[url]http://donald-draper.iteye.com/blog/2347445[/url]ActiveMQ连接工厂、连接详解:[url]http://donald-draper.iteye.com/blog/2348070[/url]ActiveMQ会话初始化:[url]http://donald-draper.iteye
- 消息中间件概述
小孩真笨
什么是JMSJava消息服务(JavaMessageService)即JMS,是一个Java平台中关于面向消息中间件的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。常用的消息中间件综述组件\特点ActiveMQRabbitMQKafka跨语言支持(Java优先)语言无关支持(Java优先)支持协议OpenWire,Stomp,XMPP,AMQPAMQP-优点遵循JMS规范,
- 笔记二十二:Kafka基础
转通下水道的粉色钻头
笔记kafka分布式
消息队列简称为MQ,指的就是数据在一个容器中,从容器一端传递到另一端的操作消息队列,只能暂存数据,不能永久存储数据作用:1)应用解耦合2)异步处理3)限流削峰消息队列的协议:JMS(JavaMessageServer)角色:生产者(Producer)消费者(Consumer)消费模型:#1.点对点消费模型指的一条消息最终只能被一个消费者所消费#2.发布订阅消费模型指的一条消息最终被多个消费者所消费
- JMS 原理
LynnGuo
为什么需要JMS用RPC中间件技术已广泛应用于分布式系统之间的通信,但是这些技术也显示出了局限性:同步通信:客户发出调用后,必须等待服务对象完成处理并返回结果后才能继续执行客户和服务对象的生命周期紧密耦合,客户端进程和服务端进程都必须正常运行,如果由于服务对象崩溃或者网络故障导致客户的请求不可达,客户会接收到异常。点对点通信:客户的一次调用只发送给某个单独的目标对象。面向消息的中间件较好的解决了以
- 消息队列RabbitMQ入门与使用
sklit88
Javajava-rabbitmqrabbitmqjava
目录一、消息中间件概述1.1、为什么学习消息队列1.2、什么是消息队列1.3、应用场景1.3.1、QPS/PV1.3.2、什么是PV,UV,PR1.4、AMQP和JMS1.4.1、AMQP1.4.2、JMS二、RabbitMQ简介及安装2.1、RabbitMQ简介2.2、安装及配置2.2.1、下载2.2.2、安装2.2.3、卸载2.3、管理界面三、AMQP3.1、相关概念3.2、RabbitMQ运
- 架构 高并发框架
请叫我刘星
数据库分布式springcloudspringjvmspringboot
一、Disruptor是什么Disruptor是一个开源的并发框架,能够在无锁的情况下实现网络的Queue并发操作。Disruptor是一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量级JMS),也可以认为是一个观察者模式的实现,或者事件监听模式的实现。二、Disruptor核心概念RingBuffer:被看做Disruptor最主要组件,然而从3.0开始RingBuffer仅仅负责存
- 深入浅出JMS ActiveMQ
liky5387
java
深入浅出JMS(一)--JMS基本概念摘要:TheJavaMessageService(JMS)APIisamessagingstandardthatallowsapplicationcomponentsbasedontheJavaPlatformEnterpriseEdition(JavaEE)tocreate,send,receive,andreadmessages.Itenablesdist
- java中间件之rabbitmq
这一刻_776b
一、RabbitMQ简介1.1RabbitMQ是什么RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。1.2RabbitMQ特点(1)可靠性(Reliab
- RabbitMQ
~Maple~
RabbitMQ队列rabbitmq消息队列
RabbitMQ一、主流消息中间件介绍一、ActiveMQActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线,并且他是一个完全支持JMS规范的消息中间件。七丰富的API,多种集群构建模式使得他称为业界老牌消息中间件,在中小型企业广泛应用!MQ衡量指标:服务性能、数据存储、集群架构二、KafkaKafka是LinkedIn开源的分布式发布-订阅消息系统,目前归属于Apache顶级项
- RabbitMQ详解以及spring对RabbitMQ的集成(附带部分源码解读)
HAKUNA·MATATA
RabbitMQ
一·简介1丶为什么要使用消息队列https://wenku.baidu.com/view/e297236f83c4bb4cf7ecd193.html①异步处理(高并发)②系统解耦③流量削锋2丶为什么使用RabbitMQ①给予AMQP协议②高并发③高可用④强大的社区支持,以及很多公司都在使用⑤高性能⑥支持插件(监控管理界面的插件,安装插件支持jms)⑦支持多语言(PHP,Python,.net)3丶
- 2.7日学习打卡----初学RabbitMQ(二)
中北萌新程序员
每日学习学习rabbitmq分布式
2.7日学习打卡JMS由于MQ产品很多,操作方式各有不同,于是JAVA提供了一套规则——JMS,用于操作消息中间件。JMS即Java消息服务(JavaMessageService)应用程序接口,是一个Java平台中关于面向消息中间件的API。JMS是JavaEE规范中的一种,类比JDBC。很多MQ产品都实现了JMS规范,例如ActiveMQ。RabbitMQ官方并没有实现JMS规范,但是开源社区有
- activeMQ和spring的整合
Java大生
今天分享的是activemq框架和spring框架的整合使用。(1)导入activemq的核心jar包和整合spring需要的两个jar包context-support和jms.jar(使用spring的版本是4.2.7activemq的版本是5.11.2)4.2.4.RELEASE5.11.2org.springframeworkspring-jmsorg.springframeworkspri
- 玩转RabbitMq
dreamer_0137
从消息组件来分类(两类):1.JMS组件:ActiveMq(慢)2.AMQP组件:协议组件(性能高):两个主要的开源项目|-RabbitMq==>速度快(十年加的一款产品)|-Kafka==>大数据时代产物,明日之星消息系统组成成分:一般由生产者,消费者,消息组件|-消息组件数据缓冲队列但在RabbitMq中,消息组件有点区别的|-Exchange交换空间负责管理所有队列|-Queue数据队列|-
- jumpserver启动时遇到的问题及解决方法
GUlGA
centosdocker
ERROR:forjms_kokoCannotstartservicekoko:driverfailedprogramming报错信息jms_mysqlisup-to-datejms_redisisup-to-dateCreatingjms_core...doneCreatingjms_guacamole...Creatingjms_celery...Creatingjms_koko...Crea
- JBoss 4.x JBossMQ JMS 反序列化漏洞(CVE-2017-7504)
二潘
RedHatJBossApplicationServer是一款基于JavaEE的开源应用服务器。JBossAS4.x及之前版本中,JbossMQ实现过程的JMSoverHTTPInvocationLayer的HTTPServerILServlet.java文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。参考:https://github.com/joaomatosf/
- Android 网络数据解析架构设计 拦截器里面修改服务器返回的数据
奋斗威威
Interceptorandroidokhttp
1.加密数据格式{"head":{"rtnMsg":"本次请求成功!","rtnCode":"000000"},"totalRecords":1,"body":"r6ByxJarAIJ+3M6u3hEyiMt4MZPAG6D93y2ea8YaorYuGjxJMSxrjAJit969yiY/Sc/imtIu8NgAiKkCT21tBJ5JqL3fe+6B51nbZ9mWwoUTFsQLfqt7j4o
- Python学习笔记--CNN实例/RNN/LSTM
花季秃头少女
python入门笔记pythonrnn学习
cnnlenet5编程实例#!usr/bin/envpython#-*-coding:utf-8_*-"""@author:JMS@file:EXAMPLE_CNN.py@time:2022/08/14@desc:"""importtorch##一次加载多个fromtorch.utils.dataimportDataLoaderfromtorchvisionimportdatasetsfromto
- Restemplate详解
十斗鱼
1Restemplate简介:1.1RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate类的设计原则与许多其他Spring*模板类(例如JdbcTemplate、JmsTemplate)相同,2RestTemplate包含以下几个部分:2.1HttpMessageConverter对象转换器RestTemplate默认使用HttpMessageConv
- Docker学习之搭建ActiveMQ消息服务
Java大生
前言ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ是一个完全支持JMS1.1和J2EE1.4规范的JMSProvider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。在生产项目中,很多时候需要消息中间件来进行分布式系统间的通信。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能。本篇主要介绍A
- java ee面试题专家总结(必看),Java EE面试题专家总结(必看)
FromNowToNow
javaee面试题专家总结(必看)
JavaEE面试题第一部分:Servlet/JSP快速入门1.请列举至少6种javaEE技术,并简述其作用。解析:javaEE是一系列的技术,主要包扩13种。对于开发人员来说,了解几种主要的技术是非常必要的,例如JDBC、JSP、Servlet、XML、JNDI、JMS、JTA等。参考答案:(1)JDBC(JavaDatabaseConnectivity):用来访问数据库的API。(2)JavaS
- vulhub靶机activemq环境下的CVE-2015-5254(ActiveMQ 反序列化漏洞)
himobrinehacken
vulhubactivemqweb安全网络安全网络攻击模型
影响范围ApacheActiveMQ5.x~ApacheActiveMQ5.13.0远程攻击者可以制作一个特殊的序列化Java消息服务(JMS)ObjectMessage对象,利用该漏洞执行任意代码。漏洞搭建没有特殊要求,请看(3条消息)vulhub搭建方法_himobrinehacken的博客-CSDN博客漏洞利用服务端口是8161默认密码adminnmap扫描具体细节kali自带的search
- Spring Cloud构建微服务架构:JMeter 功能概览
yueerba126
SpringCloud架构springcloud微服务
JMeter简介ApacheJMeter是一款强大的开源测试工具,基于Java开发。它最初被设计来对Web应用进行性能测试,但随着时间的发展,其功能已经扩展到了测试数据库、FTP、SMTP、SOAP服务等多种服务和应用。中文文档:https://jmeter.net/JMeter概述多协议支持:能够处理包括HTTP,HTTPS,JDBC,LDAP,JMS,FTP等多种通信协议。可扩展性:JMete
- 漏洞分析|Apache ActiveMQ RCE漏洞复现(CNVD-2023-69477)
AttackSatelliteLab
apacheactivemq
1.漏洞描述ActiveMQ是一个开源的消息代理和集成模式服务器,它支持Java消息服务(JMS)API。它是ApacheSoftwareFoundation下的一个项目,用于实现消息中间件,帮助不同的应用程序或系统之间进行通信。ApacheActiveMQ中存在远程代码执行漏洞,ApacheActiveMQ在默认安装下开放了61616服务端口,而该端口并没有对传入数据进行适当的过滤,从而使攻击者
- JMeter压测常见面试问题
咖啡加剁椒.
软件测试jmeter面试职场和发展自动化测试软件测试功能测试程序人生
1、JMeter可以模拟哪些类型的负载?JMeter可以模拟各种类型的负载,包括但不限于Web应用程序、API、数据库、FTP、SMTP、JMS、SOAP/RESTfulWeb服务等。这使得JMeter成为一个功能强大且灵活的压力测试工具。2、如何配置JMeter来进行分布式压力测试?要进行分布式压力测试,需要设置一个主控节点和多个被控节点。在主控节点上,需要打开“RemoteStart”功能并指
- composer安装hyperf后,nginx配置hyperf
摩尔小哥
composernginxphp
背景引入hyperf项目用作微服务,使用composer安装hyperf后,对hyperf进行nginx配置。配置步骤因为hyperf监听的是端口,不像其他laravel、lumen直接指向文件即可。所有要监听端口号。1配置nginxserver{listen80;//http:80https:443根据你自己需要配置server_namejms.51about.com;//此处域名根据你配置的域
- 消息中间件及java线程池
我但行好事莫问前程
javakafka
1.ActiveMQ是什么?ApacheActiveMQ是一个开源的消息中间件(MessageOrientedMiddleware,MOM),它遵循Java消息服务(JavaMessageService,JMS)规范,提供高效、可靠和异步的消息传递功能。ActiveMQ作为消息代理服务器,允许分布式系统中的不同组件通过发送和接收消息进行通信,而不必直接相互依赖或等待对方响应。ActiveMQ支持多
- PHP,安卓,UI,java,linux视频教程合集
cocos2d-x小菜
javaUIPHPandroidlinux
╔-----------------------------------╗┆
- 各表中的列名必须唯一。在表 'dbo.XXX' 中多次指定了列名 'XXX'。
bozch
.net.net mvc
在.net mvc5中,在执行某一操作的时候,出现了如下错误:
各表中的列名必须唯一。在表 'dbo.XXX' 中多次指定了列名 'XXX'。
经查询当前的操作与错误内容无关,经过对错误信息的排查发现,事故出现在数据库迁移上。
回想过去: 在迁移之前已经对数据库进行了添加字段操作,再次进行迁移插入XXX字段的时候,就会提示如上错误。
&
- Java 对象大小的计算
e200702084
java
Java对象的大小
如何计算一个对象的大小呢?
 
- Mybatis Spring
171815164
mybatis
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
CustomerService userService = (CustomerService) ac.getBean("customerService");
Customer cust
- JVM 不稳定参数
g21121
jvm
-XX 参数被称为不稳定参数,之所以这么叫是因为此类参数的设置很容易引起JVM 性能上的差异,使JVM 存在极大的不稳定性。当然这是在非合理设置的前提下,如果此类参数设置合理讲大大提高JVM 的性能及稳定性。 可以说“不稳定参数”
- 用户自动登录网站
永夜-极光
用户
1.目标:实现用户登录后,再次登录就自动登录,无需用户名和密码
2.思路:将用户的信息保存为cookie
每次用户访问网站,通过filter拦截所有请求,在filter中读取所有的cookie,如果找到了保存登录信息的cookie,那么在cookie中读取登录信息,然后直接
- centos7 安装后失去win7的引导记录
程序员是怎么炼成的
操作系统
1.使用root身份(必须)打开 /boot/grub2/grub.cfg 2.找到 ### BEGIN /etc/grub.d/30_os-prober ### 在后面添加 menuentry "Windows 7 (loader) (on /dev/sda1)" { 
- Oracle 10g 官方中文安装帮助文档以及Oracle官方中文教程文档下载
aijuans
oracle
Oracle 10g 官方中文安装帮助文档下载:http://download.csdn.net/tag/Oracle%E4%B8%AD%E6%96%87API%EF%BC%8COracle%E4%B8%AD%E6%96%87%E6%96%87%E6%A1%A3%EF%BC%8Coracle%E5%AD%A6%E4%B9%A0%E6%96%87%E6%A1%A3 Oracle 10g 官方中文教程
- JavaEE开源快速开发平台G4Studio_V3.2发布了
無為子
AOPoraclemysqljavaeeG4Studio
我非常高兴地宣布,今天我们最新的JavaEE开源快速开发平台G4Studio_V3.2版本已经正式发布。大家可以通过如下地址下载。
访问G4Studio网站
http://www.g4it.org
G4Studio_V3.2版本变更日志
功能新增
(1).新增了系统右下角滑出提示窗口功能。
(2).新增了文件资源的Zip压缩和解压缩
- Oracle常用的单行函数应用技巧总结
百合不是茶
日期函数转换函数(核心)数字函数通用函数(核心)字符函数
单行函数; 字符函数,数字函数,日期函数,转换函数(核心),通用函数(核心)
一:字符函数:
.UPPER(字符串) 将字符串转为大写
.LOWER (字符串) 将字符串转为小写
.INITCAP(字符串) 将首字母大写
.LENGTH (字符串) 字符串的长度
.REPLACE(字符串,'A','_') 将字符串字符A转换成_
- Mockito异常测试实例
bijian1013
java单元测试mockito
Mockito异常测试实例:
package com.bijian.study;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.junit.Assert;
import org.junit.Test;
import org.mockito.
- GA与量子恒道统计
Bill_chen
JavaScript浏览器百度Google防火墙
前一阵子,统计**网址时,Google Analytics(GA) 和量子恒道统计(也称量子统计),数据有较大的偏差,仔细找相关资料研究了下,总结如下:
为何GA和量子网站统计(量子统计前身为雅虎统计)结果不同?
首先:没有一种网站统计工具能保证百分之百的准确出现该问题可能有以下几个原因:(1)不同的统计分析系统的算法机制不同;(2)统计代码放置的位置和前后
- 【Linux命令三】Top命令
bit1129
linux命令
Linux的Top命令类似于Windows的任务管理器,可以查看当前系统的运行情况,包括CPU、内存的使用情况等。如下是一个Top命令的执行结果:
top - 21:22:04 up 1 day, 23:49, 1 user, load average: 1.10, 1.66, 1.99
Tasks: 202 total, 4 running, 198 sl
- spring四种依赖注入方式
白糖_
spring
平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。依赖注入的另一种说法是“控制反转”,通俗的理解是:平常我们new一个实例,这个实例的控制权是我
- angular.injector
boyitech
AngularJSAngularJS API
angular.injector
描述: 创建一个injector对象, 调用injector对象的方法可以获得angular的service, 或者用来做依赖注入. 使用方法: angular.injector(modules, [strictDi]) 参数详解: Param Type Details mod
- java-同步访问一个数组Integer[10],生产者不断地往数组放入整数1000,数组满时等待;消费者不断地将数组里面的数置零,数组空时等待
bylijinnan
Integer
public class PC {
/**
* 题目:生产者-消费者。
* 同步访问一个数组Integer[10],生产者不断地往数组放入整数1000,数组满时等待;消费者不断地将数组里面的数置零,数组空时等待。
*/
private static final Integer[] val=new Integer[10];
private static
- 使用Struts2.2.1配置
Chen.H
apachespringWebxmlstruts
Struts2.2.1 需要如下 jar包: commons-fileupload-1.2.1.jar commons-io-1.3.2.jar commons-logging-1.0.4.jar freemarker-2.3.16.jar javassist-3.7.ga.jar ognl-3.0.jar spring.jar
struts2-core-2.2.1.jar struts2-sp
- [职业与教育]青春之歌
comsci
教育
每个人都有自己的青春之歌............但是我要说的却不是青春...
大家如果在自己的职业生涯没有给自己以后创业留一点点机会,仅仅凭学历和人脉关系,是难以在竞争激烈的市场中生存下去的....
&nbs
- oracle连接(join)中使用using关键字
daizj
JOINoraclesqlusing
在oracle连接(join)中使用using关键字
34. View the Exhibit and examine the structure of the ORDERS and ORDER_ITEMS tables.
Evaluate the following SQL statement:
SELECT oi.order_id, product_id, order_date
FRO
- NIO示例
daysinsun
nio
NIO服务端代码:
public class NIOServer {
private Selector selector;
public void startServer(int port) throws IOException {
ServerSocketChannel serverChannel = ServerSocketChannel.open(
- C语言学习homework1
dcj3sjt126com
chomework
0、 课堂练习做完
1、使用sizeof计算出你所知道的所有的类型占用的空间。
int x;
sizeof(x);
sizeof(int);
# include <stdio.h>
int main(void)
{
int x1;
char x2;
double x3;
float x4;
printf(&quo
- select in order by , mysql排序
dcj3sjt126com
mysql
If i select like this:
SELECT id FROM users WHERE id IN(3,4,8,1);
This by default will select users in this order
1,3,4,8,
I would like to select them in the same order that i put IN() values so:
- 页面校验-新建项目
fanxiaolong
页面校验
$(document).ready(
function() {
var flag = true;
$('#changeform').submit(function() {
var projectScValNull = true;
var s ="";
var parent_id = $("#parent_id").v
- Ehcache(02)——ehcache.xml简介
234390216
ehcacheehcache.xml简介
ehcache.xml简介
ehcache.xml文件是用来定义Ehcache的配置信息的,更准确的来说它是定义CacheManager的配置信息的。根据之前我们在《Ehcache简介》一文中对CacheManager的介绍我们知道一切Ehcache的应用都是从CacheManager开始的。在不指定配置信
- junit 4.11中三个新功能
jackyrong
java
junit 4.11中两个新增的功能,首先是注解中可以参数化,比如
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runn
- 国外程序员爱用苹果Mac电脑的10大理由
php教程分享
windowsPHPunixMicrosoftperl
Mac 在国外很受欢迎,尤其是在 设计/web开发/IT 人员圈子里。普通用户喜欢 Mac 可以理解,毕竟 Mac 设计美观,简单好用,没有病毒。那么为什么专业人士也对 Mac 情有独钟呢?从个人使用经验来看我想有下面几个原因:
1、Mac OS X 是基于 Unix 的
这一点太重要了,尤其是对开发人员,至少对于我来说很重要,这意味着Unix 下一堆好用的工具都可以随手捡到。如果你是个 wi
- 位运算、异或的实际应用
wenjinglian
位运算
一. 位操作基础,用一张表描述位操作符的应用规则并详细解释。
二. 常用位操作小技巧,有判断奇偶、交换两数、变换符号、求绝对值。
三. 位操作与空间压缩,针对筛素数进行空间压缩。
&n
- weblogic部署项目出现的一些问题(持续补充中……)
Everyday都不同
weblogic部署失败
好吧,weblogic的问题确实……
问题一:
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: URL [zip:E:/weblogic/user_projects/domains/base_domain/serve
- tomcat7性能调优(01)
toknowme
tomcat7
Tomcat优化: 1、最大连接数最大线程等设置
<Connector port="8082" protocol="HTTP/1.1"
useBodyEncodingForURI="t
- PO VO DAO DTO BO TO概念与区别
xp9802
javaDAO设计模式bean领域模型
O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写。通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据。在O/R Mapping的世界里,有两个基本的也是重要的东东需要了解,即VO,PO。
它们的关系应该是相互独立的,一个VO可以只是PO的部分,也可以是多个PO构成,同样也可以等同于一个PO(指的是他们的属性)。这样,PO独立出来,数据持