探索 JavaBean(实体类)的奇妙世界

目录

一、啥是 JavaBean(实体类)

(一)定义与特点

(二)为啥要用 JavaBean

二、动手写一个 JavaBean(实体类)

(一)创建一个简单的用户 JavaBean

(二)使用这个 JavaBean

三、JavaBean 在实际开发中的应用场景

(一)在 Web 开发中的应用

(二)在数据持久化中的应用


宝子们,今天咱来聊聊 Java 编程里一个超重要的概念 ——JavaBean,也就是实体类。这玩意儿在 Java 开发中无处不在,就像是建筑里的砖块,虽然不起眼,但却是构建各种应用程序的基础。

一、啥是 JavaBean(实体类)

(一)定义与特点

简单来说,JavaBean 就是一个遵循特定设计模式的普通 Java 类。它通常具有以下特点:

  • 私有属性:把类的属性用 private 修饰,这就像是给属性穿上了一层保护衣,防止外部随意访问和修改,保证数据的安全性和完整性。比如说,一个代表用户的 JavaBean 有 userName 和 password 这样的属性,肯定不能让随便哪个程序都能直接修改密码吧,所以要用 private 藏起来。
  • 公共的 getter 和 setter 方法:为了让外部能够有限制地访问和修改这些私有属性,我们会提供公共的 get 和 set 方法。get 方法用于获取属性的值,set 方法用于设置属性的值。这就像是给属性开了个小窗口,外部只能通过这个窗口来查看和操作属性,而不能直接伸手进去乱摸。
  • 无参构造函数:一般来说,JavaBean 会提供一个无参的构造函数,这样在创建对象的时候就更加灵活方便。就好比你盖房子,有时候可能需要一个空壳子房子(无参构造创建的对象),然后再慢慢往里面填东西(设置属性值)。

(二)为啥要用 JavaBean

  • 代码的规范性和可读性:遵循 JavaBean 的规范写代码,让其他程序员一看就知道这个类是怎么回事,哪些属性可以访问和修改,提高了代码的可读性和可维护性。想象一下,如果大家写的类都乱七八糟,没有统一的规范,那后来的人接手项目可就头大了。
  • 方便数据的传输和存储:在 Java 应用程序中,经常需要在不同的层(比如表现层、业务逻辑层、数据访问层)之间传递数据。JavaBean 就像是一个标准的数据包,能够方便地在这些层之间穿梭,而且可以很容易地被序列化(转换成字节流)存储起来,或者从存储中反序列化(还原成对象)回来。

二、动手写一个 JavaBean(实体类)

(一)创建一个简单的用户 JavaBean

// 这就是我们的用户 JavaBean 类
public class User {// 私有属性,用户名字private String userName;// 私有属性,用户密码private String password;// 私有属性,用户年龄private int age;// 无参构造函数public User() {}// 有参构造函数,方便在创建对象时直接初始化属性public User(String userName, String password, int age) {this.userName = userName;this.password = password;this.age = age;}// getter 和 setter 方法public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

宝子们看,这个 User 类就是一个典型的 JavaBean。通过 private 修饰属性,保证了数据的安全;提供了公共的 get 和 set 方法,让外部可以合适地访问和修改属性;还有无参和有参构造函数,方便创建对象。

(二)使用这个 JavaBean

public class JavaBeanExample {public static void main(String[] args) {// 使用无参构造函数创建一个 User 对象User user1 = new User();// 通过 setter 方法设置属性值user1.setUserName("张三");user1.setPassword("123456");user1.setAge(25);// 使用有参构造函数直接创建并初始化一个 User 对象User user2 = new User("李四", "abcdef", 30);// 通过 getter 方法获取属性值并打印System.out.println("用户 1 的名字:" + user1.getUserName());System.out.println("用户 2 的密码:" + user2.getPassword());}
}

在 main 方法里,我们演示了如何创建 User JavaBean 的对象,以及如何使用 get 和 set 方法来操作对象的属性。是不是很简单?

三、JavaBean 在实际开发中的应用场景

(一)在 Web 开发中的应用

在 Web 应用程序中,当用户提交一个表单时,后台的 Java 代码通常会把表单数据封装成一个 JavaBean 对象。比如说,一个用户注册的表单,包含用户名、密码、邮箱等信息,后台就可以创建一个 UserRegistrationBean,把表单里的各个字段的值通过 set 方法设置到这个 JavaBean 中,然后再把这个对象传递给业务逻辑层进行处理,比如验证数据的合法性、把用户信息保存到数据库等。

(二)在数据持久化中的应用

当我们要把数据存储到数据库或者从数据库读取数据时,JavaBean 也发挥了重要作用。比如我们有一个 Product JavaBean,代表商品信息,包含商品的名称、价格、库存等属性。在数据访问层,我们可以把从数据库查询到的结果集(每一行数据)封装成一个个 Product 对象,然后再把这些对象返回给业务逻辑层进行进一步的处理。反过来,当要把一个新的商品信息保存到数据库时,也可以先创建一个 Product 对象,设置好属性值,然后在数据访问层把这个对象的属性值提取出来,拼成 SQL 语句插入到数据库中。

宝子们,JavaBean(实体类)虽然看起来简单,但却是 Java 开发中不可或缺的一部分。掌握好它,能让你的代码更加规范、易于维护和扩展,为你在 Java 编程的道路上打下坚实的基础。如果在学习过程中有啥问题,随时回来看看这篇文章,或者去网上搜搜更多的资料,加油哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/65500.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mac中idea中英文版本切换

1.快捷键command,或者 2.找到插件(plugins),搜索chinese,安装 第一次安装好点击应用会提示重启,直接重启就好了,如果已经安装过,只需要切换中英文 3.中英文切换 外观与行为&#xf…

单片机库函数-io输出操作

1、需要使用模块 使用库函数做跑马灯,要用到: misc.h misc.c 时钟模块: stm32f10x_rcc.h stm32f10x_rcc.c gpio模块: 头文件:stm32f10x_gpio.h 源文件:stm32f10x_gpio.c 2、库函数 2.1、初始化GPIO void GPIO_Init(GPIO_TypeDef* …

贝叶斯神经网络(Bayesian Neural Network)

最近在研究贝叶斯神经网络,一些概念一直搞不清楚,这里整理一下相关内容,方便以后查阅。 贝叶斯神经网络(Bayesian Neural Network) 贝叶斯神经网络(Bayesian Neural Network)1. BNN 的核心思想2. BNN 的优化目标3. BNN 的结构与特点4. BNN 的训练过程5. BNN 的优缺点6. …

预计5.2.1版本的SharedingSphere Hint指定数据库未生效问题

配置文件展示 shardingsphere:props:sql-show: falsedatasource:names:datacenter1,datacenter2,datacenter3rules:sharding:tables:shape:actual-data-nodes: datacenter$->{1..3}.shape$->{0..7}key-generate-strategy:column: idkey-generator-name: snowflaketable-s…

【Spring】基于注解的Spring容器配置——@Scope注解

在使用Spring框架时,理解Bean的作用域(Scope)是非常重要的。Bean的作用域决定了Spring容器如何创建和管理Bean的生命周期。正确地使用作用域可以提高应用的性能和资源利用率,同时也能确保应用的正确性。 在大型企业级应用中&…

关于Promise的小测验

关于Promise的小测验 题目 // 编码挑战 #1 /* 在这个挑战中,你将构建一个函数 ‘whereAmI’,该函数仅基于 GPS 坐标显示国家信息。为此,你将使用第二个 API 来对坐标进行地理编码。 以下是你的任务: 第一部分 创建一个函数 ‘whe…

“邂逅”良渚遗址 “巧造”苏绣非遗 《牧神记》焕新有“玄机”

由bilibili与玄机科技联合出品的动画番剧《牧神记》自10月27日上线以来,累计收获了1.2亿播放量、超150万用户追番,B站评分9.7分,多次入选豆瓣口碑华语剧集周榜的动画冠军。放眼今年的国产新番,成绩相当可观。巧妙融合诸多传统元素…

AI文献阅读ChatDOC 、ChatPDF 哪个好?

作为AI产品的深度使用者,基本每天都在使用AI。AI诞生后仿佛给所有的产品打开了新世界大门。当然AI在文献阅读方面自然也不会缺席。 先来简单对比一下ChatDOC vs ChatPDF 从表格里可以看到ChatDOC与ChatPDF都是基于GPT的产品,但在功能上ChatDOC还是比Chat…

Flutter DragTarget拖拽控件详解

文章目录 1. DragTarget 控件的构造函数主要参数: 2. DragTarget 的工作原理3. 常见用法示例 1:实现一个简单的拖拽目标解释:示例 2:与 Draggable 结合使用解释: 4. DragTarget 的回调详解5. 总结 DragTarget 是 Flutt…

【Rhino】【Python】将beam线的端点沿着自身方向移动到column轮廓线上

#codingutf-8 import rhinoscriptsyntax as rs import Rhino.Geometry as rgdef extend_lines_to_columns():print("开始运行脚本...")# 定义要处理的图层名称beam_layer "Make2D::Visible::Curves::02 STR. SOLID MAMBER::1*.1.BEAM MAIN (UNIONED)"colu…

Huggingface数据集采样之后得到的arrow文件无法用Dataset.load_from_disk加载解决方法

问题起源 我现在有数据集 我想要采样1/10构成一个新的数据集。起初我只是简单的使用save_to_disk保存,如下代码: from datasets import Dataset import os# 原数据集路径 source_dataset_path "~/.cache/huggingface/datasets/allenai___tulu-3-…

js版本之ES6特性简述【Proxy、Reflect、Iterator、Generator】(五)

目录 Proxy Reflect 静态方法 部分实例 Iterator 实际开发迭代器的使用实例 迭代器(Iterator)应用 Generator Proxy Proxy 是 ES6 中新增的对象 Proxy 是JavaScript中的内置对象,它提供了一种机制,可以拦截并自定义各种…

React 组件通信完整指南 以及 自定义事件发布订阅系统

React 组件通信完整指南 1. 父子组件通信 1.1 父组件向子组件传递数据 // 父组件 function ParentComponent() {const [data, setData] useState(Hello from parent);return <ChildComponent message{data} />; }// 子组件 function ChildComponent({ message }) {re…

mac中idea菜单工具栏没有git图标了

1.右击菜单工具栏 2.选中VCS&#xff0c;点击添加 3.搜索你要的工具&#xff0c;选中点击确定就添加了 4.回到上面一个界面&#xff0c;选中你要放到工具栏的工具&#xff0c;点击应用就好了 5.修改图标&#xff0c;快捷键或者右击选中编辑图标 6.选择你要的图标就好了

Linux实验报告7-文件管理

目录 一&#xff1a;实验目的 二&#xff1a;实验内容 (1)查看/etc/inittab文件的权限属性&#xff0c;并指出该文件的所有者以及文件所属组群。 (2)新建文件test&#xff0c;设置文件权限为r--r-----。 (3)新建文件test2&#xff0c;设系统中有用户study和用户组studygr…

CPT203 Software Engineering 软件工程 Pt.4 软件设计(中英双语)

文章目录 6. 设计概念6.1 Principle6.2 Concepts6.2.1 General design concepts&#xff08;常见的设计概念&#xff09;6.2.1.1 Abstraction&#xff08;抽象&#xff09;6.2.1.2 Modularity&#xff08;模块化&#xff09;6.2.1.3 Functional independence&#xff08;功能独…

JSON 系列之4:JSON_VALUE

JSON_VALUE的作用&#xff0c;简单来说&#xff0c;就是从JSON到SQL&#xff1a; SQL/JSON function JSON_VALUE selects JSON data and returns a SQL scalar or an instance of a user-defined SQL object type or SQL collection type (varray, nested table) 所以&#xff…

[wzoi]Help Bubu

题目描述: Bubu的书架上乱成一团了&#xff01;请帮助他一下吧&#xff01; 他的书架上一共有n本书。我们定义混乱值是连续相同高度书本的段数。例如&#xff0c;如果输的高度是30,30,31,31,32&#xff0c;那么混乱值为3,30,32,32,31的混乱度也是3&#xff0c;但31,32,31,32,…

嵌入式AI STM32部署卷积神经网络的魔法棒

基于STM32部署卷积神经网络控制设备方案-AI项目-STM32部署卷积神经网络方案-红外信号复制方案-轨迹识别 项目包含下述内容 硬件部分、PCB制板、BOM表文件等等 (Hardware)外壳、3D打印文件 (3D_print)软件程序、用于电子法棒的软件程序 AI Keil等等(Software)QT上位机动作识别…

【代码分析】Unet-Pytorch

1&#xff1a;unet_parts.py 主要包含&#xff1a; 【1】double conv&#xff0c;双层卷积 【2】down&#xff0c;下采样 【3】up&#xff0c;上采样 【4】out conv&#xff0c;输出卷积 """ Parts of the U-Net model """import torch im…