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 方法,方便输出对象信息
    @Override
    public 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 方法,我们可以更好地管理数据,提高代码的安全性和可维护性。

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

你可能感兴趣的:(java,oracle,开发语言)