ERD 그리는법, 스프링의 어노테이션, Postman 사용법

구환준/모건·2023년 11월 2일

UMC-5th

목록 보기
2/10

너무 오랜만에 왔다. 그동안 너무 바빴음 밀린 스터디 자료 기록용임

ERD 그리는 법

저는 erdcloud를 주로 씁니다! 공짜라서

  1. erdcloud.com 에 접속하여 회원가입한다(구글,깃허브 등 소셜로그인 가능)
  2. 우측 상단 이름 옆에 ‘ERD 생성’ 버튼 클릭

Untitled

  1. 생성 이후, 다시 우측 상단의 설정 버튼 클릭

Untitled

  1. ‘디스플레이’ 에서 아래 그림처럼 선택

Untitled

❗헷갈림 주의 - 검정색이 선택된 상태입니다

위 사진은

  • 도메인

  • 기본값

  • 타입

  • 코멘트

  • Null 허용

의 형태와 같다고 보면 됩니다.

  1. 객체 별 테이블 생성하기

Untitled

+: PK 추가하기

+: 필드(컬럼) 추가하기 - Member의 경우, name, birthday 등

  1. 테이블 간 관계 설정하기 - 1:N, N:M, 1:1 등

어노테이션 상세 설명

Bean이 뭐지?

스프링 컨테이너 내에서 인스턴스화, 관리, 생성되는 객체.

Bean의 주요역할:

  1. 생명주기 관리: 스프링 컨테이너는 Bean의 생명주기를 관리
    Bean이 생성되고, 사용되며, 소멸되는 것을 스프링이 처리
  2. 의존성 주입 (DI): Bean은 다른 Bean에 의존할 수 있다. 스프링 컨테이너는 Bean들 사이의 의존성을 자동으로 처리하고 필요한 객체를 제공한다
  3. 설정과 구성: XML, Java Config, Annotation 등 다양한 방법으로 Bean의 설정과 구성을 관리할 수 있

쉬운 예시:

카페에서 바리스타(스프링 컨테이너)에게 아이스 아메리카노(Bean)를 주문했다고 생각해봅시다.

  1. 바리스타는 주문에 따라 아이스 아메리카노를 만듭니다. 이 아메리카노는 카페(스프링 프로젝트) 안에서만 존재하며 바리스타(스프링 컨테이너)가 그 생명주기를 관리합니다.
  2. 아메리카노는 물, 커피, 얼음 등의 재료(다른 Bean 또는 의존성)가 필요합니다. 바리스타는 자동으로 이 재료들을 가져와 아메리카노를 완성합니다.
  3. 바리스타는 메뉴판(설정 파일, Config)을 보고 어떻게 아메리카노를 만들어야 할지 알게 됩니다.

여기서 아이스 아메리카노는 Bean, 바리스타는 스프링 컨테이너, 메뉴판은 설정 파일로 볼 수 있습니다. 이렇게 스프링 컨테이너는 Bean의 생성, 의존성 주입, 생명주기 관리를 자동으로 해줍니다

주요 어노테이션(스프링 자체)

@Configuration, @Bean

  • @Configuration = 해당 클래스가 스프링 구성 클래스이다
  • @Bean = 해당 메서드의 반환값이 Bean으로 스프링 컨테이너에 등록되어야 한다

@Component

  • 기본적인 스프링 관리 컴포넌트
  • 이 어노테이션을 클래스 위에 추가하면, 스프링은 그 클래스를 Bean으로 인식하고 자동으로 Bean 컨테이너에 등록

@Service, @Repository, @Controller, @RestController

  • @Component의 특별한 형태. 각각 서비스 계층, 데이터 접근 계층, 프레젠테이션(웹) 계층의 컴포넌트
  • @RestController는 자동으로 @ResponseBody가 적용되어 반환값을 JSON 등으로 자동 변환

@Autowired

  • 의존성 주입을 위한 어노테이션
  • Bean 컨테이너 안에 있는 Bean을 자동으로 주입받고 싶은 필드나 생성자, 메서드 위에 이 어노테이션을 사용
  • 이를 통해 개발자는 직접 객체를 생성하거나 검색하는 대신, 스프링이 자동으로 의존성을 관리
  • 예시:
@Service
public class BookService {

   
    private final BookRepository bookRepository;

// @Autowired를 사용하여 BookRepository를 자동 주입

		@Autowired
		public BookService(BookRepository bookRepository){
			this.bookRepository = bookRepository;
		}

	
    public List<Book> getAllBooks() {
        return bookRepository.findAll();
    }
}

@Scope

  • Bean의 생명주기 범위를 지정
    예를 들어, "singleton", "prototype" 등의 범위를 지정

주요 어노테이션(JPA 관련)

  1. @Entity: 클래스의 인스턴스가 JPA에서 엔터티 객체임을 명시 이 어노테이션이 붙은 클래스는 데이터베이스의 테이블과 매핑됨 - **@Id** 가 필수적으로 포함되어야 함
  2. @Id: 변수가 엔터티의 기본 키(primary key)
  3. @GeneratedValue: 주로 @Id와 함께 사용되며, 기본 키의 생성 전략 포함

Untitled

  1. @Column: 변수가 데이터베이스의 특정 컬럼과 매핑됨
  2. @Table: 엔터티 클래스와 매핑될 데이터베이스 테이블의 이름을 명시 - 없어도 큰 문제는 없음

주요 어노테이션(Lombok 관련)

  1. @Builder: 빌더 패턴을 자동으로 구현
    객체 생성 시 더 간결하고 읽기 쉬운 코드를 작성할 수 있다
  2. **@Getter**: getter 메서드 자동 생성
  3. **@Setter**: setter 메서드 자동 생성
  4. **@NoArgsContructor**: 매개변수가 없는 기본 생성자를 자동으로 생성
@NoArgsConstructor
    public class NoArgsExample {
        private String name;
        private int age;
    }

    // 이렇게 되면 다음과 같은 기본 생성자를 생성합니다.
    public NoArgsExample() {}
  1. @AllArgsConstructor: 클래스의 모든 필드에 대한 생성자를 자동으로 생성
		@AllArgsConstructor
    public static class AllArgsExample {
        private String name;
        private int age;
    }
// 이렇게 되면 다음과 같은 모든 필드에 대한 생성자를 생성합니다.
    public AllArgsExample(String name, int age) {
        this.name = name;
        this.age = age;
    }
  1. @RequiredArgsConstructor: final 이 붙은 필드에 대한 생성자를 자동으로 생성
public static class RequiredArgsExample {
        @NonNull
        private final String name;
        private int age;
    }

    // 이렇게 되면 다음과 같은 final 필드 또는 @NonNull이 붙은 필드에 대한 생성자를 생성합니다.
     public RequiredArgsExample(String name) {
         this.name = name;
     }

Postman 사용법

https://parkjh7764.tistory.com/212

위 링크 보면서 같이 해보아요

0개의 댓글