我不确定有什么区别。我正在使用Hibernate,在一些书中,他们使用JavaBean和POJO作为可互换的术语。我想知道是否有区别,不仅仅是在Hibernate上下文中,而是在一般概念上。
当前回答
所有的javabean都是pojo,但并非所有的pojo都是javabean。
JavaBean是满足某些编程约定的Java对象:
JavaBean类必须实现Serializable或Externalizable; JavaBean类必须有一个公共的无参数构造函数; 所有JavaBean属性必须有公共setter和getter方法(视情况而定); 所有JavaBean实例变量都应该是私有的。
其他回答
普通的旧java对象
Pojo类是一个没有任何特殊特性的普通类,从技术/框架上完全松散耦合。这个类不是从技术/框架实现的,也不是从技术/框架API扩展的,这个类叫做pojo类。
Pojo类可以实现接口和扩展类,但超类或接口不应该是一种技术/框架。
例子:
1.
class ABC{
----
}
ABC类没有实现或从技术/框架扩展,这就是为什么这是pojo类。
2.
class ABC extends HttpServlet{
---
}
从servlet技术api扩展的ABC类,这就是为什么这不是一个pojo类。
3.
class ABC implements java.rmi.Remote{
----
}
ABC类从rmi api实现,这就是为什么这不是一个pojo类。
4.
class ABC implements java.io.Serializable{
---
}
这个接口是Java语言的一部分,而不是技术/框架的一部分。这是pojo课。
5.
class ABC extends Thread{
--
}
这里线程也是Java语言的类,所以这也是一个pojo类。
6.
class ABC extends Test{
--
}
如果Test类从技术/框架中扩展或实现,那么ABC也不是pojo类,因为它继承了Test类的属性。 如果Test类不是pojo类,那么ABC类也不是pojo类。
7.
这是一个特例
@Entity
class ABC{
--
}
@Entity是hibernate api或jpa api给出的注释,但我们仍然可以将这个类称为pojo类。 在这种例外情况下,带有来自technology/framework的注释的类称为pojo类。
所有的javabean都是pojo,但并非所有的pojo都是javabean。
JavaBean是满足某些编程约定的Java对象:
JavaBean类必须实现Serializable或Externalizable; JavaBean类必须有一个公共的无参数构造函数; 所有JavaBean属性必须有公共setter和getter方法(视情况而定); 所有JavaBean实例变量都应该是私有的。
综上所述:相同点和不同点是:
java beans: Pojo:
-must extends serializable -no need to extends or implement.
or externalizable.
-must have public class . - must have public class
-must have private instance variables. -can have any access specifier variables.
-must have public setter and getter method. - may or may not have setter or getter method.
-must have no-arg constructor. - can have constructor with agruments.
所有JAVA bean都是POJO,但并非所有POJO都是JAVA bean。
POJO:如果这个类可以在底层JDK中执行,而不需要任何外部第三方库的支持,那么它就被称为POJO
JavaBean:如果类只包含带有访问器(setter和getter)的属性,则称为JavaBean。JavaBean通常不包含任何业务逻辑,而是用于保存一些数据。
所有的爪哇人都是POJO,但并非所有POJO都是爪哇人
Java bean是特殊类型的pojo。
以下列出的特色是有道理的
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- 在Jar文件中运行类
- 带参数的可运行?
- 数据挖掘中分类和聚类的区别?
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作
- 在Java流是peek真的只是调试?
- Recyclerview不调用onCreateViewHolder