??xml version="1.0" encoding="utf-8" standalone="yes"?>26uuu久久噜噜噜噜,四虎影院观看视频在线观看,久久久久sehttp://www.aygfsteel.com/zhangsenwei/category/32505.html张森炜的博客zh-cnSat, 15 Aug 2009 10:42:14 GMTSat, 15 Aug 2009 10:42:14 GMT60java中的日期cDatehttp://www.aygfsteel.com/zhangsenwei/archive/2009/08/14/291107.html张森?/dc:creator>张森?/author>Fri, 14 Aug 2009 00:55:00 GMThttp://www.aygfsteel.com/zhangsenwei/archive/2009/08/14/291107.htmlhttp://www.aygfsteel.com/zhangsenwei/comments/291107.htmlhttp://www.aygfsteel.com/zhangsenwei/archive/2009/08/14/291107.html#Feedback0http://www.aygfsteel.com/zhangsenwei/comments/commentRss/291107.htmlhttp://www.aygfsteel.com/zhangsenwei/services/trackbacks/291107.html

一、Java中的日期概述

日期在Java中是一块非常复杂的内容Q对于一个日期在不同的语a国别环境中,日期的国际化Q日期和旉之间的{换,日期的加减运,日期的展C格式都是非常复杂的问题?

在Java中,操作日期主要涉及C下几个类Q?

1、java.util.Date
c?Date 表示特定的瞬__到毫U。从 JDK 1.1 开始,应该使用 Calendar cd现日期和旉字段之间转换Q?DateFormat cL格式化和分析日期字符丌ӀDate 中的把日期解释ؓq、月、日、小时、分钟和U值的Ҏ已废弃?

2、java.text.DateFormatQ抽象类Q?
DateFormat 是日?旉格式化子cȝ抽象c,它以与语a无关的方式格式化q分析日期或旉。日?旉格式化子c(?SimpleDateFormatQ允许进行格式化Q也是日期 -> 文本Q、分析(文本-> 日期Q和标准化。将日期表示?Date 对象Q或者表CZؓ?GMTQ格林尼L准时_1970 q_1 ?1 ?00:00:00 q一d始的毫秒数?

3、java.text.SimpleDateFormatQDateFormat的直接子c)
SimpleDateFormat 是一个以与语a环境相关的方式来格式化和分析日期的具体类。它允许q行格式化(日期 -> 文本Q、分析(文本 -> 日期Q和规范化?
SimpleDateFormat 使得可以选择M用户定义的日?旉格式的模式。但是,仍然通过 DateFormat 中的 getTimeInstance、getDateInstance ?getDateTimeInstance 来新的创建日?旉格式化程序?

4、java.util.CalendarQ抽象类Q?
Calendar cL一个抽象类Q它为特定瞬间与一l诸?YEAR、MONTH、DAY_OF_MONTH、HOUR {日历字D之间的转换提供了一些方法,qؓ操作日历字段Q例如获得下星期的日期)提供了一些方法。瞬间可用毫U值来表示Q它是距历元Q即格林威治标准旉 1970 q?1 ?1 日的 00:00:00.000Q格里高利历Q的偏移量?
与其他语a环境敏感cMPCalendar 提供了一个类Ҏ getInstanceQ以获得此类型的一个通用的对象。Calendar ?getInstance Ҏq回一?Calendar 对象Q其日历字段已由当前日期和时间初始化?

5、java.util.GregorianCalendarQCalendar的直接子c)
GregorianCalendar ?Calendar 的一个具体子c,提供了世界上大多数国家用的标准日历pȝ?
GregorianCalendar 是一U؜合日历,在单一间断性的支持下同时支持儒略历和格里高利历pȝQ在默认情况下,它对应格里高利日历创立时的格里高利历日期Q某些国家是?1582 q?10 ?15 日创立,在其他国家要晚一些)。可p用方通过调用 setGregorianChange() 来更改v始日期?


二、java.util.Date的?

1、java.util.Date的API?

c?java.util.Date 表示特定的瞬__到毫U。提供了很多的方法,但是很多已经q时Q不推荐使用Q下面仅仅列出没有过时的ҎQ?

构造方法摘?
-------------
Date()
分配 Date 对象q用当前旉初始化此对象Q以表示分配它的旉Q精到毫秒Q?
Date(long date)
分配 Date 对象q初始化此对象,以表C从标准基准时_UCؓ“历元QepochQ?#8221;Q即 1970 q?1 ?1 ?00:00:00 GMTQ以来的指定毫秒数?

Ҏ摘要
-------------
boolean after(Date when)
试此日期是否在指定日期之后?

boolean before(Date when)
试此日期是否在指定日期之前?

Object clone()
q回此对象的副本?

int compareTo(Date anotherDate)
比较两个日期的顺序?

boolean equals(Object obj)
比较两个日期的相{性?

long getTime()
q回?1970 q?1 ?1 ?00:00:00 GMT 以来?Date 对象表示的毫U数?

int hashCode()
q回此对象的哈希码倹{?

void setTime(long time)
讄?Date 对象Q以表示 1970 q?1 ?1 ?00:00:00 GMT 以后 time 毫秒的时间点?

String toString()
把此 Date 对象转换Z下Ş式的 StringQ?dow mon dd hh:mm:ss zzz yyyy 其中Q?
dow 是一周中的某一?(Sun, Mon, Tue, Wed, Thu, Fri, Sat)?
mon 是月?(Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)?
dd 是一月中的某一天(01 ?31Q,昄Z位十q制数?
hh 是一天中的小Ӟ00 ?23Q,昄Z位十q制数?
mm 是小时中的分钟(00 ?59Q,昄Z位十q制数?
ss 是分钟中的秒敎ͼ00 ?61Q,昄Z位十q制数?
zzz 是时区(q可以反映夏令时Q。标准时区羃写包括方?parse 识别的时区羃写。如果不提供时区信息Q则 zzz 为空Q即Ҏ不包括Q何字W?
yyyy 是年份,昄?4 位十q制数?

下面是一个Datecȝl合实例:
import java.util.Date;


public class TestDate {
public static void main(String args[]) {
TestDate nowDate = new TestDate();
nowDate.getSystemCurrentTime();
nowDate.getCurrentDate();
}


public void getSystemCurrentTime() {
System.out.println("----获取pȝ当前旉----");
System.out.println("pȝ当前旉 = " + System.currentTimeMillis());
}


public void getCurrentDate() {
System.out.println("----获取pȝ当前日期----");
//创徏q初始化一个日期(初始gؓ当前日期Q?
Date date = new Date();
System.out.println("现在的日期是 = " + date.toString());
System.out.println("?970q?????U开始至今所l历的毫U数 = " + date.getTime());
}
}

q行l果:
----获取pȝ当前旉----
pȝ当前旉 = 1196413077278
----获取pȝ当前日期----
现在的日期是 = Fri Nov 30 16:57:57 CST 2007
?970q?????U开始至今所l历的毫U数 = 1196413077278

Process finished with exit code 0


2、java.text.DateFormat抽象cȝ使用

DateFormat 是日?旉格式化子cȝ抽象c,它以与语a无关的方式格式化q分析日期或旉。日?旉格式化子c(?SimpleDateFormatQ允许进行格式化Q也是日期 -> 文本Q、分析(文本-> 日期Q和标准化。将日期表示?Date 对象Q或者表CZؓ?GMTQ格林尼L准时_1970 q_1 ?1 ?00:00:00 q一d始的毫秒数?

DateFormat 提供了很多类ҎQ以获得Z默认或给定语a环境和多U格式化风格的默认日?旉 Formatter。格式化风格包括 FULL、LONG、MEDIUM ?SHORT。方法描qC提供了用这些风格的更多l节和示例?

DateFormat 可帮助进行格式化q分析Q何语a环境的日期。对于月、星期,甚至日历格式Q阴历和阛_Q,其代码可完全与语a环境的约定无兟?

要格式化一个当前语a环境下的日期Q可使用某个静态工厂方法:
myString = DateFormat.getDateInstance().format(myDate);

 

如果格式化多个日期,那么获得该格式ƈ多次使用它是更ؓ高效的做法,q样pȝ׃必多ơ获取有关环境语a和国家约定的信息了?
DateFormat df = DateFormat.getDateInstance();
for (int i = 0; i < myDate.length; ++i) {
output.println(df.format(myDate[i]) + "; ");
}

要格式化不同语言环境的日期,可在 getDateInstance() 的调用中指定它?
DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE);

q可使用 DateFormat q行分析?
myDate = df.parse(myString);

使用 getDateInstance 来获得该国家的标准日期格式。另外还提供了一些其他静态工厂方法。?getTimeInstance 可获得该国家的时间格式。?getDateTimeInstance 可获得日期和旉格式。可以将不同选项传入q些工厂ҎQ以控制l果的长度(?SHORT ?MEDIUM ?LONG 再到 FULLQ。确切的l果取决于语a环境Q但是通常Q?
SHORT 完全为数字,?12.13.52 ?3:30pm
MEDIUM 较长Q如 Jan 12, 1952
LONG 更长Q如 January 12, 1952 ?3:30:32pm
FULL 是完全指定,?Tuesday, April 12, 1952 AD ?3:30:42pm PST?

如果愿意Q还可以在格式上讄时区。如果想Ҏ式化或分析施加更多的控制Q或者给予用h多的控制Q,可以试从工厂Ҏ所获得?DateFormat 强制转换?SimpleDateFormat。这适用于大多数国家Q只是要C其攑օ一?try 代码块中Q以防遇到特D的格式?

q可以用借助 ParsePosition ?FieldPosition 的分析和格式化方法Ş式来Q逐步地分析字W串的各部分。对齐Q意特定的字段Q或者找出字W串在屏q上的选择位置?

DateFormat 不是同步的。徏议ؓ每个U程创徏独立的格式实例。如果多个线E同时访问一个格式,则它必须保持外部同步?

3、java.text.SimpleDateFormatQDateFormat的直接子c)的?

SimpleDateFormat 是一个以与语a环境相关的方式来格式化和分析日期的具体类。它允许q行格式化(日期 -> 文本Q、分析(文本 -> 日期Q和规范化?

SimpleDateFormat 使得可以选择M用户定义的日?旉格式的模式。但是,仍然通过 DateFormat 中的 getTimeInstance、getDateInstance ?getDateTimeInstance 来新的创建日?旉格式化程序。每一个这LcL法都能够q回一个以默认格式模式初始化的日期/旉格式化程序。可以根据需要?applyPattern Ҏ来修Ҏ式模式。有关用这些方法的更多信息Q请参阅 DateFormat?

日期和时间模?
日期和时间格式由日期和时间模?字符串指定。在日期和时间模式字W串中,未加引号的字?'A' ?'Z' ?'a' ?'z' 被解释ؓ模式字母Q用来表C日期或旉字符串元素。文本可以用单引号 (') 引v来,以免q行解释?''" 表示单引受所有其他字W均不解释;只是在格式化时将它们单复制到输出字符Ԍ或者在分析时与输入字符串进行匹配?

定义了以下模式字母(所有其他字W?'A' ?'Z' ?'a' ?'z' 都被保留Q:
字母 日期或时间元?表示 CZ
G Era 标志W?Text AD
y q?Year 1996; 96
M q中的月?Month July; Jul; 07
w q中的周?Number 27
W 月䆾中的周数 Number 2
D q中的天?Number 189
d 月䆾中的天数 Number 10
F 月䆾中的星期 Number 2
E 星期中的天数 Text Tuesday; Tue
a Am/pm 标记 Text PM
H 一天中的小时数Q?-23Q?Number 0
k 一天中的小时数Q?-24Q?Number 24
K am/pm 中的时敎ͼ0-11Q?Number 0
h am/pm 中的时敎ͼ1-12Q?Number 12
m 时中的分钟?Number 30
s 分钟中的U数 Number 55
S 毫秒?Number 978
z 时区 General time zone Pacific Standard Time; PST; GMT-08:00
Z 时区 RFC 822 time zone -0800


更多的参考信息可以查看JDK API文档,下面l出一个综合实?

import java.util.Date;
import java.util.Locale;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;


public class TestSimpleDateFormat {
public static void main(String args[]) throws ParseException {
TestSimpleDateFormat test = new TestSimpleDateFormat();
test.testDateFormat();

}

public void testDateFormat() throws ParseException {
//创徏日期
Date date = new Date();

//创徏不同的日期格?
DateFormat df1 = DateFormat.getInstance();
DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss EE");
DateFormat df3 = DateFormat.getDateInstance(DateFormat.FULL, Locale.CHINA); //产生一个指定国家指定长度的日期格式Q长度不同,昄的日期完整性也不同
DateFormat df4 = new SimpleDateFormat("yyyyqMM月dd?hh时mm分ssU?EE", Locale.CHINA);
DateFormat df5 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss EEEEEE", Locale.US);
DateFormat df6 = new SimpleDateFormat("yyyy-MM-dd");
DateFormat df7 = new SimpleDateFormat("yyyyqMM月dd?);

//日期按照不同格式进行输?
System.out.println("-------日期按照不同格式进行输?-----");
System.out.println("按照Java默认的日期格式,默认的区?: " + df1.format(date));
System.out.println("按照指定格式 yyyy-MM-dd hh:mm:ss EE Q系l默认区?:" + df2.format(date));
System.out.println("按照日期的FULL模式Q区域设|ؓ中文 : " + df3.format(date));
System.out.println("按照指定格式 yyyyqMM月dd?hh时mm分ssU?EE Q区域ؓ中文 : " + df4.format(date));
System.out.println("按照指定格式 yyyy-MM-dd hh:mm:ss EE Q区域ؓ国 : " + df5.format(date));
System.out.println("按照指定格式 yyyy-MM-dd Q系l默认区?: " + df6.format(date));

//符合该格式的字W串转换为日期,若格式不盔RQ则会出?
Date date1 = df1.parse("07-11-30 下午2:32");
Date date2 = df2.parse("2007-11-30 02:51:07 星期?);
Date date3 = df3.parse("2007q?1?0?星期?);
Date date4 = df4.parse("2007q?1?0?02?1?8U?星期?);
Date date5 = df5.parse("2007-11-30 02:51:18 Friday");
Date date6 = df6.parse("2007-11-30");

System.out.println("-------输出字W串转换为日期的l果------");
System.out.println(date1);
System.out.println(date2);
System.out.println(date3);
System.out.println(date4);
System.out.println(date5);
System.out.println(date6);
}
}


q行l果:
-------日期按照不同格式进行输?-----
按照Java默认的日期格式,默认的区?: 07-11-30 下午5:04
按照指定格式 yyyy-MM-dd hh:mm:ss EE Q系l默认区?:2007-11-30 05:04:10 星期?
按照日期的FULL模式Q区域设|ؓ中文 : 2007q?1?0?星期?
按照指定格式 yyyyqMM月dd?hh时mm分ssU?EE Q区域ؓ中文 : 2007q?1?0?05?4?0U星期五
按照指定格式 yyyy-MM-dd hh:mm:ss EE Q区域ؓ国 : 2007-11-30 05:04:10 Friday
按照指定格式 yyyy-MM-dd Q系l默认区?: 2007-11-30
-------输出字W串转换为日期的l果------
Fri Nov 30 14:32:00 CST 2007
Fri Nov 30 02:51:07 CST 2007
Fri Nov 30 00:00:00 CST 2007
Fri Nov 30 02:51:18 CST 2007
Fri Nov 30 02:51:18 CST 2007
Fri Nov 30 00:00:00 CST 2007

Process finished with exit code 0

4、java.util.CalendarQ抽象类Q?

java.util.Calendar是个抽象c,是系l时间的抽象表示Q它为特定瞬间与一l诸?YEAR、MONTH、DAY_OF_MONTH、HOUR {日历字D之间的转换提供了一些方法,qؓ操作日历字段Q例如获得下星期的日期)提供了一些方法。瞬间可用毫U值来表示Q它是距历元Q即格林威治标准旉 1970 q?1 ?1 日的 00:00:00.000Q格里高利历Q的偏移量?

与其他语a环境敏感cMPCalendar 提供了一个类Ҏ getInstanceQ以获得此类型的一个通用的对象。Calendar ?getInstance Ҏq回一?Calendar 对象Q其日历字段已由当前日期和时间初始化?

一个Calendar的实例是pȝ旉的抽象表C,从Calendar的实例可以知道年月日星期月䆾时区{信息。CalendarcM有一个静态方?get(int x),通过q个Ҏ可以获取到相兛_例的一些|q月日星期月份等Q信息。参数x是一个量|在Calendar中有定义?

Calendar中些陷阱Q很Ҏ掉下去:
1、Calendar的星期是从周日开始的Q常量gؓ0?
2、Calendar的月份是从一月开始的Q常量gؓ0?
3、Calendar的每个月的第一天gؓ1?

5、java.util.GregorianCalendarQCalendar的直接子c)

GregorianCalendar ?Calendar 的一个具体子c,提供了世界上大多数国家用的标准日历pȝ。结合Calendar抽象cM用?

下面l出一个综合实例看看Calendarcȝ用法Q?

import java.util.*;
import java.text.SimpleDateFormat;


public class TestCalendar {
public static void main(String args[]) {
TestCalendar testCalendar = new TestCalendar();
testCalendar.testCalendar();

}

public void testCalendar() {
//创徏Calendar的方?
Calendar now1 = Calendar.getInstance();
Calendar now2 = new GregorianCalendar();
Calendar now3 = new GregorianCalendar(2007, 10, 30);
Calendar now4 = new GregorianCalendar(2007, 10, 30, 15, 55); //陷阱:Calendar的月份是0~11
Calendar now5 = new GregorianCalendar(2007, 10, 30, 15, 55, 44);
Calendar now6 = new GregorianCalendar(Locale.US);
Calendar now7 = new GregorianCalendar(TimeZone.getTimeZone("GMT-8:00"));

//通过日期和毫U数讄Calendar
now2.setTime(new Date());
System.out.println(now2);

now2.setTimeInMillis(new Date().getTime());
System.out.println(now2);

//定义日期的中文输出格?q输出日?
SimpleDateFormat df = new SimpleDateFormat("yyyyqMM月dd?hh时mm分ssU?E", Locale.CHINA);
System.out.println("获取日期中文格式化化输出Q? + df.format(now5.getTime()));
System.out.println();

System.out.println("--------通过Calendar获取日期中年月日{相关信?-------");
System.out.println("获取q_" + now5.get(Calendar.YEAR));
System.out.println("获取?月䆾是从0开始的)Q? + now5.get(Calendar.MONTH));
System.out.println("获取日:" + now5.get(Calendar.DAY_OF_MONTH));
System.out.println("获取Ӟ" + now5.get(Calendar.HOUR));
System.out.println("获取分:" + now5.get(Calendar.MINUTE));
System.out.println("获取U:" + now5.get(Calendar.SECOND));
System.out.println("获取上午、下午:" + now5.get(Calendar.AM_PM));
System.out.println("获取星期数?星期是从周日开始的)Q? + now5.get(Calendar.DAY_OF_WEEK));
System.out.println();

System.out.println("---------通用星期中文化{?--------");
String dayOfWeek[] = {"", "?, "一", "?, "?, "?, "?, "?};
System.out.println("now5对象的星期是:" + dayOfWeek[now5.get(Calendar.DAY_OF_WEEK)]);
System.out.println();

System.out.println("---------通用月䆾中文化{?--------");
String months[] = {"一?, "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一?, "十二?};
System.out.println("now5对象的月份是: " + months[now5.get(Calendar.MONTH)]);
}
}

q行l果Q?
java.util.GregorianCalendar[time=1196414388324,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2007,MONTH=10,WEEK_OF_YEAR=48,WEEK_OF_MONTH=5,DAY_OF_MONTH=30,DAY_OF_YEAR=334,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=5,AM_PM=1,HOUR=5,HOUR_OF_DAY=17,MINUTE=19,SECOND=48,MILLISECOND=324,ZONE_OFFSET=28800000,DST_OFFSET=0]
java.util.GregorianCalendar[time=1196414388324,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2007,MONTH=10,WEEK_OF_YEAR=48,WEEK_OF_MONTH=5,DAY_OF_MONTH=30,DAY_OF_YEAR=334,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=5,AM_PM=1,HOUR=5,HOUR_OF_DAY=17,MINUTE=19,SECOND=48,MILLISECOND=324,ZONE_OFFSET=28800000,DST_OFFSET=0]
获取日期中文格式化化输出Q?007q?1?0?03?5?4U?星期?

--------通过Calendar获取日期中年月日{相关信?-------
获取q_2007
获取?月䆾是从0开始的)Q?0
获取日:30
获取Ӟ3
获取分:55
获取U:44
获取上午、下午:1
获取星期数?星期是从周日开始的)Q?

---------通用星期中文化{?--------
now5对象的星期是:?

---------通用月䆾中文化{?--------
now5对象的月份是: 十一?/span>

 


转蝲h明出?/span>Q谢谢!http://www.aygfsteel.com/zhangsenweiQ张炜JavaEE技术博客)



]]>
po、vo、bo、dao、pojo的解?/title><link>http://www.aygfsteel.com/zhangsenwei/archive/2009/08/13/290940.html</link><dc:creator>张森?/dc:creator><author>张森?/author><pubDate>Thu, 13 Aug 2009 02:16:00 GMT</pubDate><guid>http://www.aygfsteel.com/zhangsenwei/archive/2009/08/13/290940.html</guid><wfw:comment>http://www.aygfsteel.com/zhangsenwei/comments/290940.html</wfw:comment><comments>http://www.aygfsteel.com/zhangsenwei/archive/2009/08/13/290940.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/zhangsenwei/comments/commentRss/290940.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/zhangsenwei/services/trackbacks/290940.html</trackback:ping><description><![CDATA[<p><span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: 16px Simsun; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><span style="text-align: left; line-height: 18px; font-family: Arial; font-size: 12px" class="Apple-style-span">java的几U对?PO,VO,DAO,BO,POJO)解释<span id="wmqeeuq" class="Apple-converted-space"> </span><br />    一、PO: persistant object 持久对象,可以看成是与数据库中的表相映的java对象。最单的PO是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含MҎ据库的操作?span class="Apple-converted-space"> </span><br /> <br />    二、VO: value object值对象。通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,q根据业务的需?个h觉得同DTO(数据传输对象),在web上传递?span class="Apple-converted-space"> </span><br /> <br />    三、DAO: data access object 数据讉K对象Q此对象用于讉K数据库。通常和POl合使用QDAO中包含了各种数据库的操作Ҏ。通过它的Ҏ,l合POҎ据库q行相关的操作?span class="Apple-converted-space"> </span><br /> <br />    四、BO: business object 业务对象,装业务逻辑的java对象,通过调用DAOҎ,l合PO,VOq行业务操作?span class="Apple-converted-space"> </span><br /> <br />    五、POJO: plain ordinary java object 单无规则java对象,我个得它和其他不是一个层面上的东?VO和PO应该都属于它?span class="Apple-converted-space"> </span><br /> <br /> POQ?span class="Apple-converted-space"> </span><br /> persistant object持久对象<span id="wmqeeuq" class="Apple-converted-space"> </span><br /> 最形象的理解就是一个PO是数据库中的一条记录?span class="Apple-converted-space"> </span><br /> 好处是可以把一条记录作Z个对象处理,可以方便的{为其它对象?span class="Apple-converted-space"> </span><br /> BOQ?span class="Apple-converted-space"> </span><br /> business object业务对象<span id="wmqeeuq" class="Apple-converted-space"> </span><br /> 主要作用是把业务逻辑装Z个对象。这个对象可以包括一个或多个其它的对象?span class="Apple-converted-space"> </span><br /> 比如一个简历,有教育经历、工作经历?nbsp; 关系{等?span class="Apple-converted-space"> </span><br /> 我们可以把教育经历对应一个POQ工作经历对应一个POQ?nbsp; 关系对应一个PO?span class="Apple-converted-space"> </span><br /> 建立一个对应简历的BO对象处理历,每个BO包含q些PO?span class="Apple-converted-space"> </span><br /> q样处理业务逻辑Ӟ我们可以针对BOd理?span class="Apple-converted-space"> </span><br /> VO Q?span class="Apple-converted-space"> </span><br /> value object值对?span class="Apple-converted-space"> </span><br /> ViewObject表现层对?span class="Apple-converted-space"> </span><br /> 主要对应界面昄的数据对象。对于一个WEB面Q或者SWT、SWING的一个界面,用一个VO对象对应整个界面的倹{?span class="Apple-converted-space"> </span><br /> DTO Q?span class="Apple-converted-space"> </span><br /> Data Transfer Object数据传输对象<span id="wmqeeuq" class="Apple-converted-space"> </span><br /> 主要用于q程调用{需要大量传输对象的地方?span class="Apple-converted-space"> </span><br /> 比如我们一张表?00个字D,那么对应的PO有100个属性?span class="Apple-converted-space"> </span><br /> 但是我们界面上只要显C?0个字D,<span id="wmqeeuq" class="Apple-converted-space"> </span><br /> 客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,<span id="wmqeeuq" class="Apple-converted-space"> </span><br /> q时我们可以用只有q?0个属性的DTO来传递结果到客户端,q样也不会暴露服务端表结?到达客户端以后,如果用这个对象来对应界面昄Q那此时它的w䆾p{为VO<span id="wmqeeuq" class="Apple-converted-space"> </span><br /> POJO Q?span class="Apple-converted-space"> </span><br /> plain ordinary java object 单java对象<span id="wmqeeuq" class="Apple-converted-space"> </span><br /> 个h感觉POJO是最常见最多变的对象,是一个中间对象,也是我们最常打交道的对象?span class="Apple-converted-space"> </span><br /> 一个POJO持久化以后就是PO<span id="wmqeeuq" class="Apple-converted-space"> </span><br /> 直接用它传递、传递过E中是DTO<span id="wmqeeuq" class="Apple-converted-space"> </span><br /> 直接用来对应表示层就是VO<span id="wmqeeuq" class="Apple-converted-space"> </span><br /> DAOQ?span class="Apple-converted-space"> </span><br /> data access object数据讉K对象<span id="wmqeeuq" class="Apple-converted-space"> </span><br /> q个大家最熟悉Q和上面几个O区别最大,基本没有互相转化的可能性和必要.<span id="wmqeeuq" class="Apple-converted-space"> </span><br /> 主要用来装Ҏ据库的访问。通过它可以把POJO持久化ؓPOQ用POl装出来VO、DTO<span id="wmqeeuq" class="Apple-converted-space"> </span><br />        ȝ下我认ؓ一个对象究竟是什么O要看具体环境Q在不同的层、不同的应用场合Q对象的w䆾也不一P而且对象w䆾的{化也是很自然的。就像你对老婆来说是老公Q对父母来说是子女。设计这些概늚初衷不是Z唬h而是Z更好的理解和处理各种逻辑Q让大家能更好的ȝ面向对象的方式处理问?C会C会</span></span></p> <img src ="http://www.aygfsteel.com/zhangsenwei/aggbug/290940.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/zhangsenwei/" target="_blank">张森?/a> 2009-08-13 10:16 <a href="http://www.aygfsteel.com/zhangsenwei/archive/2009/08/13/290940.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̫</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">¹</a>| <a href="http://" target="_blank">¡</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">̰</a>| <a href="http://" target="_blank">˹</a>| <a href="http://" target="_blank">ͩ</a>| <a href="http://" target="_blank">˫</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">¡</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ػ</a>| <a href="http://" target="_blank">ǹ</a>| <a href="http://" target="_blank">ƺ</a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank">ͭɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ݰ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">⽭</a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>