POJO,PO,JAVABEAN
来源:互联网 发布:台湾4g网络频段 编辑:程序博客网 时间:2024/04/28 16:02
POJO = pure old java object or plain ordinary java object or what ever.
PO = persisent object 持久对象
就是说在一些Object/Relation Mapping工具中,能够做到维护数据库表记录的persisent object完全是一个符合Java Bean规范的纯Java对象,没有增加别的属性和方法。
首先要区别持久对象(PO)和POJO。
持久对象实际上必须对应数据库中的entity,所以和POJO有所区别。比如说POJO是由new创建,由GC回收。但是持久对象是insert数据库创建,由数据库delete删除的。基本上持久对象生命周期和数据库密切相关。另外持久对象往往只能存在一个数据库Connection之中,Connnection关闭以后,持久对象就不存在了,而POJO只要不被GC回收,总是存在的。
由于存在诸多差别,因此持久对象PO(Persistent Object)在代码上肯定和POJO不同,起码PO相对于POJO会增加一些用来管理数据库entity状态的属性和方法。而ORM追求的目标就是要PO在使用上尽量和POJO一致,对于程序员来说,他们可以把PO当做POJO来用,而感觉不到PO的存在。
JDO的实现方法是这样的:
1、编写POJO
2、编译POJO
3、使用JDO的一个专门工具,叫做Enhancer,一般是一个命令行程序,手工运行,或者在ant脚本里面运行,对POJO的class文件处理一下,把POJO替换成同名的PO。
4、在运行期运行的实际上是PO,而不是POJO。
该方法有点类似于JSP,JSP也是在编译期被转换成Servlet来运行的,在运行期实际上运行的是Servlet,而不是JSP。
Hibernate的实现方法比较先进:
1、编写POJO
2、编译POJO
3、直接运行,在运行期,由Hibernate的CGLIB动态把POJO转换为PO。
由此可以看出Hibernate是在运行期把POJO的字节码转换为PO的,而JDO是在编译期转换的。一般认为JDO的方式效率会稍高,毕竟是编译期转换嘛。但是Hibernate的作者Gavin King说CGLIB的效率非常之高,运行期的PO的字节码生成速度非常之快,效率损失几乎可以忽略不计。
实际上运行期生成PO的好处非常大,这样对于程序员来说,是无法接触到PO的,PO对他们来说完全透明。可以更加自由的以POJO的概念操纵PO。另外由于是运行期生成PO,所以可以支持增量编译,增量调试。而JDO则无法做到这一点。实际上已经有很多人在抱怨JDO的编译期Enhancer问题了,而据说JBossDO将采用运行期生成PO字节码,而不采用编译期生成PO字节码。
文章来源:http://blog.sina.com.cn/s/blog_40981a77010001iz.html
POJO和JavaBean是我们常见的两个关键字,一般容易混淆,POJO全称是Plain Ordinary Java Object / Plain Old Java Object,中文可以翻译成:普通Java类,具有一部分getter/setter方法的那种类就可以称作POJO,但是JavaBean则比POJO复杂很多,JavaBean是一种组件技术,就好像你做了一个扳子,而这个扳子会在很多地方被拿去用,这个扳子也提供多种功能(你可以拿这个扳子扳、锤、撬等等),而这个扳子就是一个组件。
很显然POJO也是JavaBean的一种。一般在web应用程序中建立一个数据库的映射对象时,我们只能称它为POJO。
- POJO,PO,JAVABEAN
- POJO,PO,JAVABEAN
- POJO,PO,JAVABEAN
- Javabean,POJO,PO,VO,DTO
- PO、VO、BO、POJO、EJB、JavaBean
- PO/VO/DTO/POJO以及JavaBean介绍
- PO、VO、DTO、POJO以及JavaBean介绍
- JavaBean, EntityBean, POJO, PO, BO,VO,DTO,DAO 区别
- POJO、PO、VO、DAO、BO、JavaBean都是什么东东????
- javabean,pojo,po,vo,dao的定义与不同
- JavaBean, EntityBean, POJO, PO, BO,VO,DTO,DAO 区别
- Javabean,POJO
- 各种概念POJO、JAVABEAN、DAO、DTO、PO、VO、BO、SSH、EJB
- hibernate中PO(持久化对象)与POJO(普通的JavaBean)
- 各種概念POJO、JAVABEAN、DAO、DTO、PO、VO、BO、SSH、EJB
- 什么是JavaBean、bean? 什么是POJO、PO、DTO、VO、BO ? 什么是EJB、EntityBean?
- Java各种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)的区分
- Java中的对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)
- C# 性能优化方面的总结
- New Adventures in Comet: polling, long polling or Http streaming with AJAX. Which one to choose?
- php中关于sql数据库数据的问题
- Simulated Annealing
- ADO.NET性能优化方面的总结
- POJO,PO,JAVABEAN
- js代码触发事件-函数列表
- [ztj—SQL]动态sql语句
- Bash 使用技巧
- 简单文件传送代码
- 编码转换php
- 动态生成excel
- SSD3-Quiz1
- PHP技巧:php过滤危险html代码