JavaBeans란?
2024. 11. 21. 10:05

JavaBeans는 Java에서 객체를 재사용할 수 있도록 설계된 클래스이다. JavaBeans는 간단한 규약을 따라 작성된 클래스이며, 주로 데이터 저장 및 전달(예: JSP, 서블릿, 또는 다른 계층 간)을 목적으로 사용됨

JavaBeans의 특징

  1. 기본 생성자: 매개변수가 없는 기본 생성자를 제공해야 한다.
  2. 필드 접근 제한: 클래스의 멤버 변수(필드)는 private으로 선언된다.
  3. Getter와 Setter 메서드: 필드에 접근하기 위한 public 메서드를 제공해야된다.
  4. Serializable 구현 가능: JavaBeans 클래스는 보통 java.io.Serializable 인터페이스를 구현 해야한다. (필수는 아님)

JavaBeans 사용법

1. JavaBeans 클래스 작성

아래는 User라는 JavaBeans 클래스를 예로  들어본다

import java.io.Serializable;

public class User implements Serializable {
    private int id;         // ID
    private String name;    // 이름
    private String email;   // 이메일

    // 기본 생성자
    public User() {}

    // 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 String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

2. JavaBeans 객체를 사용하여 데이터 저장 및 전달

(1) 서블릿에서 JavaBeans 사용

서블릿에서 데이터를 처리하고 JavaBeans 객체를 JSP로 전달할 수 있음

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;

public class UserServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // JavaBean 객체 생성 및 값 설정
        User user = new User();
        user.setId(1);
        user.setName("John Doe");
        user.setEmail("john.doe@example.com");

        // JavaBean 객체를 요청 속성에 저장
        request.setAttribute("user", user);

        // JSP로 포워딩
        RequestDispatcher dispatcher = request.getRequestDispatcher("user.jsp");
        dispatcher.forward(request, response);
    }
}

(2) JSP에서 JavaBeans 사용

JSP에서는 EL(Expression Language) 또는 jsp:useBean을 사용해 JavaBeans 객체에 접근할 수 있음

EL로 JavaBeans 사용:

<h1>User Details</h1>
<p>ID: ${user.id}</p>
<p>Name: ${user.name}</p>
<p>Email: ${user.email}</p>

<jsp:useBean>으로 JavaBeans 사용:
jsp
코드 복사
<jsp:useBean id="user" class="User" scope="request" />
<p>ID: <jsp:getProperty name="user" property="id" /></p>
<p>Name: <jsp:getProperty name="user" property="name" /></p>
<p>Email: <jsp:getProperty name="user" property="email" /></p>

3. JavaBeans와 데이터베이스 연동

JavaBeans를 사용하여 DB 데이터를 처리하면 편리하게 데이터를 객체로 전달할 수 있음

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class UserDAO {
    private Connection getConnection() throws SQLException {
        String url = "jdbc:oracle:thin:@localhost:1521:xe";
        String username = "your_username";
        String password = "your_password";
        return DriverManager.getConnection(url, username, password);
    }

    public List<User> getAllUsers() {
        List<User> users = new ArrayList<>();

        try (Connection conn = getConnection();
             PreparedStatement stmt = conn.prepareStatement("SELECT id, name, email FROM users");
             ResultSet rs = stmt.executeQuery()) {

            while (rs.next()) {
                User user = new User();
                user.setId(rs.getInt("id"));
                user.setName(rs.getString("name"));
                user.setEmail(rs.getString("email"));
                users.add(user);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return users;
    }
}

 

JavaBeans의 활용 범위

  1. MVC 아키텍처:
    • 모델(Model) 계층에서 데이터 저장 및 전달에 사용.
    • 서블릿에서 데이터를 처리하고, JSP에서 데이터를 렌더링.
  2. JSP 페이지에서 데이터 바인딩:
    • jsp:useBean 태그를 사용해 객체를 바인딩.
    • EL을 사용해 간단히 출력.
  3. DB와 연동:
    • 데이터베이스 테이블의 레코드를 JavaBeans 객체로 매핑하여 처리.
    • DAO(Data Access Object)와 함께 사용.

JavaBeans의 장점

  • 캡슐화: 데이터를 캡슐화하여 외부에서 직접 접근하지 못하도록 보호.
  • 재사용성: 클래스를 작성해 다양한 곳에서 재사용 가능.
  • 유지보수성: 명확한 Getter/Setter 구조로 관리가 쉬움.
  • JSP 연동 편의성: jsp:useBean과 EL을 통해 데이터 접근이 간단.

'Front-End > WEB' 카테고리의 다른 글

SQL SESSION 메서드  (0) 2024.12.02
SQL Session Factory  (0) 2024.12.02
이미지 파일저장  (0) 2024.11.21
JSP INCLUDE  (0) 2024.11.21
Scope  (0) 2024.11.20