- 番外:MySQL的一些事务处理
红中马喽
mysql数据库学习笔记开发语言后端
前言因为前天没更新,多补一更,简单介绍一下后端数据库MySQL的事务处理什么是事务处理事务(Transaction):事务是一组SQL语句的执行单元,这些语句被视为一个单独的工作单元。事务的主要目的是保证数据库操作的原子性,即这些操作要么全部执行,要么全部不执行简单来说,事务是用来保证数据库的一致性,完整性的,关于事务处理我们需要提到ACID性A.原子性(Atomicity):事务中的所有操作要么
- MySQL事务深度解析:原理、优化及最佳实践
木木丰
mysqlmysql数据库javawindows
MySQL中的事务(Transaction)是数据库操作的基本单位,它代表着一组逻辑上相互关联的操作,要么全部成功,要么全部失败。这种“要么全做,要么全不做”的特性确保了数据库的完整性和一致性。事务在MySQL中扮演着至关重要的角色,特别是在处理复杂业务逻辑和并发访问时。下面将详细探讨MySQL事务的概念、使用方法、注意事项以及在实际应用中的最佳实践。一、事务的概念事务是一个不可分割的工作逻辑单元
- 2019 CCF 推荐国际学术期刊&会议(计算机体系结构/并行与分布计算/存储系统)
漓艾初
CCF
中国计算机学会推荐国际学术期刊&会议直接去这里找,全部都有https://www.ccf.org.cn/Academic_Evaluation/By_category/计算机体系结构/并行与分布计算/存储系统期刊A类序号刊物简称刊物全称出版社网址1TOCSACMTransactionsonComputerSystemsACMhttp://dblp.uni-trier.de/db/journals/
- seata的实现原理
2401_85327573
架构微服务
Seata是阿里巴巴开源的分布式事务解决方案,旨在为微服务架构提供高性能和易用的分布式事务支持。以下是Seata实现原理的详细说明,使用中文回答:1.总体架构Seata采用客户端-服务端架构,分为三个核心组件:-TransactionCoordinator(TC):事务协调者,服务端,负责全局事务的协调和管理,维护事务状态。-TransactionManager(TM):事务发起者,客户端,负责发
- Seata模式
代码中の快捷键
javaidespringcloud
Seata分布式事务模式终极指南:从原理到实践的全方位解析一、Seata深度剖析1.1Seata架构全景Seata采用三层架构设计,各组件协同工作:TC(TransactionCoordinator)全局事务大脑,负责事务生命周期管理核心功能:全局事务的发起与终止分支事务的注册与状态管理全局锁的分配与释放部署方式:独立服务,支持集群部署TM(TransactionManager)事务发起方,定义事
- 微服务中的分布式事务
未来并未来
微服务分布式架构
简单来说,分布式事务指的是一个事务(Transaction)的操作单元分布在多个相互独立的服务(或系统)上,这些服务可能运行在不同的服务器上,甚至可能使用不同的数据库。这个事务要求所有参与的服务要么都成功执行(提交),要么都失败回滚(中止),从而保证整个业务流程的原子性。在传统的单体应用中,事务通常只涉及一个数据库,可以使用数据库本身提供的事务机制(如ACID属性)来保证数据一致性。但在微服务架构
- mybatis缓存导致的返回结果差异问题
ipx_me
缓存
最近有一个方法返回的结果与预想的不一致。原因:mybatis的一级缓存导致的问题该方法内部重复调用同一个mybatis的方法,因为入参相同触发一级缓存。举个例子:@Transactional//执行查询,结果将被缓存YourObjectobject1=mapper.selectByPrimaryKey(id);//再次执行相同的查询,可能从缓存中获取结果YourObjectobject2=mapp
- MyBatis 的一级缓存导致的数据一致性问题分析
小时候的阳光
javamybatis缓存隔离级别事务
老生常谈的异常问题,这里记录一下,涉及MyBatis的一级缓存和数据库隔离级别目录问题说明问题原因问题解决问题说明下面一段示例的业务逻辑代码:@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)@OverridepublicvoidflushOrderDetail(FlushFormform){//
- SpringBoot多数据源配置详解
墨鸦_Cormorant
#Java持久层springboot后端java
文章目录多数据源核心概念多数据源实现示例多数据源的配置文件以及配置类JPA多数据源配置MyBatis多数据源配置事务管理:跨数据源事务处理单数据源事务多数据源事务挑战事务管理器:DataSourceTransactionManager和JpaTransactionManager多数据源事务使用基于AbstractRoutingDataSource的动态数据源常见问题与解决方案典型问题排查表数据源切
- 【回顾原生JDBC手动管理事务以及两种方式实现Spring编程式事务】
无岸之舟
spring数据库java
文章目录一.关于事务1.事务概念2.事务四个基本特性3.事务的生命周期4.事务的隔离级别5.事务的应用场景二.回顾原生JDBC手动管理事务三.Spring编程式事务1.使用TransactionTemplate进行编程式事务管理2.使用PlatformTransactionManager进行编程式事务管理四.编程式事务的应用场景五.总结一.关于事务1.事务概念事务(Transaction)是数据库
- MySQL 事务实现机制详解
亲爱的非洲野猪
mysql数据库
MySQL事务实现机制详解MySQL通过多种技术协同工作来实现事务的ACID特性(原子性、一致性、隔离性和持久性),以下是其核心实现机制:一、事务基础架构1.事务支持引擎InnoDB:MySQL默认支持事务的存储引擎NDBCluster:集群环境的事务支持其他引擎:如MyISAM不支持事务2.事务基本操作STARTTRANSACTION;--或BEGIN--执行SQL语句INSERTINTOacc
- Spring声明式事务生效是有条件滴!
弥野月亮
spring数据库java
在日常工作中,经常使用@Transactional注解进行事务的声明,但如果发现事务未生效,可以从下面几个方面进行排查。常见失效场景总结场景原因解决方案内部方法调用绕过了Spring代理注入自身或使用AopContextprivate方法AOP无法增强改为public方法final方法/类无法被代理移除final修饰符非Spring管理不是代理对象确保Bean由Spring管理异常被捕获异常未抛出
- SqlServer的with(nolock)关键字的用法介绍
穷得响叮当
SqlServersqlserver数据库sql
举个例子下面就来演示这个情况。为了演示两个事务死锁的情况,我们下面的测试都需要在SQLServerManagementStudio中打开两个查询窗口。保证事务不被干扰。--1、没有提交的事务,NOLOCK和READPAST处理的策略:--查询窗口一请执行如下脚本:CREATETABLEt1(c1intIDENTITY(1,1),c2int)goBEGINTRANSACTIONinsertt1(c2
- HoRain云--区块链:透明交易的终极指南
HoRain 云小助手
区块链
HoRain云小助手:个人主页⛺️生活的理想,就是为了理想的生活!⛳️推荐前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。目录⛳️推荐1.分布式账本(公开账本)2.交易链式结构(TransactionChain)3.交易哈希与唯一标识4.透明地址系统5.智能合约透明执行6.时间戳与区块高度应用场景示例①金融透明度②供应链溯源③司法存证透明性与隐
- 《数据密集型应用系统设计》读书笔记:第七章
忍者算法
数据密集型应用系统设计系统架构
我们进入《DDIA》第7章:事务(Transactions)。这是全书中最核心的一章之一,也是理解数据库和分布式系统一致性保障机制的关键。第7章:事务(Transactions)一、事务的基本定义一个事务就是一组操作的组合,这些操作要么全部成功,要么全部失败,系统状态不会处于“中间状态”。Martin用这个模型描述事务特性:ACIDACID四大特性:特性含义解释A-原子性(Atomicity)要么
- AXI (Transaction Attributes)
Jay丶ke
AMBA协议verilogfpga开发
目录:AXI(TransactionAttributes)1.事务类型与属性:2.存储相关属性信号:3.存储类型:AXI(TransactionAttributes)1.事务类型与属性:现代计算机架构中,对memory的读写有若干种优化,prefetch,cache,writebuffer。同时,对host来说,一些其他的外部设备的寄存器或者外部设备的内存也会被映射到host端的地址上。这部分地址
- 事务传播机制分析:用户注册场景分析
我爱Jack
java数据库开发语言
一、场景概述想象一个用户注册流程:保存用户基本信息(核心操作)初始化用户账户(重要但可独立失败)发送欢迎邮件(非关键操作)二、代码事务传播分析1.主事务:用户注册(REQUIRED)@Transactional(propagation=Propagation.REQUIRED)publicvoidregister(Useruser){//保存用户(主事务操作)userDao.save(user);
- 深入解析Seata:分布式事务的终极解决方案
豪宇刘
架构分布式微服务
一、分布式事务的挑战与Seata的定位在微服务架构中,业务操作通常涉及多个服务的数据变更。例如电商下单场景需要调用订单服务、库存服务和支付服务,如何保证这些跨服务的操作要么全部成功,要么全部回滚,是分布式事务的核心挑战。传统解决方案(如两阶段提交2PC)存在性能低下、侵入性强等问题,而Seata(SimpleExtensibleAutonomousTransactionArchitecture)作
- java 事务注解的运用浅谈
mall_0905
java数据库开发语言后端
一、介绍在Java中,管理数据库事务通常涉及到使用JDBC或者更高级别的持久化框架,如Hibernate或SpringDataJPA。在这些环境中,事务的管理可以通过几种不同的注解实现。以下是几种常用的注解和它们的使用场景:SpringFramework的@Transactional注解SpringFramework提供了一个非常强大的事务管理功能,其中@Transactional注解是最常用的方
- Java 与 MySQL 性能优化:Linux服务器上MySQL性能指标解读与监控方法
程序员岳彬
Java运维手册服务器javamysql后端性能优化linux
文章目录一、关键性能指标解读1.QPS(QueriesPerSecond)2.TPS(TransactionsPerSecond)3.缓存命中率二、性能监控方法1.使用SHOWSTATUS命令进行监控2.使用Prometheus+Grafana进行监控(1)安装和配置Prometheus(2)安装和配置MySQLExporter(3)安装和配置Grafana(4)创建监控仪表盘三、总结在数据库的日
- Multi-tenant applications using Spring Boot, JPA, Hibernate and Postgres
未来AI编程
springCloud
Revision#1onMay9th,2018:Saveoperationswerefailing,addedsupportforActorinstancestobeupdatedviaaPATCHendpoint.UpdatedTransactionManagersection.Revision#2onMar25th,2019:ExcludedDataSourceTransactionManag
- MySQL存储过程,循环添加数据
Huathy-雨落江南,浮生若梦
数据库mysql数据库
在MySQL中如何循环的添加10000条数据这里使用存储过程来创建#创建存储过程createprocedurepr()begin#声明变量ideclareiintdefault0;#开始处理starttransaction;whilei<10000doinsertintostudent(id,`password`,`name`,sex,age)values(i,'a','a','男',18);se
- JPA Hibernate直接执行sql 转换成dto AliasToEntityMapResultTransformer
有答案直接发给我
hibernatesql
前言公司中有一个老的项目使用了JPA+Hibernate框架,在接触了这个项目之后我的感受就是异常难用(o(╥﹏╥)o),相对于目前主流使用的Mybatis框架,在使用这种框架的项目中查询数据库有以下几种方式:使用JpaRepository映射实体类和表。@Repository@Transactional(rollbackFor=Exception.class)publicinterfaceOrd
- 总结一下最近关于domain object以及相关的讨论
本文转于javaeye.第一种模型(贫血的domainobject)在最近的围绕domainobject的讨论中浮现出来了三种模型,(还有一些其他的旁枝,不一一分析了),经过一番讨论,各种问题逐渐清晰起来,在这里我试图做一个总结,便于大家了解和掌握。第一种模型:只有getter/setter方法的纯数据类,所有的业务逻辑完全由businessobject来完成(又称TransactionScrip
- PostgreSQL事务为什么会出现”WARNING there is no transaction in progress”的警告
秦时明月之君临天下
PostgreSQLpostgresql数据库
文章目录什么是PostgreSQL事务?事务的开始和提交PostgreSQL事务警告忘记开始事务事务异常中断如何解决警告信息使用BEGIN和COMMIT关键字添加异常处理机制总结在本文中,我们将介绍为什么在某些情况下使用PostgreSQL事务时会出现警告信息”WARNING:thereisnotransactioninprogress”,以及如何解决这个问题。阅读更多:PostgreSQL教程什
- 一文读懂数据库的四种事务隔离级别(含原理 + 实例 + 优缺点)
Mylvzi
数据库
一文读懂数据库的四种事务隔离级别(含原理+实例+优缺点)在并发环境下操作数据库时,事务隔离性(Isolation)是保证数据正确性的重要手段。数据库通过设置“隔离级别”来控制不同事务之间的可见性,防止出现数据不一致的问题。本篇文章将带你系统掌握:四种隔离级别的含义各自能解决哪些并发问题优缺点对比与适用场景MySQL&Oracle中的实现方式什么是事务隔离级别?事务(Transaction)有四大特
- oracle授权v$lock,通过v$lock和v$locked和v$session 察看oracle锁情况
星火英语
oracle授权v$lock
columnsidformat999;columnbformat9;columnobject_nameformata30;selectv$lock.sid,decode(v$lock.type,'MR','MediaRecovery','RT','RedoThread','UN','UserName','TX','Transaction','TM','DML','UL','PL/SQLUserLo
- 有关Spring事务的传播机制
这是一个非常常见的关于Spring事务传播机制的问题,核心问题是:在同一个类中,方法A调用方法B,而方法B上有@Transactional注解。当调用方法A时,如果发生异常,方法B的事务会生效吗?✅简短回答:示例代码说明@ServicepublicclassMyService{publicvoidmethodA(){//做一些操作methodB();//内部调用methodB}@Transacti
- MySQL面试必问的5个核心问题(附实战解析)
文章目录一、事务的ACID特性到底是啥??二、索引怎么用才能起飞??三、慢查询怎么破??四、锁机制有多重要??五、三大日志怎么选??六、总结与建议一、事务的ACID特性到底是啥??这个问题绝对稳居面试问题排行榜TOP1!!!(重要程度五颗星)很多同学背得滚瓜烂熟,但一被追问就露馅。咱们先看这个经典场景:--转账操作示例STARTTRANSACTION;UPDATEaccountSETbalance
- spring如何处理bean的循环依赖
明月惊雀
spring相关springjava后端
假设在spring中beanA依赖beanB,beanB依赖beanA,这种循环依赖的情况通常会使用三级缓存的方式进行处理。什么是三级缓存一级缓存:存储的是已经实例化完成的bean实例。二级缓存:存放在这里的是提前暴露的bean半成品。若Bean需AOP代理(如@Async、@Transactional),三级缓存的ObjectFactory会提前生成代理对象并存入二级缓存,避免重复创建代理。三级
- 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独立出来,数据持