Java 面向对象中怎么通过数据封装将数据库表字段完美映射为业务模型对象

浅瑶酱_5691

浅瑶酱_5691

2026-08-02

280人浏览

原创

数据封装不是简单复制数据库字段,而是建立有业务语义、边界清晰、可维护的映射关系:字段命名需语义化(如user、name、isdeleted),属性全private并受控访问,状态变更走专用方法,读写逻辑分离,区分持久化模型与业务模型,注解仅作映射桥梁而非模型契约。

java 面向对象中怎么通过数据封装将数据库表字段完美映射为业务模型对象

数据封装不是把数据库字段简单复制到 Java 类里,而是建立有业务语义、边界清晰、可维护的映射关系。核心在于:字段命名不照搬表名,访问控制要严格,状态变更需受约束,读写逻辑要分离。

用有意义的类名和属性名替代原始表结构

数据库表名(如 t_user_info)和字段名(如 user_nameis_del)直接作为 Java 类名或属性名,会暴露存储细节,也违背业务表达。应按领域语言重命名:

  • User(而非 UserInfo 或 TUserInfo)—— 表达“用户”这个业务实体
  • name(而非 userName 或 user_name)—— 属性属于当前对象,无需前缀
  • isDeleted(而非 isDel 或 deleted_flag)—— 布尔字段用 isXxx 形式,语义明确且符合 JavaBean 规范
  • createdAt(而非 create_time)—— 使用驼峰 + 语义化时间描述,便于序列化和 API 返回

私有属性 + 受控访问器,禁止裸字段暴露

所有字段必须声明为 private,不提供 public 字段或无校验的 setter。getter/setter 不是摆设,而是封装逻辑的入口:

Java Development Manual
Java Development Manual

Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...

下载
  • setter 中做基础校验(如手机号格式、邮箱合法性、非空约束)
  • 敏感字段(如 password)的 setter 可触发加密,getter 返回 null 或占位符
  • 状态字段(如 status)的修改应走专用方法(activate()deactivate()),而非直接 setStatus(1)
  • 避免链式调用破坏封装,例如不要写 user.setName("A").setEmail("B"),除非明确设计为 Builder 模式

区分「持久化模型」与「业务模型」,必要时拆分

一张表常承载多场景职责(如审计字段、版本号、冗余计数),但业务对象只需关注当前上下文需要的数据。强行让一个类承载全部字段,会导致职责混乱:

  • 查询场景用 UserSummary(仅 id + name + avatar)
  • 编辑场景用 UserEditable(含 name、email、phone,不含 createTime 等只读字段)
  • 持久层用 UserEntity(含所有数据库列,配合 JPA 注解)
  • 通过构造函数或静态工厂方法完成转换,例如 UserEditable.from(userEntity),而非靠 setXXX 手动赋值

用注解和工具辅助映射,但不依赖它们定义模型

JPA 的 @Column(name = "user_name") 或 MyBatis 的 是桥梁,不是模型契约:

  • 注解只负责「如何从 DB 拿数据」,不决定「对象该有什么行为」
  • 避免在业务模型上加 @Entity 或 @Table —— 这会让领域对象被持久化框架绑架
  • 使用 MapStruct 或 ModelMapper 做对象转换时,显式声明映射规则(如 password 不复制、createdAt 自动赋值),而不是靠字段名自动匹配
  • 数据库字段变更(如 rename column)不应导致业务类编译失败,而应只改映射配置

Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.15

8717

6

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

2023.07.05

5922

9

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

2023.07.31

5332

8

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.01

964

3

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.02

808

3

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

1136

5

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

2309

5

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

2023.08.03

19651

3

配置java环境变量
配置java环境变量

配置Java环境变量是为了让操作系统能够识别和使用Java的相关命令和功能。本专题为大家提供配置java环境变量相关文章,帮助大家解决问题。

2023.08.03

1055

8

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习