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
类具有两个私有属性 name
和 age
,以及相应的 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
的文件中。通过使用 FileOutputStream
和 ObjectOutputStream
类,我们可以将 Person
对象转换为字节流并写入文件中。
从文件中加载对象
要从文件中加载已序列化的对象,我们可以使用 FileInputStream
和 ObjectInputStream
类。
以下是一个从文件中加载 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());
}
}
}
在这个示例中,我们使用 FileInputStream
和 ObjectInputStream
从 person.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 连接到