Java项目核心术语详解

55 阅读4分钟

一、基础编程概念

OOP(面向对象编程)

  • 全称:Object-Oriented Programming

  • 解释:Java的核心编程范式,基于“对象”概念,包含四大特性:

    • 封装:隐藏实现细节,提供公共接口
    • 继承:子类复用父类特性
    • 多态:同一接口的不同实现
    • 抽象:提取共同特征形成接口/抽象类
  • 示例

java

public class Animal {  // 父类
    public void sound() {
        System.out.println("Animal makes sound");
    }
}
public class Dog extends Animal {  // 继承
    @Override
    public void sound() {  // 多态
        System.out.println("Dog barks");
    }
}

POJO(简单Java对象)

  • 全称:Plain Old Java Object

  • 解释:普通的Java对象,不继承框架特定类或实现特定接口

  • 特点

    • 只有私有属性和getter/setter
    • 不依赖外部框架
    • 可序列化(通常)
  • 示例

java

public class User {
    private Long id;
    private String name;
    // 标准getter/setter
}

二、项目坐标与依赖管理

GAV(Maven坐标)

  • 全称:GroupId + ArtifactId + Version

  • 解释:Maven项目的唯一标识

  • 组成

    • GroupId:组织/公司域名逆序(com.example)
    • ArtifactId:项目名称(my-project)
    • Version:版本号(1.0.0-SNAPSHOT)
  • 示例

xml

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.3.23</version>
</dependency>

三、数据对象分层模型

DO(领域对象)

  • 全称:Domain Object
  • 解释:业务领域核心实体,包含业务逻辑
  • 位置:领域层(DDD架构)
  • 特点:充血模型,包含业务方法

PO(持久化对象)

  • 全称:Persistent Object

  • 解释:与数据库表直接映射的对象

  • 特点

    • 每个属性对应表字段
    • 通常包含ORM注解
    • 贫血模型(只有数据,无逻辑)
  • 示例

java

@Entity
@Table(name = "user")
public class UserPO {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Column(name = "user_name")
    private String userName;
}

BO(业务对象)

  • 全称:Business Object
  • 解释:业务逻辑处理对象,聚合多个PO
  • 特点:组合多个实体,完成复杂业务

VO(视图对象)

  • 全称:View Object

  • 解释:前端展示数据对象

  • 特点

    • 适配前端需求
    • 可能组合多个DO的属性
  • 示例

java

public class UserVO {
    private String displayName;
    private Integer age;
    private String formattedAddress;
}

DTO(数据传输对象)

  • 全称:Data Transfer Object

  • 解释:进程间/层间数据传输对象

  • 使用场景

    • 控制器接收请求参数
    • 微服务间API调用
    • 避免暴露内部模型
  • 示例

java

public class UserDTO {
    @NotBlank(message = "用户名不能为空")
    private String username;
    
    @Email(message = "邮箱格式错误")
    private String email;
}

四、数据访问与架构模式

DAO(数据访问对象)

  • 全称:Data Access Object
  • 解释:数据访问层抽象,封装数据库操作
  • 作用:分离业务逻辑与数据访问
  • 示例

java

public interface UserDAO {
    User findById(Long id);
    void save(User user);
    void update(User user);
    void delete(Long id);
}

ORM(对象关系映射)

  • 全称:Object-Relational Mapping

  • 解释:Java对象与数据库表的映射框架

  • 常见实现

    • Hibernate:全自动ORM
    • MyBatis:半自动SQL映射
    • JPA:Java持久化API标准
  • 优势:减少SQL编写,提高开发效率

SOA(面向服务架构)

  • 全称:Service-Oriented Architecture

  • 解释:将应用拆分为独立、可互操作的服务

  • 特点

    • 服务自治
    • 标准化接口
    • 松耦合
  • 演进:SOA → 微服务架构

五、开发工具与环境

IDE(集成开发环境)

  • 全称:Integrated Development Environment

  • 解释:提供完整开发环境的软件

  • 主流IDE

    • IntelliJ IDEA:最流行的Java IDE
    • Eclipse:开源免费,插件丰富
    • VS Code:轻量级,扩展性强
  • 功能:代码编辑、调试、编译、版本控制集成

六、常见异常与问题

NPE(空指针异常)

  • 全称:NullPointerException
  • 原因:调用了null对象的方法或属性
  • 预防

java

// Java 8+ 推荐
Optional.ofNullable(obj).ifPresent(o -> o.doSomething());

// 传统方式
if (obj != null) {
    obj.doSomething();
}

OOM(内存溢出)

  • 全称:OutOfMemoryError

  • 类型

    • Heap Space:堆内存不足
    • Metaspace:元数据区不足
    • Direct Memory:直接内存不足
  • 排查工具

    • jstack:线程堆栈
    • jmap:内存快照
    • VisualVM:可视化监控

七、术语关系与使用场景

text

┌─────────┐    ┌─────────┐    ┌─────────┐
│  请求   │───▶│  Controller  │───▶│   Service   │
└─────────┘    └─────────┘    └─────────┘
                    │                   │
                    ▼                   ▼
               DTO/Param              BO/DO
                                      │
                                      ▼
                               ┌─────────┐
                               │   DAO    │
                               └─────────┘
                                      │
                                      ▼
                                    PO/Entity

八、最佳实践建议

  1. 对象转换:使用MapStruct、ModelMapper等工具
  2. 分层清晰:每层职责单一,避免对象混用
  3. 命名规范:后缀明确(UserDTO、UserVO等)
  4. 空值处理:使用Optional,避免NPE
  5. 内存管理:监控堆内存,及时排查OOM

这些术语构成了Java企业级开发的基础知识体系,理解它们有助于设计清晰的架构和编写可维护的代码。