barriers / 阅读 / 详情

什么是PlainObject

2023-08-24 11:43:54
共2条回复
瑞瑞爱吃桃

  在Java应用程序中的角色使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,有时可以作为value object或dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。   POJO是Plain Ordinary Java Objects的缩写不错,但是它通指没有使用Entity Beans的普通java对象,可以把POJO作为支持业务逻辑的协助类。   POJO有一些private的参数作为对象的属性。然后针对每个参数定义了get和set方法作为访问的接口。例如:   public class User {   private long id;   private String name;   public void setId(long id) {   this. id = id;   }   public void setName(String name) {   this. name=name;   }   public long getId() {   return id;   }   public String getName() {   return name;   }   }   POJO对象有时也被称为Data对象,大量应用于表现现实中的对象。   错误的认识:   POJO是这样的一种“纯粹的”JavaBean,在它里面除了JavaBean规范的方法和属性没有别的东西,即private属性以及对这个属性方法的public的get和set方法。我们会发现这样的JavaBean很“单纯”,它只能装载数据,作为数据存储的载体,而不具有业务逻辑处理的能力。   真正的意思:   POJO = "Plain Old Java Object",是MartinFowler等发明的一个术语,用来表示普通的Java对象,不是JavaBean, EntityBean 或者 SessionBean。POJO不但当任何特殊的角色,也不实现任何特殊的Java框架的接口如,EJB, JDBC等等。   即POJO是一个简单的普通的Java对象,它包含业务逻辑或持久逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现

我不懂运营

The PlainObject type is a JavaScript object containing zero or more key-value pairs.

这是jQuery的官方定义:含有零个或多个的key/value对

The jQuery.isPlainObject() method identifies whether the passed argument is a plain object or not, as demonstrated below:

var a = [];

var d = document;

var o = {};

typeof a; // object

typeof d; // object

typeof o; // object

jQuery.isPlainObject( a ); // false

jQuery.isPlainObject( d ); // false

jQuery.isPlainObject( o ); // true

相关推荐

java中的POJO是什么意思?

POJO(Plain Ordinary Java Object)是简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。1、它通指没有使用Entity Beans的普通java对象,可以把POJO作为支持业务逻辑的协助类。2、POJO实质上可以理解为简单的实体类,顾名思义POJO类的作用是方便程序员使用数据库中的数据表,对于广大的程序员,可以很方便的将POJO类当做对象来进行使用,当然也是可以方便的调用其get,set方法。POJO类也给我们在struts框架中的配置带来了很大的方便。POJO 和JavaBean是我们常见的两个关键字,一般容易混淆。POJO全称是Plain Ordinary Java Object / Pure Old Java Object,中文可以翻译成:普通Java类,具有一部分getter/setter方法的那种类就可以称作POJO,但是JavaBean则比 POJO复杂很多。Java Bean 是可复用的组件,对 Java Bean 并没有严格的规范,理论上讲,任何一个 Java 类都可以是一个 Bean 。但通常情况下,由于 Java Bean 是被容器所创建(如 Tomcat) 的,所以 Java Bean 应具有一个无参的构造器,另外,通常 Java Bean 还要实现 Serializable 接口用于实现 Bean 的持久性。 Java Bean 是不能被跨进程访问的。JavaBean是一种组件技术。
2023-08-17 14:37:071

pojo与DTO的区别是什么?

POJO是一种概念或者接口,身份及作用随环境变化而变化,DTO是经过处理后的PO,可能增加或者减少PO的属性,一个POJO持久化以后就是PO。
2023-08-17 14:37:141

什么是pojo?和vo有什么区别?

pojo 是Plain Old Java Object的缩写,就是javabean。vo是view object的缩写,就是用于页面显示的javabean。vo就是pojo。只是通途上的用于携带页面显示信息。
2023-08-17 14:37:222

电动牙刷哪个牌子的质量好?POJO这个牌子的质量怎么样?

您好,POJO电动牙刷整体白色机身外形一眼看上去简单大方,机身和牙刷头连接后整体线条会显得非常的流畅自然,牙刷整体造型白看不厌。牙刷机身采用了五喷五烤环保喷油工艺,油面手感好,抗压抗磨,实测泡水三天三夜不起泡,别家的泡水24小时就会起泡。是智能声波电动牙刷,适合于各种人群。得益于POJO的高效能传动技术,大大增加了刷头的自由摆动幅度;同时在大量减震材料的加持下,使用更稳不震手。配合Mace高效能磁悬浮声波电机,最大转速高达45000转/分钟,噪音却低至50分贝。POJO智能净齿技术,降低了使用电动牙刷的不适感,搭配5种清洁模式x3种档位力度选择,共15种刷牙模式,还有旅行模式和低电量提醒模式,功能强大,能够满足不同人群对刷牙动力的不同需求。采用全智能感应充电,一种安全省心的充电方式,搭配2000mAH大电池,续航时间更长,无线充电一次,续航久到你可能忘记它需要充电。刷头采用612杜邦刷毛,深入齿缝清洁不伤牙,刷毛顶部磨圆处理,减少牙龈伤害,3D立体裁剪,贴合牙齿弧度。IPX7级全身防水,经过高度严苛的质检步骤,实现真正的防水性能,一款沐浴时可以使用的电动牙刷。
2023-08-17 14:37:291

哪个电动牙刷好用?POJO品牌怎么样,它与传统牙刷相比有哪些优点?

随着生活水平的不断提高,国人越来越重视口腔卫生,表现在两个方面:一是越来越多的人重视口腔健康;二是口腔清洁工具的种类越来越多,效果也在不断提升,就牙刷而言,从普通的手动牙刷到现在的电动牙刷都有,目前国内电动牙刷的普及率越来越高。之前我用的都是普通牙刷。说实话,用了POJO电动牙刷就再也不想换普通牙刷了,我没有耐心去刷很久,很适合像我一样又想好看(牙白)又懒得刷的人,也很适合吸烟喝茶的;电动牙刷的清洁力度大大的高于普通牙刷。Q:电动牙刷有什么优点?磁悬浮声波电机,高振频POJO电动牙刷是美国珀哲口腔医疗机构监制授权的,采用磁悬浮声波电机,振频可达4.5万次/每分钟,手柄震动小,使用中噪音低于50分贝,比起传统牙刷,POJO电动牙刷可以多清理38%的牙菌斑,它的清洁能力已经得到口腔专家的一致肯定。智能定时,5x3种模式POJO电动牙刷有30秒智能换区提醒和2分钟定时关机功能,用来提醒我们刷牙的时间;并且拥有5种档位模式,每种模式有3种力度,搭配巴氏刷牙法,可以针对不用牙龈敏感程度的用户,总有一种模式适合你。杜邦刷头,机身工艺POJO电动牙刷刷头采用的是612杜邦刷毛,3D立体裁剪,刷毛顶部磨圆处理,同时机身采用五喷五烤环保油喷油工艺,油面手感好,抗压抗磨性经久耐用,杜绝了长期使用后导致机身发霉变黑。防水续航POJO电动牙刷拥有出众的防水性能,IPX7级防水;其次是续航,自然是越久越好,POJO电动牙刷拥有2000mAH电池,用电磁感应式充电一次,续航可达半年。电动牙刷对比普通牙刷的这些优点,大家在选购时,要根据自己的口腔的情况,还有关注那些必要的参数来挑选适合自己的产品。
2023-08-17 14:37:371

pojo电动牙刷是仿造soro吗?

POJO源自美国珀哲口腔医疗机构,15种清洁模式刷牙轻松无压力。还有个特点,用过的人会发觉,它摆动的幅度会比其他的大,可别小看这个细节,这样更加有效清洁牙缝,牙刷时间也减少很多,因为它的最大频率能达到45000转,而SORO只有41000转。
2023-08-17 14:37:441

电动牙刷pojo和soro区别?

1、电动牙刷是一种电动家用用品,用于牙齿清洁,有助于牙齿保持健康。POJO清洁牙齿表面上的污垢,并以某种方式护理牙齿,以减少牙菌斑和牙龈炎的发生。2、电动牙刷的工作原理是:电动牙刷通过电源驱动,将牙刷头的毛刷上的清洁剂带到牙齿表面,然后利用毛刷的摩擦力,清洁牙齿表面。POJO的工作原理是:它将牙刷头上的毛刷放入牙齿表面,利用电磁学原理,将毛刷振动起来,同时施加超声波,洗涤牙齿表面,从而达到清洁牙齿的效果。3、电动牙刷更容易使用,清洁效果也比较好,但不能有效减少牙菌斑和牙龈炎的发生。POJO可以有效减少牙菌斑和牙龈炎的发生。希望对你有所帮助。
2023-08-17 14:37:511

电动牙刷pojo和soro相比哪个好?

您好,很高兴为您解答,电动牙刷POJO和SORO相比,POJO电动牙刷清洁效果更好、效率更高。它的牙刷头纵向摆幅达到了21mm,接触面更宽,清洁更干净。牙刷的刷毛密度和柔软度也处理得很好,清洁力度均匀更舒适,高频震动索引强大水流,能全面照顾到每颗牙齿表面和牙缝深处。我之前也是用电动牙刷,但是前后、左右、上下都清洁干净大概需要5分钟。换了这款电动牙刷之后,2分钟就能完成全面的清洁。
2023-08-17 14:37:592

java里pojo到底是类还是对象?字面意思是一个对象,但是有应该是一个类,到底是类还是对象?

POJO一个标准的实体类吧!就是一个对象。
2023-08-17 14:38:082

POJO冲牙器真实使用评价?

POJO冲牙器冲牙器非常好的体验,东西物美价廉,式样美观,用起来也非常方便,天干很好值得大家来购买,非常棒的产品已经用了一段时间了,充一次电可以用好多天,冲击力非常的大,选择强的档位也不会疼,冲得非常非常干净以前以前用牙线等等,感觉效果都不好,现在用洗牙器,洗得非常干净在别人的推荐之下,买了这款冲牙器自己的牙齿需要非常的爱护又能冲牙器的话就不怕牙齿隐藏很多,细菌和雅够了,用下来还是非常方便的
2023-08-17 14:38:271

POJO冲牙器清洁效果好吗?

POJO冲牙器是利用高速脉冲水柱,可以有效清理牙齿的表面、牙缝、牙龈间隙和牙沟。因为牙齿表面并不平整,使用牙刷刷牙只能清洁到牙齿的表面,牙齿相邻的缝隙、牙齿和牙龈的间隙、牙沟里面很难使用牙刷清理干净,容易发生龋齿。使用冲牙器比牙刷能更彻底地清除口腔中残留的菌斑和食物残渣,保持口腔清洁卫生,有效去除口腔异味。另外冲牙器产生的水流能一定程度上按摩牙龈,促进牙龈血液循环。
2023-08-17 14:38:351

如何评POJO冲牙器和飞利浦哪个好?

这一回给大家看一下POJO冲牙器和飞利浦哪个要好些,冲牙器POJO冲牙器和飞利浦都还是比较的好的,款式有些不一样,区别不是很大的推荐大家选择POJO冲牙器冲牙器要更好些,这款POJO冲牙器专业护理洗牙器洁牙器正畸口腔清洁器家用便携水牙线美国技术 白色要新些还是不错的,感谢您的喜爱与认可!好物当然要让家人也体验呢,这款冲牙器采用脉冲水柱,有强劲,标准,轻柔等五档模式可选择洁牙,清洁盲区隐蔽部位残渣和细菌,外观设计符合人体工程学,坚持使用POJO冲牙器可以有效清洁牙菌斑,减少牙龈出血,改善牙龈炎,缓解口腔异味等等哦~性价比也蛮高的,POJO冲牙器在美国深受牙医们的推荐。
2023-08-17 14:38:421

pojo和soro电动牙刷哪个好?

pojo和Soro的主要区别是技术:POJO电动牙刷使用高效智能清洁技术,可以提供更柔软的牙齿清洁服务。而Soro电动牙刷则采用了传统机械技术。另外在转速方面POJO最大频率能达到45000转,而soro只有41000转。
2023-08-17 14:38:503

电动牙刷怎么挑选

1.美国POJO电动牙刷POJO是美国珀哲口腔医学研究所投入巨资进行多维度研发的品牌。POJO电动牙刷采用高性能磁悬浮技术,在POJO智能洁齿技术的加持下,减少了使用电动牙刷的不适感。能温和高效地深入口腔进行清洁,牙缝、龈沟等区域也能轻松解决。同时拥有5种清洁模式和3档力度选择,总共有15种刷牙模式,还有出行模式和低电量提醒模式。功能强大,可以满足不同人对刷力的不同需求。2.荷兰飞利浦飞利浦电动牙刷飞利浦是全球最大的电子品牌之一,在全球也有一定的影响力。还涵盖了照明、医疗等不同领域。飞利浦电动牙刷采用声波振动技术,菱形刷头还能深入牙齿内部进行清洁。3.日本松下松下电动牙刷日本松下是一家知名的世界级综合电子科技集团,也是一个知名的电子品牌。其产品涉及家用电器的不同领域。松下电动牙刷利用高速声波振动清洁口腔。牙刷还配备了三种不同的清洁模式,适合不同口腔的消费者。4.德国博朗BRAUN电动牙刷德国博朗也是知名的电子产品公司。其品种涉及剃须刀、刮毛器、美发用品、厨房电器等领域。世界上第一个机械电动牙刷是由博朗研发的。然后博朗的电动牙刷和欧乐b合并,新开了一个口腔护理单元。
2023-08-17 14:39:011

如何挑选电动牙刷?

电动牙刷牌子比较好的有美国POJO电动牙刷、荷兰PHILIPS飞利浦电动牙刷、日本PANASONIC松下电动牙刷、国内Soocare素士电动牙刷。1、美国POJO电动牙刷POJO是美国珀哲口腔医疗机构斥巨资进行了多维度研发的品牌。POJO电动牙刷采用高效能磁悬浮技术,在POJO智能净齿技术的加持下,降低了使用电动牙刷的不适感,可以温和、高效的深入口腔内部进行清洁,牙缝、牙龈沟等部位也能轻松解决。同时搭配5种清洁模式x3种档位力度选择,共15种刷牙模式,还有旅行模式和低电量提醒模式,功能强大,能够满足不同人群对刷牙动力的不同需求。2、荷兰PHILIPS飞利浦电动牙刷荷兰飞利浦是世界上最大的电子品牌之一,在世界也有一定的影响力,旗下也涉及照明领域、医疗保健等不同领域,飞利浦电动牙刷采用声波震动技术,菱形刷头也可以深入齿间进行清洁。3、日本PANASONIC松下电动牙刷日本松下是知名的世界型电子综合技术集团,也是知名的电子品牌,旗下产品涉及不同的民用家电领域。松下电动牙刷采用高速声波震动清洁口腔,牙刷还搭配了三种不同的清洁模式,适合不同口腔的消费者进行使用。4、德国BRAUN博朗电动牙刷德国博朗也是较为知名的电子产品企业,旗下品种涉及剃须刀、刮毛器、美发产品、厨房小家电等多种领域,世界上第一个机械式电动牙刷就是由博朗进行研发,随后博朗的电动牙刷与欧乐B进行合并,开启了新的口腔护理单元。5、国内Soocare素士电动牙刷素士是小米旗下的一个生态链企业,它也是舒可士旗下的声波电动牙刷品牌,专门为了研发适合客户的口腔产品。素士电动牙刷采用声波震动式模式,可以带动口腔内部的液体进行震动清洁,它还可以利用手机app来控制刷牙模式。电动牙刷选购技巧:1、看刷毛只有刷毛才会直接地接触到我们的牙齿,所以在选购电动牙刷时刷毛是第一考虑要素。不同的人群也要选择不同的刷毛,像成年人就选择软硬适中的刷毛,并不是越硬的清洁效果就越好,过硬的刷毛会导致牙龈萎缩等口腔疾病。POJO的刷头采用612杜邦刷毛,深入齿缝清洁不伤牙,刷毛顶部磨圆处理,减少牙龈伤害,3D立体裁剪,贴合牙齿弧度,且刷头带有美国FDA认证证书。 2、看功能防水等级也是对于电动牙刷来说比较重要的一个点,因为毕竟是常年放在潮湿的浴室,防水比较差的电动牙刷通常寿命也会很短。IPX(n)是电动牙刷的防水等级参数,数字越大代表防水性能越好。市面上大部分的产品都是防浸型,代表在规定的条件下即使浸在水中也不会进入机身。而POJO Mace S1这款电动牙刷做到了IPX7级全身防水,经过高度严苛的质检步骤,实现真正的防水性能,属于性能很高的了,至于那些说全身可冲洗的产品就要注意下了,防水等级基本只有5级左右,比较鸡肋。3、看电池和机身工艺比较低端的电动牙刷是需要自己更换电池的那种,现在大部分产品都是采用的锂电池了,电池直接影响了产品的续航时间,还有最重要的就是安全性。毕竟是需要充电的产品,用低价劣质的就会有安全隐患。POJO Mace S1采用全智能感应充电,一种安全省心的充电方式,搭配2000mAH大电池,续航时间更长,无线充电一次,续航久到你可能忘记它需要充电。再就是机身工艺,因为牙刷长期沾水和牙膏,牙膏具有一定腐蚀性,普通喷漆工艺机身很容易腐蚀起泡。而POJO机身采用了五喷五烤环保油喷油工艺,油面手感好,抗压抗磨,实测泡水三天三夜不起泡,普通的泡水24小时就会起泡。
2023-08-17 14:39:111

电动牙刷哪个牌子好?

POJO Mace S1电动牙刷品牌特色:美国哲口腔医疗机构斥巨资进行了多维度研发的品牌。美国公认“不伤牙”专业度最高的品牌,被众多牙医推荐带火!电动牙刷哪一款好用?我在读口腔护理杂志时知道的POJO,它是美国不伤牙领域专业度最强的品牌,因放话用300%的技术与品质死磕知名品牌的高伤牙率而知名!因其发烧级性能非常强悍,被诸多媒体评为极少可媲美千元机型的牌子,清洁力性能强悍,动力很猛衰减度却很低,震频稳定性极高,所以伤牙率是最低的,对国内复杂人群牙齿兼容性很棒!之所以能做到综合性能超强,关键在于专注!死磕专业!没有多余功能,不搞大量型号,就一款产品死磕数年,优化300多个细节!迭代升级20多个版本!从不做广告却被众多牙医推荐带火了。POJO首创高能效智能净齿技术,如核定震频技术等,实现清洁力优异的同时,经检测降低80%刷牙伤害!还针对震动频率范围及长期衰减度、准确度、偏差值,摆幅角度等百余个项目进行循环测试和优化,在3-5年内各项调校指标的偏差值不高于0.1%!在行业伤牙乱象严重,各种拼颜值、拼低价的当下,POJO以专业、高性能、安全的特质把电动牙刷当医用品研发。为了满足不同护理需求,应对国人复杂多样的口腔环境,扉乐数年积累百万份国人牙齿数据并严格定义120类牙齿标准,严格针对主流9类人群提供定向护理,实现“全场景、高覆盖、高跨度”,40000-45000/min的高跨度震频,15种档位可以精准适应各种口腔护理场景,无论是牙齿敏感,还是需要高强度清洁的人都非常适合。此外,POJO采用千元级的定制高能效磁悬浮马达等核心组件,刷头采用612杜邦刷毛,深入齿缝清洁不伤牙,刷毛顶部磨圆处理,减少牙龈伤害,3D立体裁剪,贴合牙齿弧度,且刷头带有美国FDA认证证书。是千元内最值得入手的品牌。由于品质要求高,POJO产量不大所以经常卖到断货!
2023-08-17 14:39:211

JavaBean,POJO,VO,DTO的区别和联系

JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。众所周知,属性名称符合这种模式,其他Java 类可以通过自身机制发现和操作这些JavaBean 的属性。VO即value object值对象主要体现在视图的对象,对于一个WEB页面将整个页面的属性封装成一个对象。然后用一个VO对象在控制层与视图层进行传输交换。DTO (经过处理后的PO,可能增加或者减少PO的属性):Data Transfer Object数据传输对象主要用于远程调用等需要大量传输对象的地方。比如我们一张表有100个字段,那么对应的PO就有100个属性。但是我们界面上只要显示10个字段,客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO。POJO(POJO是一种概念或者接口,身份及作用随环境变化而变化) :POJO有一些private的参数作为对象的属性。然后针对每个参数定义了get和set方法作为访问的接口plain ordinary java object 简单java对象即POJO是一个简单的普通的Java对象,它不包含业务逻辑或持久逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。POJO对象有时也被称为Data对象,大量应用于表现现实中的对象。 一个POJO持久化以后就是PO。直接用它传递、传递过程中就是DTO直接用来对应表示层就是VO
2023-08-17 14:39:311

pojo与DTO的区别是什么?

ational Mapping(对象关系映射)的缩写。通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据。在O/R Mapping的世界里,有两个基本的也是重要的东东需要了解,即VO,PO。 VO,值对象(Value Object),PO,持久对象(Persisent Object),它们是由一组属性和属性的get和set方法组成。从结构上看,它们并没有什么不同的地方。但从其意义和本质上来看是完全不同的。1.VO是用new关键字创建,由GC回收的。 PO则是向数据库中添加新数据时创建,删除数据库中数据时削除的。并且它只能存活在一个数据库连接中,断开连接即被销毁。 2.VO是值对象,精确点讲它是业务对象,是存活在业务层的,是业务逻辑使用的,它存活的目的就是为数据提供一个生存的地方。 PO则是有状态的,每个属性代表其当前的状态。它是物理数据的对象表示。使用它,可以使我们的程序与物理数据解耦,并且可以简化对象数据与物理数据之间的转换。3.VO的属性是根据当前业务的不同而不同的,也就是说,它的每一个属性都一一对应当前业务逻辑所需要的数据的名称。 PO的属性是跟数据库表的字段一一对应的。PO对象需要实现序列化接口。-------------------------------------------------PO是持久化对象,它只是将物理数据实体的一种对象表示,为什么需要它?因为它可以简化我们对于物理实体的了解和耦合,简单地讲,可以简化对象的数据转换为物理数据的编程。VO是什么?它是值对象,准确地讲,它是业务对象,是生活在业务层的,是业务逻辑需要了解,需要使用的,再简单地讲,它是概念模型转换得到的。 首先说PO和VO吧,它们的关系应该是相互独立的,一个VO可以只是PO的部分,也可以是多个PO构成,同样也可以等同于一个PO(当然我是指他们的属性)。正因为这样,PO独立出来,数据持久层也就独立出来了,它不会受到任何业务的干涉。又正因为这样,业务逻辑层也独立开来,它不会受到数据持久层的影响,业务层关心的只是业务逻辑的处理,至于怎么存怎么读交给别人吧!不过,另外一点,如果我们没有使用数据持久层,或者说没有使用hibernate,那么PO和VO也可以是同一个东西,虽然这并不好。 ----------------------------------------------------java的(PO,VO,TO,BO,DAO,POJO)解释PO(persistant object) 持久对象 在o/r映射的时候出现的概念,如果没有o/r映射,没有这个概念存在了。通常对应数据模型(数据库),本身还有部分业务逻辑的处理。可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作。 VO(value object) 值对象 通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.个人觉得同DTO(数据传输对象),在web上传递。 TO(Transfer Object),数据传输对象在应用程序不同tie(关系)之间传输的对象 BO(business object) 业务对象 从业务模型的角度看,见UML元件领域模型中的领域对象。封装业务逻辑的java对象,通过调用DAO方法,结合PO,VO进行业务操作。 POJO(plain ordinary java object) 简单无规则java对象纯的传统意义的java对象。就是说在一些Object/Relation Mapping工具中,能够做到维护数据库表记录的persisent object完全是一个符合Java Bean规范的纯Java对象,没有增加别的属性和方法。我的理解就是最基本的Java Bean,只有属性字段及setter和getter方法!。 DAO(data access object) 数据访问对象 是一个sun的一个标准j2ee设计模式,这个模式中有个接口就是DAO,它负持久层的操作。为业务层提供接口。此对象用于访问数据库。通常和PO结合使用,DAO中包含了各种数据库的操作方法。通过它的方法,结合PO对数据库进行相关的操作。夹在业务逻辑与数据库资源中间。配合VO, 提供数据库的CRUD操作... O/R Mapper 对象/关系 映射 定义好所有的mapping之后,这个O/R Mapper可以帮我们做很多的工作。通过这些mappings,这个O/R Mapper可以生成所有的关于对象保存,删除,读取的SQL语句,我们不再需要写那么多行的DAL代码了。 实体Model(实体模式) DAL(数据访问层) IDAL(接口层) DALFactory(类工厂) BLL(业务逻辑层) BOF Business Object Framework 业务对象框架 SOA Service Orient Architecture 面向服务的设计 EMF Eclipse Model Framework Eclipse建模框架----------------------------------------PO:全称是persistant object持久对象最形象的理解就是一个PO就是数据库中的一条记录。好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。BO:全称是business object:业务对象主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。比如一个简历,有教育经历、工作经历、社会关系等等。我们可以把教育经历对应一个PO,工作经历对应一个PO,社会关系对应一个PO。建立一个对应简历的BO对象处理简历,每个BO包含这些PO。这样处理业务逻辑时,我们就可以针对BO去处理。VO :value object值对象ViewObject表现层对象主要对应界面显示的数据对象。对于一个WEB页面,或者SWT、SWING的一个界面,用一个VO对象对应整个界面的值。DTO :Data Transfer Object数据传输对象主要用于远程调用等需要大量传输对象的地方。比如我们一张表有100个字段,那么对应的PO就有100个属性。但是我们界面上只要显示10个字段,客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VOPOJO :plain ordinary java object 简单java对象个人感觉POJO是最常见最多变的对象,是一个中间对象,也是我们最常打交道的对象。一个POJO持久化以后就是PO直接用它传递、传递过程中就是DTO直接用来对应表示层就是VODAO:data access object数据访问对象这个大家最熟悉,和上面几个O区别最大,基本没有互相转化的可能性和必要.主要用来封装对数据库的访问。通过它可以把POJO持久化为PO,用PO组装出来VO、DTO-----------------------------------------------------------------PO:persistant object持久对象,可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作. VO:value object值对象。通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.个人觉得同DTO(数据传输对象),在web上传递. DAO:data access object数据访问对象,此对象用于访问数据库。通常和PO结合使用,DAO中包含了各种数据库的操作方法。通过它的方法,结合PO对数据库进行相关的操作. BO:business object业务对象,封装业务逻辑的java对象,通过调用DAO方法,结合PO,VO进行业务操作; POJO:plain ordinary java object 简单无规则java对象,我个人觉得它和其他不是一个层面上的东西,VO和PO应该都属于它.---------------------------------------------VO:值对象、视图对象PO:持久对象QO:查询对象DAO:数据访问对象DTO:数据传输对象----------------------------------------struts 里的 ActionForm 就是个VO;hibernate里的 实体bean就是个PO,也叫POJO;hibernate里的Criteria 就相当于一个QO;在使用hibernate的时候我们会定义一些查询的方法,这些方法写在接口里,可以有不同的实现类.而这个接口就可以说是个DAO.个人认为QO和DTO差不多.----------------------------------------PO或叫BO,与数据库最接近的一层,是ORM中的O,基本上是数据库字段对应BO中的一个属性,为了同步与安全性考虑,最好只给DAO或者Service调用,而不要用packcode,backingBean,或者BO调。DAO,数据访问层,把VO,backingBean中的对象可以放入。。。。DTO,很少用,基本放入到DAO中,只是起到过渡的作用。QO,是把一些与持久性查询操作与语句放入。。VO,V层中用到的基本元素与方法等放其中。如果要其调用BO,则要做BO转换VO,VO转换BO操作。VO的好处是其页面的元素属性多于BO,可起到很好的作用。。。。-----------------------------------------楼上的不对吧,PO是持久化对象。BO=business object—业务对象。PO可以严格对应数据库表,一张表对映一个PO。BO则是业务逻辑处理对象,我的理解是它装满了业务逻辑的处理,在业务逻辑复杂的应用中有用。VO:value object值对象、view object视图对象PO:持久对象QO:查询对象DAO:数据访问对象——同时还有DAO模式DTO:数据传输对象——同时还有DTO模式
2023-08-17 14:39:511

VO,PO,POJO的定义和区别(求教啊)

本身没什么区别, 从类的定义看不出.主要是用的地方不同, 目的不一样.
2023-08-17 14:40:003

什么是PlainObject

  在Java应用程序中的角色使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,有时可以作为value object或dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。   POJO是Plain Ordinary Java Objects的缩写不错,但是它通指没有使用Entity Beans的普通java对象,可以把POJO作为支持业务逻辑的协助类。   POJO有一些private的参数作为对象的属性。然后针对每个参数定义了get和set方法作为访问的接口。例如:   public class User {   private long id;   private String name;   public void setId(long id) {   this. id = id;   }   public void setName(String name) {   this. name=name;   }   public long getId() {   return id;   }   public String getName() {   return name;   }   }   POJO对象有时也被称为Data对象,大量应用于表现现实中的对象。   错误的认识:   POJO是这样的一种“纯粹的”JavaBean,在它里面除了JavaBean规范的方法和属性没有别的东西,即private属性以及对这个属性方法的public的get和set方法。我们会发现这样的JavaBean很“单纯”,它只能装载数据,作为数据存储的载体,而不具有业务逻辑处理的能力。   真正的意思:   POJO = "Plain Old Java Object",是MartinFowler等发明的一个术语,用来表示普通的Java对象,不是JavaBean, EntityBean 或者 SessionBean。POJO不但当任何特殊的角色,也不实现任何特殊的Java框架的接口如,EJB, JDBC等等。   即POJO是一个简单的普通的Java对象,它包含业务逻辑或持久逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现
2023-08-17 14:40:091

JAVA中POJO的发音是什么?

破酒
2023-08-17 14:40:215

请问下用pojo类的好处是什么?

用pojo类的好处用pojo类做为数据传递,可以让非设计pojo者直观的看到其中的属性,并获得其中的值,而用map传递的话,不够直观,包括属性名、属性类型等
2023-08-17 14:40:382

PO、POJO、BO、AO、VO、DTO、DO、DAO

persistant object:持久层对象 plain ordinary java object:无规则简单java对象 business object:业务对象 由Service层输出的封装业务逻辑的对象。这个对象可以包括一个或多个其它的对象。 比如一个简历,有教育经历、工作经历、社会关系等等。 我们可以把教育经历对应一个 PO ,工作经历对应一个 PO ,社会关系对应一个 PO 。 建立一个对应简历的 BO 对象处理简历,每个 BO 包含这些 PO 。 application object:应用对象 在web层与service层之间抽象的复用对象模型,极为贴近展示层,复用度不高。 它有如下两种解释: (1)value object:值对象 通常用于业务层之间的数据传递,由new创建,由GC回收。 (2)view object:显示层对象 通常是web向模板渲染引擎层传输的对象。 data transfer object:数据传输对象 domain object:领域对象 从现实世界中抽象出来的有形或无形的业务实体。DO和PO在绝大部分情况下是一一对应的,PO是只含有get/set方法的POJO。 data access object:数据访问对象 为业务层提供接口,负责与底层MySQL、Oracle、Hbase等进行交互。
2023-08-17 14:40:451

POJO冲牙器具体有哪些作用呢?

作为冲牙器,优先就是冲牙效果。POJO冲牙器能低噪音持续稳定提供动力输出,多通道脉冲频率,从而拒绝误伤牙龈。同时,开启强劲模式可以去除表面的牙菌斑。同时考虑不同人群需求,有轻柔模式,可按摩牙龈。
2023-08-17 14:41:011

soro和pojo电动牙刷哪个好?

您好,很高兴为您解答!Pojo电动牙刷拥有先进的技术和更高的转速,最大频率能达到45000转,只需短短60秒就能完成牙齿清洁工作。相比之下,Soro电动牙刷提供的技术更简单,而转速比Pojo要低得多。建议根据你的需求和个人偏好来选择电动牙刷。如果你想要更有效的牙齿清洁,建议你选择Pojo,因为它拥有更多的特性和功能,可以达到更好的效果。
2023-08-17 14:41:092

javabean与vo有什么区别??

没区别,喊法不同是为了区分BEAN的功能,别的没有区别?
2023-08-17 14:41:326

名词解释:JDO,POJO,IOC,ORM(写出详细内容)

JDO:数据对象,POJO:简单的Java对象,IOC:国际奥委会或政府间海洋学委员会ORM:数据库
2023-08-17 14:41:531

真实使用!POJO冲牙器到底怎么样?

POJO冲牙器有一些优点和一些缺点。优点方面,POJO冲牙器拥有大水箱容量,可以装更多的水,从而减少注水的次数,使用起来比较方便。其电池容量较大,可以使用得更久。此外,该产品采用智能稳压技术,可以避免水压波动对牙齿造成伤害,更好地保护牙龈和牙齿。脉冲频率可以进行调节,有五种不同的模式可以供用户选择,以满足用户的不同需求。缺点方面,POJO冲牙器的价格较高,对于一些预算有限的用户来说可能不太友好。此外,虽然该产品宣称拥有五种模式,但对于一些用户来说,其中的一些模式可能并没有太大的使用价值。总体来说,POJO冲牙器在设计和功能方面都表现得相当不错,但价格较高。如果你预算充足且需要一个高质量的冲牙器,那么POJO是一个不错的选择。
2023-08-17 14:42:052

java中的POJO是什么意思?

POJO的全称是plain old java object相当于JAVA BEAN,又叫做实体类 entity bean
2023-08-17 14:43:112

java中pojo和实体类是什么关系

POJO和JavaBean是我们常见的两个关键字,一般容易混淆,POJO全称是PlainOrdinaryJavaObject/PureOldJavaObject,中文可以翻译成:普通Java类,具有一部分getter/setter方法的那种类就可以称作POJO,但是JavaBean则比POJO复杂很多
2023-08-17 14:43:321

在java中dto,bo,pojo,po是什么,简单说明

DTO (Data Transfer Object)数据传输对象:主要用于远程调用等需要大量传输对象的地方。BO(business object) 业务对象:从业务模型的角度看,见UML元件领域模型中的领域对象.封装业务逻辑的java对象,通过调用DAO方法,结合PO,VO进行业务操作.POJO(plain ordinary java object) 简单无规则java对象纯 的传统意义的java对象.就是说在一些Object/Relation Mapping工具中,能够做到维护数据库表记录的persisent object完全是一个符合Java Bean规范的纯Java对象,没有增加别的属性和方法.我的理解就是最基本的Java Bean,只有属性字段及setter和getter方法!PO(persistant object) 持久对象在o/r 映射的时候出现的概念,如果没有o/r映射,就没有这个概念存在了.通常对应数据模型(数据库),本身还有部分业务逻辑的处理.可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合.PO中应该不包含任何对数据库的操作.
2023-08-17 14:43:481

POJO冲牙器怎么样?

这款冲牙器深受美国牙医推荐总结起来应该有5方面:一、5种清洁模式,强劲,标准,美白这些功能都有。二、突破性使用磁悬浮电机,整个刷牙体验很强很安静。三、2200mAh大容量电池,续航持久。四、IPX7级别防水,浸泡水中也不担心水会进入内部五、330ML充水量,让你刷一次牙充一次水就足够
2023-08-17 14:43:571

spring boot是一张表对应一个pojo类和一个mapper映射文件吗?

是的,可以通过mybitis的插件实现自动生成po,dao,mapper文件。
2023-08-17 14:44:101

MyEclipse Persistence Tools 怎么生成pojo类

查文档
2023-08-17 14:44:353

POJO冲牙器真实评测?

POJO冲牙器好用的东西必须评测一下,买过好几种牌子的洗牙器,这个是最满意的,功能简洁清晰,水流够急,充得干净,储水容量也很大,不需要频繁加水,续航也是棒棒的,说明里面写的充满一次可以用15分钟,我每次都是用强力档,感觉绝对不止15分钟!用很久都不需要充电,这款冲牙器很好用,一直都用这一款有四个冲头,,清洁的很干净物流很快,性价比超高!值得推荐!
2023-08-17 14:47:231

java中,pojo或者vo什么时候要加有参或无参构造的注解?

你好,很高兴回答你的问题。这两个注解是lombok提供的。帮助你生成无参的构造方法和所有参数的构造方法。具体什么时候要加这两个注解是看你的编码需要了。如果你在实例化对象时不需要使用参数,只需要无参的构造方法,则不需要要使用这两个注解。如果你在实例化对象时需要所有参数赋值,则要使用All的那个注解。如果使用了All的注解后,还需要使用无参的,也需要同时使用No的那个注解。如果有帮助到你,请点击采纳。
2023-08-17 14:47:431

注解怎么设pojo对象的某属性设为默认值

hibernateuff1f
2023-08-17 14:48:302

MyBatis查询结果不能映射到pojo,什么原因?

MyBatis详解 与配置MyBatis+Spring+MySqlMyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。需要使用的Jar包:mybatis-3.0.2.jar(mybatis核心包)。mybatis-spring-1.0.0.jar(与Spring结合包)。MyBatis简介 MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。需要使用的Jar包:mybatis-3.0.2.jar(mybatis核心包)。mybatis-spring-1.0.0.jar(与Spring结合包)。
2023-08-17 14:48:411

提取模块的组成及各部分功能

一个模块由两部分组成,一部分描述接口,一部分描述逻辑功能。即输入是如何影响输出的。pojo模块是一个实体类,实体类就是简单的getset方法构成的实体,这种getset方法可以被随时调用,只要用户想获取数据,就可以调用get方法,想修改数据,就可以用set方法,一个实体类在整个项目当中的存在是至关重要的。service模块是专门调用pojo这个实体类模块的业务层,service是怎么实现的呢,service是通过前端传入的数据,转换为数据语言,再对pojo中的方法进行调用,pojo又能对数据库产生改变或者查询,这就是一层接一层的业务方法。dao模块是数据库操作层,也就是直接对接数据库的,它需要连接数据库,并且对数据库进行增删改查修改。common模块负责提供一些工具给项目进行使用。前端和后端模块,前端是前端页面模块,简单的几个前端页面的话就是JSP做的模块,后端包括两部分,一个是逻辑语言层,一个是数据库。
2023-08-17 14:48:501

为什么所有的 pojo 类属性必须使用包装数据类型

反例:比如显示成交总额涨跌情况,即正负 x%,x 为基本数据类型,调用的 RPC 服务,调用不成功时,返回的是默认值,页面显示:0%,这是不合理的,应该显示成中划线-。所以包装数据类型的 null 值,能够表示额外的信息,如:远程调用失败,异常退出。
2023-08-17 14:49:001

${pojo.title!}

<span>${pojo.title!}</span>多了个感叹号,后面不需要感叹号的,这个是el表达式,是取pojo对象的tiitle属性
2023-08-17 14:49:392

关于Mybatis的mapper.xml文件中从pojo获取属性值的问题

在实际开发项目中,我们查询条件不可能很单一,查询字段可能包括很多字段,比如:查询条件可以有用户信息,商品信息,订单信息等。 这里我们的基础实体类是用户类,我在这个基础上扩展他,之后包装他作为我们的查询条件。 包装类:用于parameterType UserMapper接口 mapper配置文件编写sql: 上图中可看到在mapper.xml配置文件中用 userCustom.username 获取父类中的username私有成员变量,实际上是通过 userCustom.getUsername() 方法获得的. 以下文章通过一个简单的例子来看看ognl的用法 另还有一篇文章展示了mybatis中的ognl教程 通过以上的了解,现在把User类中的 getUsername 方法注释掉 再次运行程序,得到以下报错: 接着,我们仍旧保留对 getUsername 方法的注释,但是现在把 username 设置为 public 再次运行测试程序,得到以下正常的结果显示 以上就证明了在mapper.xml中, userCustom.username 实际上是通过调用了 userCustom.getUsername() 方法获得了user中的username属性,而不是userCustom直接访问父类User中的private修饰的username成员变量。
2023-08-17 14:49:511

resultmap与resulttype有什么区别

使用mybatis进行数据库连接操作时对于SQL语句返回结果的处理通常有两种方式,一种就是resultType;另一种就是resultMap:1、resultType:当使用resultType做SQL语句返回结果类型处理时,对于SQL语句查询出的字段在相应的pojo中必须有和它相同的字段对应,而resultType中的内容就是pojo在本项目中的位置。因此对于单表查询的话用resultType是最合适的2、resultMap:当使用resultMap做SQL语句返回结果类型处理时,通常需要在mapper.xml中定义resultMap进行pojo和相应表字段的对应。resultMap对于一对一表连接的处理方式通常为在主表的pojo中添加嵌套另一个表的pojo,然后在mapper.xml中采用association节点元素进行对另一个表的连接处理3、resultType是直接表示返回类型的(对应着我们的model对象中的实体)resultMap则是对外部ResultMap的引用(提前定义了db和model之间的隐射key-->value关系),但是resultType跟resultMap不能同时存在。
2023-08-17 14:50:213

后端pojv ,entity,ov 什么意思

pojo(Plain Ordinary Java Object):普通的Java对象,其实就是简单的JavaBean实体类。对应数据库里的某一张表,pojo里的每一个属性都和该表中的字段一 一对应。vo(value object):值对象,又称表现层对象,对应展示界面的数据对象。比如一个前台展示的数据列表,这个列表中的姓名和用户名分别是存在于两个表中的数据,此时数据显示时查询语句用到了多表查询sql,查询出来的数据包含了两个表的字段,此时使用一个JavaBean实体类无法存储返回结果中两个表的数据字段,因此将这两个表中使用到的字段或属性重新封装为一个新的JavaBean,这个JavaBean就叫做vo。通俗来说,vo就是一个自定义的、多个表的属性或字段的集合。entity(实体类):A .就是属性类,通常定义在model层里面B. 一般的实体类对应一个数据表,其中的属性对应数据表中的字段。好处:1.对对象实体的封装,体现OO思想。2.属性可以对字段定义和状态进行判断和过滤3.把相关信息用一个实体类封装后,我们在程序中可以把实体类作为参数传递,更加方便。C. 说白了就是为了让程序员在对数据库操作的时候不用写SQL语句D. 就是一个数据库表生成一个类这样做对数据库操作起来方便编写代码较少 提高效率 可以使程序员专注逻辑关系E. 实体类就是把对某一个表的操作全写在一个类中.
2023-08-17 14:50:391

根据pojo类生成数据库表有几种方式

只要在你的hibernate配置文件里加入:<!-- Drop and re-create the database schema on startup --><property name="hbm2ddl.auto">update</property>Hibernate就可以根据定义的映射关系自动更新数据库表结构啦~
2023-08-17 14:51:171

hibernate中POJO一定要实现Serializable接口吗

可以不实现的 Serializable接口可以让虚拟机知道该对象可以被网络传输 比如分布式开发就需要实现
2023-08-17 14:52:381

hibernate 处理 mysql longtext ,在pojo 和 hbm.xml 中都用什么类型

org.springframework.orm.hibernate3.support.ClobStringType或者org.springframework.orm.hibernate3.support.BlobStringType
2023-08-17 14:52:461

映射数据库表什么意思?

sql数据库用户映射是什么意思,有什么作用。 好像是用户名和登录名之间的联系,用来设置登录名权限的 数据库表映射问题 select * into B.dbo.a from A.dbo.a 就把表同步过去 如果只同步表结构select * into B.dbo.a from A.dbo.a where 1<>1 如何:将实体映射到数据库表 是通过映射文件来映射的。举个简单的例子,例如我有个Teacher实体类(某教学管理系统老师用户): private Integer id;编号 private String name;姓名 private String password;密码 private Date createDate;创建日期 同时,我创建了数据表TEACHER: create table teacher( id number(9) primary key,--编号 name varchar2(20),--姓名 password varchar2(20),--密码 create_date date--创建日期); 这时,怎么关联它们呢?通过加载hibernate框架,我们就可以使用映射文件来关联实体类和数据库了 文件名:Teacher.hbm.xml(必须与实体类名字一致) 内容:> (SQL Server 导入和导出向导)里面,编辑映射和列映射什么意思?干嘛用的? 10分 这个就是讲,要做一个对应. 比方讲你要导入一个表.那假如你想把列1的内容导入到列2里面,你就需要告诉数据库你的这个需求. 此时,便需要添加一个列的映射. 希望对你有所帮助哈~~ SQLSERVER2000里怎么将一个数据库里的表映射到另一数据库 可以在需要被映射的服务器上,添加一个 连接服务器。 这样可以直接通过连接服务器访问你需要的数据表。 如何将含有继承关系的类图映射为关系数据库 库。 通常使用以下两种方法来映射继承关系: 1)将基类映射到一张表,每个子类映射到一张表。在基类对应的表中定义主键,而在 子类对应的表中定义外键。 2)将每个子类映射到一张表,没有基类表。在每个子类的表中包括基类的所有属性。 这种方法适用于子类的个数不多,基类属性比较少的情况。 POJO怎么映射成数据库的表? 用hibernate框架pojo里用hibernate注解 例如:package .ayumi.pojo; import java.io.Serializable; import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.Table; import org.hibernate.validator.NotNull; @Entity 实体对象@Table(name="users") 表名public class Users implements Serializable {private Integer id;private String username;private String password;@Id 主键@Column(name="id") 列名public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}@Column(name="username",length=20) 列名 及 长度设定@NotNull 非空设定public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}@Column(name="password",length=20) 列名 及 长度设定public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}} 这样就对表的字段定义好了然后编写main方法测试类public static void main(String[] args) {Configuration cfg=new AnnotationConfiguration().configure();SchemaExport eport=new SchemaExport(cfg);eport.create(true, true);} 执行,这样就会在hibernate.cfg.xml里配置好的相应连接中对应的数据库下创建成功数据库表 java中的映射是什么意思 简单的说就是把一个数据库表里的字段和一个java类里的属性对应起来,让程序知道这个java类里的这个属性应该是数据库哪个表里的哪个字段。 hibernate是通过什么标签实现实体类和表的映射的 10.1 实体类的映射 从Java的角度讲,实体类就是普通的Java封装类(有人称为POJO有人称为VO)。仅从实体类中的代码信息,Hibernate并不能得知该实体类对应哪个数据表,因此还需要以某种方式配置一下。常用的方式有*.hbm.xml文件配置与@注解配置两种。 hbm.xml文件就是普通的xml文件,hbm为Hibernate Mapping的缩写,这样从文件名上就能判断该文件为Hibernate实体类配置文件。在JPA出现之前,Hibernate都使用hbm.xml文件配置。JPA出现后,推荐使用JPA的@注解配置,因为对于所有的ORM框架,@注解都是通用的。 10.1.1 使用@注解配置实体类 实体类一般有ID、普通属性、 *** 属性等,分别对应数据库的主键、普通列、外键。@注解配置中,实体类用@Entity注解,用@Table指定对应的数据表,用@Id配置主键,用@Column配置普通属性,用@OneToMany、@ManyToOne、@OneToOne、@ManyToMany配置实体间关系等。实体类之间的关于在后面的章节中会做详细介绍。下面编写一个UsersVo类,在该类中使用@注解配置实体类的映射,UsersVo类的代码如下: package .vo; import javax.persistence.*; @Entity 注解Entity表示该类纳入Hibernate管理,能够被持久化 @Table(name = "users") 指定该实体类对应的数据库表名 public class UsersVo { Fields @Id 指定该列为主键。 这个注解用来表示主键类型, auto为数据库自增长类型 @GeneratedValue(strategy = GenerationType.AUTO) private int id; @Column(name = "name") 指定变量对应的数据库表的列为"name" private String name; @Column(name = "age")指定变量对应的数据库表的列为"age" private int age; @Column(name = "tel")指定变量对应的数据库表的列为"tel" private String tel; @Column(name = "address")指定变量对应的数据库表的列为"address" private String address; Constructors public UsersVo() { } public UsersVo(int id) { this.id = id; } public UsersVo(int id, String name, int age, String tel, String address) { this.id = id; this.name = name; this.age = age; this.tel = tel; this.address = address......>>
2023-08-17 14:53:001

java包名称,现在有三层结构,每一层怎么命名,看见比如pojo,impl什么的,自己有点搞不清楚

com.demo.entity //实体类。javabeancom.demo.dao //数据访问类接口com.demo.dao.impl //数据访问类实现类com.demo.biz //业务类接口com.demo.biz.impl //业务类实现类
2023-08-17 14:53:211

前车之覆,后车之鉴 --开源项目经验谈

  随着开源文化的日益普及 参与开源 似乎也变成了一种时尚 一时间 似乎大家都乐于把自己的代码拿出来分享了 就在新年前夕 我的一位老朋友 一位向来对开源嗤之以鼻的J EE架构师竟然也发布了一个开源的J EE应用框架(姑且称之为 X框架 ) 不得不令我惊叹开源文化的影响力之强大     可惜开源并非免费的午餐 把源码公开就意味着要承受众目睽睽的审视 仅仅几天之后 国内几位资深的J EE架构师就得出一个结论 细看之下 X框架不管从哪个角度都只能算一个失败的开源项目 究竟是什么原因让一个良好的愿望最终只能得到一个失败的结果?本文便以X框架为例 点评初涉开源的项目领导者常犯的一些错误 指出投身开源应当遵循的一些原则 为后来的开源爱好者扫清些许障碍      成熟度     打开X框架在SourceFe的项目站点 我们立刻可以看到 在 Development Status 一栏赫然写着 ? Production/Stable 也就是说 作者认为X框架已经成熟稳定 可以交付用户使用 那么 现在对其进行评估便不应该有为时过早之嫌 可是 X框架真的已经做好准备了吗?    打开从SourceFe下载的X框架的源码包 笔者不禁大吃一惊 压缩包里真的只有源码??编译 运行整个项目所需的库文件全都不在其中 从作者自己的论坛得知 该项目需要依赖JBoss JDOM Castor Hibernate等诸多开源项目 笔者只好自己动手下载了这些项目 好一番折腾总算是在Eclipse中成功编译了整个项目     不需要对开源文化有多么深刻的了解 只要曾经用过一些主流的开源产品 你就应该知道 一个开源软件至少应该同时提供源码发布包和二进制发布包 源码包中至少应该有所有必需的依赖库文件(或者把依赖库单独打包发布) 完整的单元测试用例(对于Java项目通常是Junit测试套件) 以及执行编译构建的脚本(对于Java项目通常是Ant脚本或者Maven脚本) 但这些内容在X框架的发布包中全都不见踪影 用户如果想要使用这个框架 就必须像笔者一样手工下载所有的依赖库 然后手工完成编译和构建 而且构建完成之后也无从知晓其中是否有错误存在(因为没有单元测试) 这样的发布形式 算得上是 Production/Stable 吗?     开源必读 便捷构建     开源软件应该提供最便捷的构建方式 让用户可以只输入一条命令就完成整个项目的编译 构建和测试 并得到可运行的二进制程序 对于Java项目 这通常意味着提供完整的JUnit测试套件和Ant脚本 你的潜在用户可能会在一天之内试用所有类似的开源软件 如果一个软件需要他用半天时间才能完成构建 而且还无从验证正确性 无从着手编写他自己的测试用例 这个软件很可能在第一时间被扔到墙角     从SourceFe的项目页面可以看到 X框架的授权协议是Apache License V (APL) 然而在它的发布包中 笔者没有看到任何形式的正式授权协议文本 众所周知 SourceFe的项目描述是可以随时修改的(X框架本身的授权协议就曾经是GPL) 如果发布包中没有一份正式的授权协议文本 一旦作者修改了SourceFe的项目描述 用户又该到哪里去寻找证据支持自己的合法使用呢?    在X框架的源码中 大部分源文件在开始处加上了APL的授权声明 但有一部分源码很是令人担心 例如UtilCache这个类 开始处没有任何授权声明 而JavaDoc中则这样声明作者信息     @author   <a mailto: >David E Jones</a>    也就是说 这个类的源码来自另一个开源项目Ofbiz 值得一提的是 Ofbiz一直是 商业开源 的倡导者 它的授权协议相当严格 凡是使用Ofbiz源码 必须将它的授权协议一并全文复制 像X框架这样复制Ofbiz源码 却删掉了授权协议的行为 实际上已经构成了对Ofbiz的侵权     另外 作者打包用的压缩格式是RAR 而这个压缩格式对于商业用户是收费的 对于一个希望在商业项目中应用的框架项目来说 选择这样一个压缩格式实在算不得明智 而且笔者在源码包中还看到了好几个 jbx文件 这是JBuilder的项目描述文件 把这些JBuilder专用的文件放在源码包中 又怎能让那些买不起或是不想买JBuilder的用户放心呢?更何况 出于朋友的关心 笔者还不得不担心X框架的作者是否会收到Borland公司的律师信呢      开源必读 授权先行     在启动一个开源项目时 第一件大事就是要确定自己的授权协议 并在最醒目的地方用最正式的方式向所有人声明??当然 在此之前你必须首先了解各种开源授权协议 譬如说 GPL(Linux采用的授权协议)要求在软件之上的扩展和衍生也必须继承GPL 因此这种协议对软件的商业化应用很不友好 相反 APL则允许用户将软件的扩展产物私有化 便于商业应用 却不利于开发者社群的发展 作为一个开源项目的领导者 对于各种授权协议的利弊是不可不知的     除了源码本身的授权协议之外 软件需要使用的类库 IDE 解压工具等等都需要考虑授权问题 开源绝对不仅仅意味着 免费使用 开源社群的人们有着更加强烈的版权意识和法律意识 如果你的开源软件会给用户带来潜在的法律麻烦 它离著被抛弃的命运也就不远了     可以看到 不管从法律的角度还是从发布形式的角度 X框架都远够不上 Production/Stable 的水准??说实在的 以它的成熟度 顶多只能算是一个尚未计划周全的开源项目 虽然作者在自己的网站上大肆宣传 但作为一个潜在的用户 我不得不冷静地说 即便X框架的技术真的能够吸引我 但它远未成熟的项目形态决定了它根本无法在任何有实际意义的项目中运用 要让商业用户对它产生兴趣 作者需要做的工作还很多     我刚才说 即便X框架的技术真的能够吸引我 这算得上是一个合理的假设吗?下面 就让我们进入这个被作者寄予厚望的框架内部 看看它的技术水平吧      整体架构     在X框架的宣传页面上 我们看到了这样的宣传词     X框架解决了以往J EE开发存在的诸多问题 EJB难用 J EE层次复杂 DTO太乱 Struts绕人 缓存难做性能低等 X框架是Aop/Ico[注 应为 IoC 此处疑似笔误]的实现 优异的缓存性能是其优点     下面是X框架的整体架构图    educity cn/img_ / / / jpg >   可以看到 在作者推荐的架构中 EJB被作为业务逻辑实现的场所 而POJO被用于实现Fa?ade 这是一个好的技术架构吗?笔者曾在一篇Blog中这样评价它[ ]     让我们先回想一下 使用EJB的理由是什么?常见的答案有 可分布的业务对象 声明性的基础设施服务(例如事务管理) 那么 如果在EJB的上面再加上一 层POJO的Fa?ade 显然你不能再使用EJB的基础设施了 因为完整的业务操作(也就是事务边界)将位于POJO Fa?ade的方法这里 所以你必须重新??以声明性的方式??实现事务管理 安全性管理 remoting 缓存等基础设施服务 换句话说 你失去了 session bean的一半好处 另一方面 可分布的业务对象 也不复存在 因为POJO本身是不能??像EJB那样??分布的 这样你又失去了session bean的另一半好处     继续回想 使用基于POJO的轻量级架构的理由是什么?常见的答案有 易于测试 便于移植 开发 发布 周期短 而如果仅仅把POJO作为一层Fa?ade 把业务逻辑放在下面的EJB 那么你仍然无法轻易地测试业务逻辑 移植自然也无从谈起了 并且每次修改EJB之后必须忍受漫长的发布周期 即便是仅仅把EJB作为O/R mapping 而不是业务逻辑的居所 你最多只能通过DAO封装获得比较好的业务可测性 但 修改 发布 的周期仍然很长 因为仍然有entity bean存在 也就是说 即使是往最好的方面来说 这个架构至少损失了轻量级架构的一半优点     作为一个总结 X框架即便是在使用得最恰当的情况下 它仍然不具备轻量级架构的全部优点 至少会对小步前进的敏捷开发造成损害(因为EJB的存在) 并且没有Spring框架已经实现的基础设施(例如事务管理 remoting 等) 必须重新发明这些轮子 另一方面 它也不具备EJB的任何优点 EJB的声明性基础设施 可分布业务对象等能力它全都不能利用 因此 可以简单地总结说 X框架是一个这样的架构 它结合了EJB和轻量级架构两者各自的短处 却抛弃了两者各自的长处     在不得不使用EJB的时候 一种常见的架构模式是 用session bean作为Fa?ade 用POJO实现可移植 可测试的业务逻辑 这种模式可以结合EJB和POJO两者的长处 而X框架推荐的架构模式 虽然乍看起来也是依葫芦画瓢 效果却恰恰相反 正可谓是 取其糟粕 去其精华      开源必读 架构必须正确     在开源软件的初始阶段 功能可以不完善 代码可以不漂亮 但架构思路必须是正确的 即使你没有完美的实现 参与开源的其他人可以帮助你 但如果架构思路有严重失误 谁都帮不了你 从近两年容器项目的更迭就可以看出端倪 PicoContainer本身只有 个类 数百行代码 但它有清晰而优雅的架构 因此有很多人为它贡献外围的功能 Avalon容器尽管提供了完备的功能 但架构的落伍迫使Apache基金会只能将其全盘废弃     所以如果你有志于启动一个开源项目(尤其是框架性的项目) 务必先把架构思路拿出来给整个社群讨论 只要大家都认可你的架构 你就有机会得到很多的帮助 反之 恐怕你就只能得到无尽的嘲讽了     技术细节    既然整体架构已经无甚可取之处 那么X框架的实现是否又像它所宣称的那样 能够解决诸多问题呢?既然X框架号称是 AOP/IoC的实现 我们就选中这两项技术 看看它们在X框架中的实现和应用情况     IoC    X框架宣称自己是一个 lishixinzhi/Article/program/Java/ky/201311/28779
2023-08-17 14:53:281