实体类(Entity Class)
1. 什么是实体类?
实体类(Entity Class) 是 Java 中用于表示数据库表结构或业务对象的类。它通常包含属性(字段)和getter/setter 方法,用于存储和操作数据。实体类是面向对象编程(OOP)与数据库之间的桥梁,常用于 Java Web 开发和 ORM(对象关系映射)框架(如 Hibernate、MyBatis)中。
2. 实体类的特点
-
属性私有化(使用
private
关键字修饰)。 -
提供 getter 和 setter 方法,用于外部访问和修改属性值。
-
通常包含无参构造方法,以便反射或框架使用。
-
可使用
toString()
方法 方便调试。 -
可实现
Serializable
接口,用于对象的序列化。 -
可能会使用注解(如
@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
修饰成员变量,保证封装性。 -
提供
getter
和setter
方法,外部可以安全访问和修改数据。 -
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. 实体类的优点
-
封装数据:将数据和行为封装在类中,符合 OOP 设计原则。
-
提高代码复用性:实体类可以在多个模块中使用。
-
方便 ORM 框架管理数据库:如 Hibernate、MyBatis。
-
便于维护:结构清晰,易于管理。
6. 适用场景
-
Java Web 开发:如 Spring Boot 结合 JPA、Hibernate 进行数据库操作。
-
数据传输:实体类用于存储和传输数据(如 JSON、XML 解析)。
-
微服务架构:用于 DTO(数据传输对象),实现数据封装。
-
缓存管理:实体类可存入 Redis 进行缓存管理。
7. 总结
实体类是 Java 开发中的重要组成部分,它用于表示数据库中的数据结构,并与 ORM 框架配合,实现对象与数据库表的映射。通过封装属性、提供 getter/setter 方法,我们可以更好地管理数据,提高代码的安全性和可维护性。
掌握实体类的设计原则,在实际项目中正确使用,可以让你的代码更加规范、高效!