一、基础编程概念
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
八、最佳实践建议
- 对象转换:使用MapStruct、ModelMapper等工具
- 分层清晰:每层职责单一,避免对象混用
- 命名规范:后缀明确(UserDTO、UserVO等)
- 空值处理:使用Optional,避免NPE
- 内存管理:监控堆内存,及时排查OOM
这些术语构成了Java企业级开发的基础知识体系,理解它们有助于设计清晰的架构和编写可维护的代码。