POJO类

java对象 POJO和JavaBean的区别

 

"Plain Ordinary Java Object",简单普通的java对象。主要用来指代那些没有遵循特定的java对象模型约定或者框架的对象

POJO的内在含义是指那些:
有一些private的参数作为对象的属性,然后针对每一个参数定义get和set方法访问的接口。
没有从任何类继承、也没有实现任何接口,更没有被其它框架侵入的java对象。

public class BasicInfoVo {


private String orderId;


private Integer uid;



public String getOrderId() {

return orderId;

}


public void setOrderId(String orderId) {

this.orderId = orderId;

}


public Integer getUid() {

return uid;

}


public void setUid(Integer uid) {

this.uid = uid;

}}
 

 

JavaBean

JavaBean 是一种JAVA语言写成的可重用组件。JavaBean符合一定规范编写的Java类,不是一种技术,而是一种规范。大家针对这种规范,总结了很多开发技巧、工具函数。符合这种规范的类,可以被其它的程序员或者框架使用。它的方法命名,构造及行为必须符合特定的约定:

  1. 所有属性为private。

  2. 这个类必须有一个公共的缺省构造函数。即是提供无参数的构造器。

  3. 这个类的属性使用getter和setter来访问,其他方法遵从标准命名规范。

  4. 这个类应是可序列化的。实现serializable接口。

因为这些要求主要是靠约定而不是靠实现接口,所以许多开发者把JavaBean看作遵从特定命名约定的POJO。

  1. public class UserInfo implements java.io.Serializable{
    
    
    //实现serializable接口。
    
    private static final long serialVersionUID = 1L;
    
    
    private String name;
    
    private int age;
    
    
    //无参构造器
    
    public UserInfo() {
    
    
    }
    
    
    public String getName() {
    
    return name;
    
    }
    
    
    public void setName(String name) {
    
    this.name = name;
    
    }
    
    
    public int getAge() {
    
    return age;
    
    }
    
    
    public void setAge(int age) {
    
    this.age = age;
    
    }

     

  2. //javabean当中可以有其它的方法

  3. public void userInfoPrint(){

  4. System.out.println("");

  5. } }

两者有什么区别

  1. POJO其实是比javabean更纯净的简单类或接口。POJO严格地遵守简单对象的概念,而一些JavaBean中往往会封装一些简单逻辑。

  2. POJO主要用于数据的临时传递,它只能装载数据, 作为数据存储的载体,而不具有业务逻辑处理的能力。

  3. Javabean虽然数据的获取与POJO一样,但是javabean当中可以有其它的方法。

参考链接:https://blog.csdn.net/kobexiaol/article/details/78195856

此文用于个人学习

以下内容为转载,出处已未知:

 

POJO(Plain Old Java Object)这种叫法是Martin FowlerRebecca ParsonsJosh MacKenzie2000年的一次演讲的时候提出来的。
     现在网上对于POJO的解释很多,但是很多都是有错误的或者不够准确。对此我一开始也是存在误区的,我原来是这样理解的:
        POJO是这样的一种“纯粹的”JavaBean,在它里面除了JavaBean规范的方法和属性没有别的东西,即private属性以及对这个属性方法的publicgetset方法。我们会发现这样的JavaBean很“单纯”,它只能装载数据,作为数据存储的载体,而不具有业务逻辑处理的能力。
    所以下面的代码被认为是POJO了。

package com.tongking.spring; 

public class DbHello implements Hello {

       private DictionaryDAO dao;

       public void setDao(DictionaryDAO dao) {

              this.dao = dao;

       }

}

        其实,这样的认为是错误的,我仔细阅读了《POJOs in Action》这本书的有关部分和
POJO的最原始的出处http://martinfowler.com/bliki/POJO.html,
        The term was coined while Rebecca Parsons, Josh MacKenzie and I were preparing for a talk at a conference in September 2000. In the talk we were pointing out the many benefits of encoding business logic into regular java objects rather than using Entity Beans. We wondered why people were so against using regular objects in their systems and concluded that it was because simple objects lacked a fancy name. So we gave them one, and it''s caught on very nicely.

基本的意思是我们要给具有业务逻辑处理的规则的Java对象(regular java objects)起了一个名字——POJO,这些Java对象不是EntityBeans(EJB的一种)。

        我又在http://www.webopedia.com/TERM/P/POJO.htm查到解释如下:

POJO, or Plain Old Java Object, is a normal Java object class (that is, not aJavaBean, EntityBean etc.)  and does not serve any other special role nor does it implement any special interfaces of any of the Java frameworks. This term was coined by Martin Fowler, Rebbecca Parsons and Josh MacKenzie who believed that by creating the acronym POJO, such objects would have a "fancy name", thereby convincing people that they were worthy of use.
        基本意思是说POJO一个正规的Java对象(不是JavaBean,EntityBean等),也不担当任何的特殊的角色,也不实现任何Java框架指定的接口。
        我觉得上面的解释很准确,POJO应该不是我们开始认为的JavaBean,当然更不是EJB,它不应该依赖于框架即继承或实现某些框架类或接口。例如:Struts1中的Action和ActionForm当然不属于POJO了,而在Struts2中的Action由于可以不继承任何的接口,所以在这种情况下Action是POJO,但是Struts2中的Action也可以继承ActionSupport类就不再属于POJO了。POJO里面是可以包含业务逻辑处理和持久化逻辑,也可以包含类似与JavaBean属性和对属性访问的set和get方法的。
     
  最后,我们总结一下给一个定义把,POJO是一个简单的、正规Java对象,它包含业务逻辑处理或持久化逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。

参考:https://blog.csdn.net/huiguixian/article/details/6125877

<think>好的,用户想要查找传智健康项目中的POJO定义或用法示例。我需要先回顾提供的引用内容,看看有没有相关的信息。 引用[1]中提到MemberService的add方法参数是自定义Member,属于com.itheima.pojo包。这说明Member是一个POJO,位于该包下。另外还提到,自定义的包名通常以com.公司名.项目名开头,而不是java.包,这符合标准POJO的命名规范。 引用[2]里CheckItemService接口的add方法使用CheckItem,同样在com.itheima.pojo包中。这里明确提到了CheckItem作为检查项的POJO,包含基本属性和对应的getter/setter方法。 引用[3]主要涉及权限控制和报表部分,没有直接提到POJO,但可能相关会员数量统计的POJO可能在似包结构中。 综合来看,传智健康项目的POJO通常定义在com.itheima.pojo包下,如Member和CheckItem。它们的结构包括私有属性、构造方法、getter/setter方法,可能还有toString()。使用时在服务接口和实现中作为参数传递,如添加会员或检查项。同时,在Dubbo调用时需要指定完整的名,如引用[1]中的例子。 接下来需要整理这些信息,给出具体的示例代码,并说明其用法。同时要确保LaTeX格式正确,生成相关问题,并正确添加引用标识。</think>在传智健康项目中,POJO主要用于封装业务实体数据,遵循标准JavaBean规范。以下是两个典型POJO的定义和用法: ### 一、会员Member定义示例 ```java package com.itheima.pojo; /** * 会员实体 */ public class Member { private Integer id; // 主键 private String name; // 姓名 private String phoneNumber; // 手机号 private String idCard; // 身份证号 // 无参构造 public Member() {} // 全参构造 public Member(Integer id, String name, String phoneNumber, String idCard) { this.id = id; this.name = name; this.phoneNumber = phoneNumber; this.idCard = idCard; } // Getter/Setter方法 public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } // 其他属性似... @Override public String toString() { return "Member{" + "id=" + id + ", name='" + name + '\'' + '}'; } } ``` ### 二、检查项CheckItem定义示例 ```java package com.itheima.pojo; /** * 检查项实体 */ public class CheckItem { private Integer id; private String code; // 项目编码 private String name; // 项目名称 private String type; // 检查型 // 构造方法、Getter/Setter与Member结构似[^2] } ``` ### 三、POJO核心特征 1. **包结构规范**:统一存放在$com.itheima.pojo$包下 2. **属性封装**:所有属性私有化,通过公共方法访问 3. **序列化支持**:实现Serializable接口(未显式展示但实际需要) 4. **无业务逻辑**:仅包含数据字段和基础访问方法 ### 四、实际应用场景 1. **Dubbo服务参数传递**: ```java // 服务接口定义 public interface MemberService { void add(Member member); // 使用POJO作为参数[^1] } // 调用时需要指定全名 Map<String, Object> params = new HashMap<>(); params.put("class", "com.itheima.pojo.Member"); params.put("name", "张三"); ``` 2. **数据库操作载体**: ```xml <!-- Mapper映射文件示例 --> <insert id="addCheckItem" parameterType="com.itheima.pojo.CheckItem"> INSERT INTO t_checkitem(code,name,type) VALUES(#{code},#{name},#{type}) </insert> ``` 3. **前后端数据交互**: ```java @RestController public class CheckItemController { @PostMapping("/checkitems") public Result add(@RequestBody CheckItem checkItem) { // 接收JSON自动转换为POJO对象 checkItemService.add(checkItem); return new Result(true, "添加成功"); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值