Java基础-22-基本语法-实体类

实体类(Entity Class)

1. 什么是实体类?

实体类(Entity Class) 是 Java 中用于表示数据库表结构或业务对象的类。它通常包含属性(字段)getter/setter 方法,用于存储和操作数据。实体类是面向对象编程(OOP)与数据库之间的桥梁,常用于 Java Web 开发和 ORM(对象关系映射)框架(如 Hibernate、MyBatis)中。


2. 实体类的特点

  1. 属性私有化(使用 private 关键字修饰)。

  2. 提供 getter 和 setter 方法,用于外部访问和修改属性值。

  3. 通常包含无参构造方法,以便反射或框架使用。

  4. 可使用 toString() 方法 方便调试。

  5. 可实现 Serializable 接口,用于对象的序列化。

  6. 可能会使用注解(如 @Entity@Table@Id 等)以便与数据库表映射。


3. 实体类的基本写法

3.1. 标准 Java 实体类

public class User {private int id;private String name;private int age;// 无参构造方法public User() {}// 全参构造方法public User(int id, String name, int age) {this.id = id;this.name = name;this.age = age;}// Getter 和 Setter 方法public int getId() {return id;}public void setId(int id) {this.id = id;}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;}// 重写 toString 方法,方便输出对象信息@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +", age=" + age +'}';}
}

说明:

  • private 修饰成员变量,保证封装性。

  • 提供 gettersetter 方法,外部可以安全访问和修改数据。

  • toString() 方法用于打印对象的详细信息。

  • 需要时可添加构造方法,方便创建对象。


3.2. 使用实体类

public class TestUser {public static void main(String[] args) {// 使用无参构造方法创建对象User user1 = new User();user1.setId(1);user1.setName("张三");user1.setAge(25);// 使用全参构造方法创建对象User user2 = new User(2, "李四", 30);// 输出对象信息System.out.println(user1);System.out.println(user2);}
}

运行结果:

User{id=1, name='张三', age=25}
User{id=2, name='李四', age=30}

4. 实体类与数据库的映射(JPA 示例)

如果实体类用于数据库存储,可以使用 JPA(Java Persistence API) 进行映射:

import javax.persistence.*;
import java.io.Serializable;@Entity  // 指定这是一个实体类
@Table(name = "users")  // 对应数据库表 "users"
public class User implements Serializable {@Id  // 指定主键@GeneratedValue(strategy = GenerationType.IDENTITY)  // 主键自增private int id;@Column(name = "name", nullable = false, length = 50)  // 映射字段private String name;@Column(name = "age", nullable = false)private int age;// 无参构造public User() {}// 构造方法public User(String name, int age) {this.name = name;this.age = age;}// Getter 和 Setter 方法public int getId() {return id;}public void setId(int id) {this.id = id;}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;}
}

解释:

  • @Entity:声明这是一个 JPA 实体类。

  • @Table(name = "users"):指定映射的数据库表名。

  • @Id:标识主键。

  • @GeneratedValue(strategy = GenerationType.IDENTITY):使用数据库自增主键策略。

  • @Column:指定数据库字段属性。

  • Serializable 接口:支持对象序列化。


5. 实体类的优点

  1. 封装数据:将数据和行为封装在类中,符合 OOP 设计原则。

  2. 提高代码复用性:实体类可以在多个模块中使用。

  3. 方便 ORM 框架管理数据库:如 Hibernate、MyBatis。

  4. 便于维护:结构清晰,易于管理。


6. 适用场景

  1. Java Web 开发:如 Spring Boot 结合 JPA、Hibernate 进行数据库操作。

  2. 数据传输:实体类用于存储和传输数据(如 JSON、XML 解析)。

  3. 微服务架构:用于 DTO(数据传输对象),实现数据封装。

  4. 缓存管理:实体类可存入 Redis 进行缓存管理。


7. 总结

实体类是 Java 开发中的重要组成部分,它用于表示数据库中的数据结构,并与 ORM 框架配合,实现对象与数据库表的映射。通过封装属性、提供 getter/setter 方法,我们可以更好地管理数据,提高代码的安全性和可维护性。

掌握实体类的设计原则,在实际项目中正确使用,可以让你的代码更加规范、高效!

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

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

相关文章

2.pycharm部署Ai - 编程好助手

一、pycharm安装continue插件 1.提前安装好pycharm,并双击打开 2.File – Setting 3.Plugins – 搜索Continue , 点击Install安装 4.点ok 二、获取硅基流动API 1.登入网站:https://siliconflow.cn/zh-cn/#/,并注册登入 2.获取AP…

《数据结构:单链表》

“希望就像星星,或许光芒微弱,但永不熄灭。” 博主的个人gitee:https://gitee.com/friend-a188881041351 一.概念与结构 链表是一种物理存储上非连续、非顺序的存储结构,数据元素的顺序逻辑是通过链表中的指针链接次序实现的。 单…

Visual Studio 2019 Qt QML 项目环境搭建常见问题处理方法

在 Visual Studio 2019 运行 Qt/QML 项目比直接使用QtCreator环境麻烦,主要是有qmake 的一些配置项不能在 Visual Studio中设置。下面整理一些常见问题的处理方法,供参考: 搭建VS Qt 环境,在Visual Studios 2019下面安装 Qt Vis…

基于Spring Boot的网上商城系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

如何监控和优化服务器的 CPU 性能

一、实时监控与诊断工具 1. 核心监控工具 bash 复制 # 实时CPU使用率监控 top -H -p <PID> # 按线程查看CPU占用 htop --sort-keyPERCENT_CPU # 可视化进程CPU排序 mpstat -P ALL 1 # 每核心使用率统计 2. 上下文切换分析 bash 复制 pidstat -w…

【蓝桥杯14天冲刺课题单】Day 1

1. 题目链接&#xff1a;19937 艺术与篮球 该题目的难点主要在20240413这个日期需要结束程序跳出循环。最开始将该输出ans的位置放在了for循环之外&#xff0c;此时的日期已经循环完了2024年所有的日期&#xff0c;则最后会统计多而导致结果错误。 AC代码&#xff1a; #incl…

Masked Attention 在 LLM 训练中的作用与原理

在大语言模型&#xff08;LLM&#xff09;训练过程中&#xff0c;Masked Attention&#xff08;掩码注意力&#xff09; 是一个关键机制&#xff0c;它决定了 模型如何在训练时只利用过去的信息&#xff0c;而不会看到未来的 token。这篇文章将帮助你理解 Masked Attention 的作…

Arduino、ESP32驱动GUVA-S12SD UV紫外线传感器(光照传感器篇)

目录 1、传感器特性 2、控制器和传感器连线图 3、驱动程序 UV紫外线传感器是一个测试紫外线总量的最佳传感器,它不需要使用波长滤波器,只对紫外线敏感。 Arduino UV紫外线传感器,直接输出对应紫外线指数(UV INDEX)的线性电压,输出电压范围大约0~1100mV(对应UV INDEX值…

基于微波光子信道的图像传输系统matlab仿真,调制方式采用OFDM+QPSK,LDPC编译码以及LS信道估计

目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1 OFDMQPSK原理 2.2 微波光子信道简介 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2022a仿真结果如下&#xff08;完整代码运行后无水印&#xff09;&#xff1a; 仿真操作步骤可参考程序配套的操作视…

【黑马点评】Redis解决集群的session共享问题

由于不同的tomcat服务器之间的session是不共享的&#xff0c;当请求如果在不同tomcat服务器之间切换就会导致数据丢失的问题。 使用redis可以解决session数据共享的问题 redis是tomcat以外的存储&#xff0c;存在redis中的数据&#xff0c;任何一台tomcat都能看得见&#xff0…

淘宝客户端动态化页面搭建

在手机淘宝等高频更新的业务场景中&#xff0c;UI页面的动态化和快速交付成为技术团队面临的重要挑战。本文围绕“客户端动态化页面搭建”这一主题&#xff0c;深入探讨了如何通过抽象框架设计解决高动态化页面的快速构建问题。文章详细介绍了框架的核心模块&#xff08;如Data…

无人机,雷达定点飞行时,位置发散,位置很飘,原因分析

参考&#xff1a; 无人车传感器 IMU与GPS数据融合进行定位机制_gps imu 组合定位原始数-CSDN博客 我的无人机使用雷达定位&#xff0c;位置模式很飘 雷达的更新频率也是10HZ&#xff0c; 而px飞控的频率是100HZ&#xff0c;没有对两者之间的频率差异做出处理 所以才导致无人…

Postman 版本信息速查:快速定位版本号

保持 Postman 更新至最新版本是非常重要的&#xff0c;因为这能让我们享受到最新的功能&#xff0c;同时也保证了软件的安全性。所以&#xff0c;如何快速查看你的 Postman 版本信息呢&#xff1f; 如何查看 Postman 的版本信息教程

Object结构

Object结构 参考博客

数据分析概述

数据分析&#xff1a;用适当的分析方法和挖掘方法对收集来的数据进行研究总结&#xff0c;提取有用的信息&#xff0c;形成结论并支持决策的过程。 一.数据分析的分类 1.业务描述性分析。以数据为分析对象&#xff0c;以探索数据内的有用信息为主要途径&#xff0c;以解决业务…

ubuntu下终端打不开的排查思路和解决方法

问题现象描述&#xff1a;ubuntu开机后系统桌面显示正常&#xff0c;其他图形化的app也都能打开无异常&#xff0c;唯独只有terminal终端打不开&#xff0c;无论是鼠标点击终端软件&#xff0c;还是ctrlaltt&#xff0c;还是altF2后输入gnome-terminal后按回车&#xff0c;这三…

第一天 Linux驱动程序简介

目录 一、驱动的作用 二、裸机驱动 VS linux驱动 1、裸机驱动 2、linux驱动 三、linux驱动位于哪里&#xff1f; 四、应用编程 VS 内核编程 1、共同点 2、不同点 五、linux驱动分类 1、字符设备 2、块设备 3、网络设备 六、Linux驱动学习难点与误区 1、学习难点 …

探索抓包利器ProxyPin,实现手机APP请求抓包,支持https请求

以下是ProxyPin的简单介绍&#xff1a; - ProxyPin是一个开源免费HTTP(S)流量捕获神器&#xff0c;支持 Windows、Mac、Android、IOS、Linux 全平台系统- 可以使用它来拦截、检查并重写HTTP(S)流量&#xff0c;支持捕获各种应用的网络请求。ProxyPin基于Flutter开发&#xff0…

Windows中安装git工具

下载好git安装包 点击next 选择安装目录 根据需要去勾选 点击next 点击next PATH环境选择第二个【Git...software】即可&#xff0c;再点击【Next】。 第一种配置是“仅从Git Bash使用Git”。这是最安全的选择&#xff0c;因为您的PATH根本不会被修改。您只能使用 Git Bash 的…

Banner区域

div下 justify-content:space-between 左侧测导航left 在这里插入图片描述 在这里插入图片描述