10.2. Java 개념과 프레임워크 연계

약 11분

본문 듣기
읽기 설정

글자 크기

줄 간격

글꼴

10.2. Java 개념과 프레임워크 연계

Java는 객체지향 프로그래밍(OOP) 언어로, 소프트웨어 개발에서 재사용성과 유지보수성을 높이는 방법론을 제공합니다. OOP의 주요 요소는 클래스와 객체이며, 이를 통해 실제 세계를 모델링하는 데 도움이 됩니다. 이 장에서는 Java의 주요 개념과 Spring Boot 프레임워크와의 관계를 살펴보겠습니다.

1. 객체지향 프로그래밍(OOP) 개념

  • Class: 객체를 정의하는 템플릿입니다. 데이터와 메서드를 포함하여 객체를 생성하는 데 사용됩니다.
  • Object: 클래스로부터 생성되며, 상태(속성)와 행동(메서드)을 가집니다.
  • Constructor: 객체가 생성될 때 호출되는 특별한 메서드입니다. 객체의 초기화를 담당합니다.
  • Encapsulation: 데이터와 메서드를 하나로 묶고, 외부에서 직접 접근하지 못하게 보호하는 것입니다.
  • Inheritance: 새로운 클래스를 기존의 클래스에서 파생하는 방법으로, 재사용성과 구조를 단순화합니다.
  • Polymorphism: 같은 메서드 이름이지만 서로 다른 동작을 할 수 있는 능력입니다. 이를 통해 유연한 코드 작성을 가능하게 합니다.
  • Abstract Class 및 Interface: 추상 클래스는 인스턴스를 생성할 수 없는 클래스이며, 인터페이스는 클래스가 구현해야 할 메서드 집합을 정의합니다.
  • Package: 관련 클래스를 그룹화하여 이름 충돌을 방지하고 코드의 구조를 개선합니다.
  • Access Modifier: 클래스와 클래스의 속성과 메서드의 접근 범위를 정의합니다.

2. Collection Framework

Java의 Collection Framework는 데이터를 효율적으로 저장하고 처리하는 데 도움을 줍니다. 다음은 대표적인 컬렉션 타입입니다:

  • List: 순서가 있는 데이터의 모음으로, 중복된 값을 허용합니다.
  • Set: 중복을 허용하지 않으며, 순서가 보장되지 않습니다.
  • Map: 키와 값의 쌍으로 데이터 저장이 가능하며, 키는 중복되지 않습니다.

예를 들어, 학생 관리 프로그램을 작성할 때 List를 사용하여 학생 리스트를 유지하고, Map을 사용하여 학생 ID와 상세 정보를 저장할 수 있습니다.

코드 java
import java.util.ArrayList;
import java.util.HashMap;

public class StudentManager {
    private ArrayList<String> students;
    private HashMap<Integer, String> studentDetails;

    public StudentManager() {
        students = new ArrayList<>();
        studentDetails = new HashMap<>();
    }

    public void addStudent(String name) {
        students.add(name);
    }

    public void addStudentDetail(int id, String detail) {
        studentDetails.put(id, detail);
    }
}

3. Lambda Expression 및 Stream API

Java 8부터 추가된 Lambda Expression과 Stream API는 코드의 간결함과 가독성을 높이는 데 도움을 줍니다.

  • Lambda Expression: 익명 함수를 사용하여 메서드를 구현할 수 있도록 해주는 기능입니다.
  • Stream API: 컬렉션을 처리하기 위한 API로, 데이터 흐름을 조작하는데 매우 유용합니다.

다음 예제에서 List의 학생 이름을 필터링하는 방법을 살펴보겠습니다.

코드 java
import java.util.ArrayList;
import java.util.List;

public class StudentFilter {
    public static void main(String[] args) {
        List<String> students = new ArrayList<>();
        students.add("Alice");
        students.add("Bob");
        students.add("Charlie");

        students.stream()
            .filter(name -> name.startsWith("A"))
            .forEach(System.out::println);
    }
}

4. Exception 처리 및 Custom Exception

Java에서 예외 처리는 프로그램의 안정성을 높이기 위해 필수적입니다. 예외 처리 구조는 try, catch, finally로 이루어져 있습니다. 또한, 개발자가 정의한 예외 클래스를 생성하여 특정한 예외 상황을 처리할 수 있습니다.

다음은 Custom Exception을 생성하는 간단한 예제입니다.

코드 java
public class CustomException extends Exception {
    public CustomException(String message) {
        super(message);
    }
}

5. JDBC와 MySQL 연동

JDBC는 Java에서 데이터베이스에 연결하고 SQL 쿼리를 수행하기 위한 API입니다. MySQL과 연동하여 데이터베이스 작업을 수행하는 기본적인 CRUD 기능을 구현합니다.

아래 예제는 데이터베이스에 연결하고 데이터를 삽입하는 방법을 보여줍니다.

코드 java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class DatabaseExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydb";
        String user = "root";
        String password = "password";

        try (Connection connection = DriverManager.getConnection(url, user, password)) {
            String sql = "INSERT INTO students (name) VALUES (?)";
            try (PreparedStatement statement = connection.prepareStatement(sql)) {
                statement.setString(1, "John Doe");
                statement.executeUpdate();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

6. MVC 패턴과 프로젝트 구조

MVC(Model-View-Controller) 패턴은 애플리케이션의 구조를 명확하게 나누어 유지보수를 용이하게 합니다. 이 패턴을 통해 비즈니스 로직과 UI를 분리하여 개발할 수 있습니다.

7. REST API 및 JSON 처리

REST API는 웹 서비스 구축에 적합한 아키텍처 스타일로, HTTP 프로토콜을 기반으로 하고 있습니다. JSON 포맷을 사용해서 데이터를 송수신하며, 이를 통해 클라이언트와 서버 간의 통신이 원활해집니다. 이는 Spring Boot와의 연계 또한 쉽게 해줍니다.

8. 실습 프로젝트

이 장에서 배운 내용을 바탕으로 학생 관리, 회원 관리, 게시판 등의 실습 프로젝트를 단계적으로 진행합니다. 각 프로젝트 마다 객체지향 설계 원칙을 적용하고, 주석을 충분히 포함해 진행합니다.

9. 정리

이제 우리는 Java의 기본 개념들과 Spring Boot에서의 활용 방법을 잘 이해하게 되었습니다. 앞으로 진행할 Spring Boot 프레임워크 학습에 있어 이 개념들이 튼튼한 기반이 될 것입니다. 다양한 실습 과제를 통해 더 깊은 이해를 돕고, 응용 문제를 통해 실력을 더욱 향상시킬 수 있습니다.

댓글 0

댓글을 남기려면 로그인하세요.

아직 댓글이 없습니다. 첫 댓글을 남겨보세요.