개발 이론/Spring

Spring, Spring Boot, JPA의 정의

jeonghoe21 2025. 3. 1. 22:04
 

📌 Spring, Spring Boot, JPA의 정의와 차이점 정리

Spring과 Spring Boot, 그리고 JPA는 Java 기반의 백엔드 개발에서 매우 중요한 개념입니다.
이제 각각의 개념을 정의하고, 차이점을 명확하게 비교해보겠습니다. 🚀


1️⃣ Spring Framework란?

📌 Spring의 정의

"Spring은 Java 기반의 애플리케이션 개발을 위한 프레임워크"
"객체 지향 프로그래밍(OOP) 원칙을 바탕으로, 의존성 관리와 확장성이 뛰어난 프레임워크"

📌 Spring의 핵심 개념

  • DI (Dependency Injection, 의존성 주입) → 객체 간의 의존성을 Spring이 관리
  • AOP (Aspect-Oriented Programming, 관점 지향 프로그래밍) → 공통 기능(로깅, 보안) 분리 가능
  • Spring MVC → 웹 애플리케이션 개발을 위한 구조 제공
  • Spring Data → 데이터 접근 계층 관리 (JDBC, JPA 지원)
  • Spring Security → 인증 및 인가 기능 제공
  • Spring Transaction Management → 트랜잭션 처리 지원

📌 Spring의 특징

특징설명
경량 프레임워크 최소한의 메모리와 설정으로 실행 가능
DI 지원 객체 간 의존성을 자동 주입하여 결합도 낮춤
AOP 지원 보안, 로깅, 트랜잭션을 모듈화 가능
MVC 아키텍처 웹 개발을 위한 컨트롤러 제공
강력한 트랜잭션 관리 선언적 트랜잭션 지원 (AOP 활용)

📌 Spring 코드 예제 (DI 활용)

 

@Component
public class UserService {
    public String getUser() {
        return "Spring Framework";
    }
}

@Controller
public class UserController {
    private final UserService userService;

    @Autowired  // 의존성 주입 (DI)
    public UserController(UserService userService) {
        this.userService = userService;
    }

    @GetMapping("/user")
    public String getUser() {
        return userService.getUser();
    }
}

2️⃣ Spring Boot란?

📌 Spring Boot의 정의

"Spring Boot는 Spring의 설정을 자동화하고, 개발 속도를 높이기 위한 프레임워크"
"기본 설정이 포함된 Spring 프로젝트를 손쉽게 실행할 수 있도록 도와줌"

📌 Spring Boot의 핵심 개념

  • Spring의 모든 기능을 포함하면서 설정을 최소화한 프레임워크
  • spring-boot-starter를 통해 의존성 자동 관리
  • 내장 웹 서버(Tomcat, Jetty) 제공
  • 설정 파일(application.yml, application.properties) 활용
  • Spring Boot CLI 제공 (Command Line Interface 지원)

📌 Spring Boot의 특징

특징설명
자동 설정 (Auto Configuration) @SpringBootApplication 사용 시 자동 설정 적용
내장 웹 서버 제공 Tomcat, Jetty, Undertow 내장
빠른 개발 환경 구축 spring-boot-starter-* 사용 가능
설정 최소화 XML 설정 없이 application.yml 활용 가능
독립 실행 가능 java -jar 실행 가능 (내장 서버 포함)

📌 Spring Boot 프로젝트 기본 코드

@SpringBootApplication // 자동 설정 활성화
public class SpringBootDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootDemoApplication.class, args);
    }
}
 

📌 Spring Boot Controller 예제

 

@RestController
@RequestMapping("/api")
public class HelloController {
    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, Spring Boot!";
    }
}
 

📌 Spring Boot 실행 방법

 

$ mvn spring-boot:run
$ java -jar target/spring-boot-demo-0.0.1-SNAPSHOT.jar

3️⃣ JPA (Java Persistence API)란?

📌 JPA의 정의

"JPA는 Java 애플리케이션에서 데이터베이스를 객체로 매핑(ORM)하는 표준 API"
"SQL 대신 객체 중심으로 데이터 조작이 가능"

📌 JPA의 핵심 개념

  • SQL을 직접 작성하지 않고, 객체(엔티티)와 테이블을 매핑하여 데이터 처리
  • 객체(Entity) 기반으로 데이터 조작 가능
  • 트랜잭션 및 영속성 컨텍스트 관리
  • 쿼리를 자동 생성 (findById, save, delete)
  • Spring Data JPA를 활용하면 더욱 편리한 개발 가능

📌 JPA의 특징

특징설명
객체 중심 개발 SQL 대신 객체를 사용하여 DB 처리
자동 매핑 지원 엔티티와 테이블 자동 매핑 (@Entity)
트랜잭션 관리 Spring과 함께 트랜잭션 관리 용이
JPQL 지원 SQL이 아닌 객체 중심 쿼리 (@Query)
캐싱 및 성능 최적화 1차 캐시, 지연 로딩(Lazy Loading)

📌 JPA 코드 예제

 

@Entity
@Table(name = "users")
public class User {
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;

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

    public User(String name) { this.name = name; }
}
 

📌 Spring Data JPA 활용

 

public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByName(String name); // 자동으로 쿼리 생성됨
}
 

📌 JPA 서비스 코드

 

public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByName(String name); // 자동으로 쿼리 생성됨
}

5️⃣ 결론

Spring → 강력한 웹 애플리케이션 개발 프레임워크
Spring Boot → Spring의 설정을 자동화하여 빠르게 개발 가능
JPA → SQL 없이 객체 중심으로 데이터베이스를 다루는 API

'개발 이론 > Spring' 카테고리의 다른 글

SSR  (0) 2025.03.18
Spring Security  (0) 2025.02.20
Spring MVC  (0) 2025.02.20
Spring Boot란?  (0) 2025.02.20