- Lombok:Java开发者的代码简化神器【后端 17】
终末圆
Java后端java开发语言mysql数据库后端springbootpython
Lombok:Java开发者的代码简化神器在Java开发中,我们经常需要编写大量的样板代码,如getter、setter、equals、hashCode、toString等方法。这些代码虽然基础且必要,但往往占据了大量开发时间,且容易在属性变更时引发错误。幸运的是,Lombok这个Java库通过注解的方式,为我们提供了一种高效的解决方案。本文将详细介绍Lombok的使用及其优势。什么是Lombok
- synchronized锁升级过程
liang8999
javajvm开发语言
一、synchronized锁加到什么地方synchronized上锁,其实锁信息是加在对象头中的markdown,对象中的前四个字节表示markdown;markdown还记录了对象的gc、hashcode信息注意:markdown结构与jvm虚拟机的实现有关,I)32位Hotspot虚拟机markdown结构如下:II)64位Hotspot虚拟机的markdown结构如下:二、synchron
- 互联网 Java 工程师面试题(Java 面试题四)
苹果酱0567
面试题汇总与解析java中间件开发语言springboot后端
下面列出这份Java面试问题列表包含的主题多线程,并发及线程基础数据类型转换的基本原则垃圾回收(GC)Java集合框架数组字符串GOF设计模式SOLID抽象类与接口Java基础,如equals和hashcode泛型与枚举JavaIO与NIO常用网络协议Java中的数据结构和算法正则表达式JVM底层Java最佳实JDBCDate,Time与CalendarJava处理XMLJUnit编程现在是时候给
- Java后端面试高频问题:HashMap的底层原理
2401_84408267
程序员java面试开发语言
④如果该位置不为null,则判断key是否一样(hashCode和equals),如果一样则直接覆盖value⑤如果key不一样,则判断该元素是否为红黑树的节点,如果是,则直接在红黑树中插入键值对⑥如果不是红黑树的节点,则就是链表,遍历这个链表执行插入操作,如果遍历过程中若发现key已存在,直接覆盖value即可。如果链表的长度大于等于8且数组中元素数量大于等于阈值64,则将链表转化为红黑树,(先
- 你必须掌握的 21 个 Java 核心技术!
2401_83916204
程序员java开发语言
Object类型:equals,hashcodeString类型的特点4.对象和实例,对象的创建在这方面,开发者需要了解class和instance的概念以及之间的差别,这是java面向对象特性的一个基础。主要知识点有:Class和Instance的概念Instance创建的过程:1、无继承:分配内存空间,初始化变量,调用构造函数2、有继承:处理静态动作,分配内存空间,变量定义为初始值,从基类->
- Java 【数据结构】 哈希(Hash超详解)HashSet&HashMap【神装】
中草药z
【Java】登神长阶史诗般的Java成神之路哈希算法数据结构javahashhashtableMapSet
登神长阶第十神装HashSet第十一神装HashMap目录一.哈希1.概念2.Object类的hashCode()方法:3.String类的哈希码:4.注意事项:二.哈希桶1.哈希桶原理2.哈希桶的实现细节3.总结三.解决哈希冲突的常用方法*四.HashSet1.定义2.操作3.特性4.内部实现5.应用场景✏️五.HashMap✒️1.定义️2.操作️3.特性️4.内部实现️5.应用场景六.对比七
- mysql hashcode函数_Mysql源码学习——没那么简单的Hash
weixin_39793794
mysqlhashcode函数
Hash链表的应用比较常见,其目的就是为了将不同的值映射到不同的位置,查找的时候直接找到相应的位置,而不需要传统的顺序遍历或是二分查找,从而达到减少查询时间的目的。常规的hash是预定义一定的桶(bucket),规定一个hash函数,然后进行散列。然而Mysql中的hash没有固定的bucket,hash函数也是动态变化的,本文就进行非深入介绍。基本结构体Hash的结构体定义以及相关的函数接口定义
- 从内存层面分析Java 参数传递机制
CodeDunkster
java开发语言
在Java中,理解参数传递机制对于编写高效和可维护的代码至关重要。本文将探讨基本数据类型和引用数据类型的参数传递方式,并介绍System.identityHashCode方法及其作用。我们将结合栈帧的概念,通过示例代码来详细解释这些机制。System.identityHashCode的作用System.identityHashCode方法用于获取对象的哈希码,这个哈希码是基于对象的内存地址的。它可
- C#中List集合使用Remove方法详解——List使用Remove方法需要注意的坑?
猿享天开
学懂C#-高级编程技术精讲c#开发语言
目录一、基本使用1、简单类型的例子2、复杂类型的例子二、思考三、深度解析四、正确的使用方式1、重写Equals和GetHashCode2、使用LINQ的FirstOrDefault方法五、性能考虑六、注意事项总结在C#中,List是一个常用的数据结构,它提供了一系列操作方法来管理其内部的元素。Remove方法是其中一个用于移除元素的重要方法。本文将深入探讨List.Remove方法的使用、底层原理
- Java中Object类有哪些方法?
破碎的天堂鸟
Java学习java开发语言
在Java中,Object类是所有类的父类,每个类都继承自Object类。Object类提供了许多常用的方法,这些方法可以被所有子类访问和使用。以下是Java中Object类的一些常用方法:1:getClass()方法:返回对象的运行时Class对象。2:hashCode()方法:返回对象的哈希码(一种整型值)3:equals(Objectobj)方法:判断两个对象是否相等4:clone()方法:
- Java快速入门 知识精简(7)常用类
Tangy范
Javajava开发语言
lang包该包提供了Java语言进行程序设计的基础类,它是默认导入的包。该包里面的Runnable接口和Object、Math、String、StringBuffer、System、Thread、Throwable类需要重点掌握,因为它们应用很广。类名描述常用方法Object所有Java类的根类equals(Object),hashCode(),toString(),clone(),notify(
- java-stream
滑上又滑落 一收和一放
自学技能点java
streamstream记录一下,方便以后查询,就是怕自己记不住stream方法作用filter()接收lambda,从流中排除某些操作limit()截断流,使其元素不超过给定对象skip(n)跳过元素,返回一个扔掉了前n个元素的流,若流中元素不足n个,则返回一个空流,与limit(n)互补distinct筛选,通过流所生成元素的hashCode()和equals去除重复元素map接受Lambda
- Java 中的 ==, equals 与 hashCode 的区别与联系
炜仔的图书馆
概述==:该操作符生成的是一个boolean结果,它计算的是操作数的值之间的关系equals:Object的实例方法,比较两个对象的content是否相同hashCode:Object的native方法,获取对象的哈希值,用于确定该对象在哈希表中的索引位置,它实际上是一个int型整数关系操作符==基本数据类型变量在Java中有八种基本数据类型:浮点型:float(4byte),double(8by
- java基础——Object类
风之彼端
Java学习javajvm开发语言
Object类Object类是所有类的超类.可以通过Ctrl+H查看类继承结构观察Object类的常用方法:toString()打印当前对象(直接打印对象就是打印对象的toString方法)publicStringtoString(){returngetClass().getName()+"@"+Integer.toHexString(hashCode());}getClass()获取类的字节码对
- HashMap 的 put() 和 get() 方法工作原理
潘多编程
哈希算法算法
在Java中,HashMap是一种非常常用的数据结构,它允许我们通过键(key)来快速存取值(value)。HashMap实现了Map接口,并提供了高效的键值对存储机制。本文将详细介绍HashMap的put()和get()方法的工作原理。1.基础知识在开始之前,我们需要了解一些基础知识:键值对:HashMap存储的数据类型是键值对形式。哈希码:每个键都有一个哈希码,这是通过调用hashCode()
- JAVA基础篇(三)
凉笙2019
一,集合与数组的区别二,collection集合的方法三,常用集合分类四,list和set区别五,list集合六,set(1)HashSet底层数据结构采用哈希表实现,元素无序且唯一,线程不安全,效率高,可以存储null元素,元素的唯一性是靠所存储元素类型是否重写hashCode()和equals()方法来保证的,如果没有重写这两个方法,则无法保证元素的唯一性。(2)LinkedHashSet底层
- Java中的Map
鹿上的程序媛
javajava开发语言后端
Map5.1Map集合的概述和使用5.1.1HashMap的put方法5.2Map集合的基本功能5.3Map集合的获取功能5.4Map集合的遍历(方式1:将键获取到一个集合,再将键的集合遍历获取对应的值)5.5Map集合的遍历(方式2:获取键值对象Map.Entry,然后遍历)5.7案例:HashMap集合存储集合对象并遍历(保证键唯一,在类中重写equals()和hashCode()方法)5.8
- 比较或者实用contains都需要重写equals和hashcode方法
当归1024
javajava
在java中,每个类都继承了object类,并且从object类中继承了一个默认的equals()方法。这个默认的equals()方法是比较两个对象的地址值是否相同,即他们是否指向内存中通体个对象。如果我们想要比较两个对象的引用地址是否相同,则需要重写equals()方法。具体来说我们可以自定义一个equals()方法,用于比较自己顶替的类的实例是否相等。通常情况下,需要重写equals()方法时
- 深入理解Java中的@EqualsAndHashCode注解
李少兄
Javajava开发语言
前言在Java开发中,尤其是在处理对象比较、集合操作以及对象作为Map的键时,重写equals()和hashCode()方法至关重要。Lombok库提供了一个非常方便的注解——@EqualsAndHashCode,可以自动帮我们生成这两个方法的实现,极大地简化了开发过程。一、@EqualsAndHashCode注解简介@EqualsAndHashCode是Lombok库提供的一个注解,它能自动生成
- Effective Java-对于所有对象都通用的方法
勇往直前888
覆盖equals时请遵守通用约定自反性。对象必须等于自身。对称性。任何两个对象对于“它们是否相等”的问题都必须保持一致。传递性。如果一个对象等于第二个对象,并且第二个对象等于第三个对象,则第一个对象一定等于第三个对象一致性。如果两个对象相等,它们就必须始终保持相等,除非它们中有一个对象(或者两个都)被修改了。非空性。所有的对象都必须不等于null覆盖equals时总要覆盖hashCode对一个对象
- hashcode方法
一个人的飘
hashCode方法的主要作用是为了配合基于散列的集合一起正常运行,这样的散列集合包括HashSet、HashMap以及HashTable。为什么这么说呢?考虑一种情况,当向集合中插入对象时,如何判别在集合中是否已经存在该对象了?(注意:集合中不允许重复的元素存在)也许大多数人都会想到调用equals方法来逐个进行比较,这个方法确实可行。但是如果集合中已经存在一万条数据或者更多的数据,如果采用eq
- java中Object类的常用方法
晚•夜
java基础知识java开发语言
1.常用方法1.clone方法1.1基本概念1.2方法声明1.3工作原理1.4注意事项1.5示例代码2.finalize方法2.1基本概念2.2方法声明2.3工作原理2.4注意事项2.5替代方案3.equals方法3.1方法声明3.2默认行为3.3重写规范3.4示例代码3.5注意事项4.hashcode方法4.1实现方式4.2遵循原则4.3示例代码5.wait方法6.notify方法7.notif
- 【研究生复试】计算机&软件工程&人工智能研究生复试——资料整理(速记版)——JAVA
沐风—云端行者
研究生复试—面试——速记资料java软件工程开发语言考研
1、JAVA2、计算机网络3、计算机体系结构4、数据库5、计算机租场原理6、软件工程7、大数据8、英文自我介绍1.Java1.==和equals的区别比较基本数据类型是比较的值,引用数据类型是比较两个是不是同一个对象,也就是引用是否指向同一个对象,地址是否相同,equals本质上也是,但是可以重写这个方法,比如String和Integer类。2.为什么重写equals要重写hashcode?我个人
- C#面:.NET中所有类型的基类是什么
那个那个鱼
C#面试题c#c#开发语言.net
System.Object是C#.NET中所有类型的基类,它提供了一些通用的方法和属性,以及对象的类型信息和引用比较等功能。例如:System.ObjectToString(),Equals(),GetHashCode()等。由于所有类型都继承自System.Object,因此可以在任何对象上调用这些方法。System.Object还定义了一些其他重要的成员,例如GetType()方法,用于获取对
- pwnable.kr解题write up —— Toddler's Bottle(一)
captain_hwz
securityCTFsecurity
1.fd#include#includecharbuf[32];intmain(intargc,char*argv[],char*envp[]){if(argcunsignedlonghashcode=0x21DD09EC;unsignedlongcheck_password(constchar*p){int*ip=(int*)p;inti;intres=0;for(i=0;i#includevo
- ==和equals方法
油爆酥葱
javajvm开发语言
“==”代表比较双方是否相同,如果是基本类型则表示值相等,如果是引用类型则表示地址相等即是同一个对象。equals()提供定义“对象内容相等”的逻辑。比如:我们在公安系统中认为id相同的人就是同一个人,学籍系统中认为学号相同的人就是同一个人。equals()默认是比较两个对象的hashCode值。也可以根据自己的要求重写equals()方法。自定义类重写equals()方法publicclassT
- java语言基础
娟宝宝萌萌哒
javajava
文章目录面向对象和面向过程的区别java的四个基本特性抽象封装:继承:多态:重载和重写的区别构造函数访问控制符的区别Static关键字final关键字String,StringBuffer,StringBuilder的区别可变性线程安全性性能equals()和==的区别hashCode和equals的关系如何重写抽象类和接口的区别设计理念语法自动装箱和拆箱什么是泛型,为什么使用,什么是类型擦除ja
- Java Object类方法解析
Robin132929
JavaObject类方法解析在Java中Object是所有类的父类,任何类都默认继承Object,其提供的方法主要有以下几种:registerNatives()hashCode和equale函数用来判断对象是否相同,wait(),wait(long),wait(long,int),notify(),notifyAll()toString()和getClassclone()finalize()用于
- Map及散列HashCode
Coding_Jeremy
Map数据结构在平时开发当中经常使用到,其中HashMap因为其查询和插入非常高效快速而更受开发者热捧。在本文当中我们通过设计HashMap来明白HashMap高效查找和插入的原因我们自己的类作为HashMap的键需要注意什么?hashCode及equals方法的作用及应用接下来我们来分析Java中Map的设计及如果我们使用自己类作为Map的键需要考虑哪些条件呢?场景一:我们自己实现Map类型:M
- 2020年终最新整理:阿里/百度/蚂蚁Java岗面试清单(附答案)
码农小芷
百度(三面)百度一面(现场)自我介绍Java中的多态为什么要同时重写hashcode和equalsHashmap的原理Hashmap如何变线程安全,每种方式的优缺点垃圾回收机制Jvm的参数你知道的说一下设计模式了解的说一下手撕一个单例模式算法题目手撕算法:反转单链表手撕算法:实现类似微博子结构的数据结构,输入一系列父子关系,输出一个类似微博评论的父子结构图手写java多线程手写java的soeke
- 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独立出来,数据持