JavaBean 持久化

在Java中,我们经常需要将对象的数据持久化到磁盘或数据库中,以便在程序重新启动时能够恢复数据。JavaBean 持久化是一种常见的解决方案,它允许我们将 JavaBean 对象存储到磁盘或数据库中,并在需要时重新加载。

什么是 JavaBean

JavaBean 是一种符合特定规范的 Java 类,它通常具有私有的属性(字段)以及公共的 getter 和 setter 方法。JavaBean 的属性通常用于存储对象的状态信息。

以下是一个简单的示例,展示了一个名为 Person 的 JavaBean 类:

public class Person {
    private String name;
    private int age;

    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;
    }
}

在这个例子中,Person 类具有两个私有属性 nameage,以及相应的 getter 和 setter 方法。这符合 JavaBean 的规范。

持久化 JavaBean 对象

JavaBean 持久化通常有两种方式:将对象序列化为文件或将对象存储到数据库中。

将对象序列化为文件

Java 提供了 Serializable 接口,用于支持对象的序列化。要使一个 JavaBean 类可序列化,只需实现 Serializable 接口即可。

以下是一个将 Person 对象序列化到文件中的示例:

import java.io.*;

public class SerializationExample {
    public static void main(String[] args) {
        Person person = new Person();
        person.setName("John");
        person.setAge(30);

        try {
            FileOutputStream fileOut = new FileOutputStream("person.ser");
            ObjectOutputStream out = new ObjectOutputStream(fileOut);
            out.writeObject(person);
            out.close();
            fileOut.close();
            System.out.println("Serialized data is saved in person.ser");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在这个示例中,我们创建一个 Person 对象,并将其写入到名为 person.ser 的文件中。通过使用 FileOutputStreamObjectOutputStream 类,我们可以将 Person 对象转换为字节流并写入文件中。

从文件中加载对象

要从文件中加载已序列化的对象,我们可以使用 FileInputStreamObjectInputStream 类。

以下是一个从文件中加载 Person 对象的示例:

import java.io.*;

public class DeserializationExample {
    public static void main(String[] args) {
        Person person = null;

        try {
            FileInputStream fileIn = new FileInputStream("person.ser");
            ObjectInputStream in = new ObjectInputStream(fileIn);
            person = (Person) in.readObject();
            in.close();
            fileIn.close();
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }

        if (person != null) {
            System.out.println("Name: " + person.getName());
            System.out.println("Age: " + person.getAge());
        }
    }
}

在这个示例中,我们使用 FileInputStreamObjectInputStreamperson.ser 文件中加载 Person 对象,并将其转换为 Person 类型。

将对象存储到数据库中

另一种常见的 JavaBean 持久化方式是将对象存储到数据库中。我们可以使用 JDBC(Java Database Connectivity)来实现这个目标。

以下是一个将 Person 对象存储到数据库中的示例:

import java.sql.*;

public class DatabasePersistenceExample {
    public static void main(String[] args) {
        Person person = new Person();
        person.setName("John");
        person.setAge(30);

        try {
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "username", "password");

            String sql = "INSERT INTO person (name, age) VALUES (?, ?)";
            PreparedStatement statement = connection.prepareStatement(sql);
            statement.setString(1, person.getName());
            statement.setInt(2, person.getAge());
            statement.executeUpdate();

            statement.close();
            connection.close();

            System.out.println("Person data is stored in the database");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

在这个示例中,我们首先创建一个 Person 对象,并将其属性设置为期望的值。然后,我们使用 JDBC 连接到