본문 바로가기
  • Let's study
BackEnd/Spring

[Spring] JPA 기초

by 코딩고수이고파 2026. 7. 30.

엔티티(Entity)

엔티티(Entity)는 DB 테이블과 매핑되는 자바 클래스이다.

@Setter
@Getter
@Entity
@NoArgsConstructor
public class WiseSaying {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    private String content;
    private String author;
}

주요 어노테이션

어노테이션 설명
@Entity 클래스를 JPA 엔티티로 지정한다. 클래스명이 기본적으로 테이블명이 된다.
@Id 기본 키(Primary Key)를 지정한다.
@GeneratedValue 기본 키 생성 전략을 지정한다. IDENTITY는 DB의 AUTO_INCREMENT를 사용한다.
@Getter 모든 필드의 Getter를 자동 생성한다.
@Setter 모든 필드의 Setter를 자동 생성한다.
@NoArgsConstructor 기본 생성자를 생성한다. JPA는 기본 생성자가 반드시 필요하다.

엔티티 특징

  • 기본 생성자가 반드시 필요하다.
  • 반드시 @Id를 가져야 한다.
  • @Table을 사용하면 테이블명을 직접 지정할 수 있다.
  • @Column을 사용하면 컬럼명, 길이, NULL 여부 등을 설정할 수 있다.
  • 클래스는 final이 될 수 없다.
  • 필드는 private으로 선언하는 것이 좋다.

엔티티 클래스는 DB 테이블 자체가 아니라 테이블의 구조를 표현하는 클래스이다.
객체 하나가 테이블의 한 행(Row)에 대응된다.

DB 파일 초기화하는 방법

데이터베이스를 수정하거나 서버를 재시작할 때는 DB파일을 초기화하는 것이 좋다. 아래 파일은 없을 수도 있다.

  • db_dev.mv.db 파일을 삭제
  • db_dev.trace.db 파일을 삭제

Bean(빈)

Bean은 스프링 컨테이너가 생성하고 관리하는 객체이다.

스프링은 필요한 객체를 직접 생성하고 관리하며, 다른 Bean에서 자유롭게 사용할 수 있도록 해준다.

어노테이션 설명
@Component 일반 Bean 등록
@Service 서비스 계층 Bean
@Repository DAO(Repository) Bean
@Controller MVC Controller Bean
@RestController REST API Controller Bean
@Configuration 설정 클래스 지정
@Bean 메서드의 반환 객체를 Bean으로 등록
@Configuration
public class BaseInit {

    @Bean
    public Person person() {
        return new Person();
    }
}

특징

  • 스프링이 생성하고 관리한다.
  • 기본적으로 Singleton으로 관리된다.
  • 의존성 주입(DI)이 가능하다.
  • 필요한 곳에서 재사용할 수 있다.

ApplicationRunner

ApplicationRunner는 스프링 부트가 완전히 실행된 후 자동으로 실행되는 인터페이스이다.

@Bean
public ApplicationRunner init() {
    return args -> {
        System.out.println("초기 데이터를 로딩합니다.");
    };
}

특징

  • 애플리케이션 시작 후 run()을 구현하여 필요한 초기화 작업을 수행할 수 있다.
  • 캐시 초기화, 외부 서비스 연결 등에도 활용된다.
  • 여러 개 등록할 수 있으며 @Order로 실행 순서를 지정할 수 있다.
  • CommandLineRunner와 비슷하지만 ApplicationArguments를 통해 더 다양한 형태의 커맨드 라인 인자를 처리할 수 있다.

JpaRepository 인터페이스 상속

JpaRepository는 Spring Data JPA가 제공하는 인터페이스로, 기본적인 CRUD 기능을 제공한다.

제네릭에는 엔티티 클래스 기본 키 타입을 지정한다.

public interface PostRepository
        extends JpaRepository<Post, Integer> {
}

기본 제공 메서드

메서드 설명
save() 저장 및 수정
findById() ID 조회
findAll() 전체 조회
delete() 삭제
count() 개수 조회

@Autowired

@Autowired는 스프링이 관리하는 Bean을 자동으로 연결(의존성 주입, DI)해주는 어노테이션이다.

예를 들어 PostService에서 PostRepository를 사용하려면 객체를 직접 생성하지 않고 스프링이 자동으로 연결해 준다.

@Service
public class PostService {

    @Autowired
    private PostRepository postRepository;
}

'BackEnd > Spring' 카테고리의 다른 글

[Spring] @Component, @Transactional, JPA Auditing  (0) 2026.07.31
[Spring] intelliJ 세팅  (0) 2026.07.31

댓글