Họ thường chỉ đại diện cho dữ liệu thế giới thực. Đây là một ví dụ đơn giản về Javabean:
public class User implements java.io.Serializable {
// Properties.
private Long id;
private String name;
private Date birthdate;
// Getters.
public Long getId() { return id; }
public String getName() { return name; }
public Date getBirthdate() { return birthdate; }
// Setters.
public void setId(Long id) { this.id = id; }
public void setName(String name) { this.name = name; }
public void setBirthdate(Date birthdate) { this.birthdate = birthdate; }
// Important java.lang.Object overrides.
public boolean equals(Object other) {
return (other instanceof User) && (id != null) ? id.equals(((User) other).id) : (other == this);
}
public int hashCode() {
return (id != null) ? (getClass().hashCode() + id.hashCode()) : super.hashCode();
}
public String toString() {
return String.format("User[id=%d,name=%s,birthdate=%d]", id, name, birthdate);
}
}
Việc triển khai Serializable
không bắt buộc, nhưng rất hữu ích nếu bạn muốn có thể duy trì hoặc chuyển Javabeans bên ngoài bộ nhớ của Java, ví dụ như trong ổ cứng hoặc qua mạng.
Ví dụ, một lớp DAO, bạn có thể sử dụng nó để tạo danh sách người dùng trong đó bạn lưu trữ dữ liệu của user
bảng trong cơ sở dữ liệu:
List<User> users = new ArrayList<User>();
while (resultSet.next()) {
User user = new User();
user.setId(resultSet.getLong("id"));
user.setName(resultSet.getString("name"));
user.setBirthdate(resultSet.getDate("birthdate"));
users.add(user);
}
return users;
Ví dụ, một lớp Servlet, bạn có thể sử dụng nó để chuyển dữ liệu từ cơ sở dữ liệu sang UI:
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
List<User> users = userDAO.list();
request.setAttribute("users", users);
request.getRequestDispatcher("users.jsp").forward(request, response);
}
Ví dụ, một trang JSP bạn có thể truy cập nó bằng EL , theo các quy ước Javabean, để hiển thị dữ liệu:
<table>
<tr>
<th>ID</th>
<th>Name</th>
<th>Birthdate</th>
</tr>
<c:forEach items="${users}" var="user">
<tr>
<td>${user.id}</td>
<td><c:out value="${user.name}" /></td>
<td><fmt:formatDate value="${user.birthdate}" pattern="yyyy-MM-dd" /></td>
</tr>
</c:forEach>
</table>
Liệu nó có ý nghĩa? Bạn thấy đấy, đó là một quy ước mà bạn có thể sử dụng ở mọi nơi để lưu trữ , chuyển và truy cập dữ liệu.
Xem thêm: