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。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jinhao2003/archive/2008/03/18/2193876.aspx
分享到:
相关推荐
总结一下,JavaBean、DTO、POJO和PO各有其特定的用途: - JavaBean主要用于封装业务逻辑和数据,方便在JSP中使用,同时也适用于代码复用。 - DTO专注于数据传输,不包含业务逻辑,常用于系统间的数据交换。 - POJO是...
### MVC设计模式详解 #### 一、MVC设计模式概念 MVC模式,全称Model-View-Controller(模型-视图-控制器)模式,是一种广泛应用于软件...同时,了解POJO和JavaBean的区别有助于更好地理解MVC架构中的数据处理逻辑。
- **POJO 转 PO**:持久化过程中,POJO 通常会被转换为 PO,以便于与数据库交互。 - **POJO 转 DTO**:当需要跨层传输数据时,POJO 可能会被转换为 DTO。 - **POJO 转 VO**:当数据需要展示给用户时,POJO 会被转换...
- **生成POJO类并添加注解**:在这种情况下,选择源码包和预设的Java包,然后勾选`Create pojo<>db`以及`add hibernate mapping annotations to pojo`。这样,Hibernate会自动生成包含JPA注解的Java实体类,无需...
在Hibernate中,定义了.hbm.xml文件和POJO,是跟数据库中的表相对应的。然后定义DAO,这些是跟数据库打交道的类,它们会使用PO。 调用流程 在Struts+Spring+Hibernate的系统中,对象的调用流程是: jsp -> Action...
Nginx配置文件详解Linux 安装JenkinsJAVA 多线程详解java 多线程学习How to create a Hello World with IntelliJ and Aspect JJava各种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)的区分Java finally...
- **持久化对象(PO)**: 在Hibernate中,用于存储数据的JavaBean对象被称为POJO(Plain Old Java Objects)。为了实现对象与数据库表之间的映射,需要定义POJO类以及相应的映射文件。 - **示例**: 假设有一个User类...
本文档主要介绍了如何使用MyEclipse集成开发环境进行Hibernate的逆向工程,自动生成持久化对象(PO)及其对应的映射文件,进而构建高效的Hibernate应用。 #### 二、准备工作 1. **环境搭建**:确保安装了MyEclipse...
借助MappedStatement中的结果映射关系,将返回结果转化成HashMap、JavaBean等存储结构并返回。 Mybatis的框架原理图如下所示: Mybatis的简单实例包括以下几个步骤: 1. 导入相关jar包以及Mybatis运行环境核心...