백엔드 개발자의 스프링 공부노트
본문 바로가기

컴퓨터공부/Springboot

백엔드 개발자의 스프링 공부노트

by Life & study 2023. 8. 9.
반응형

백엔드 개발자의 스프링 공부노트

 

@Controller 어노테이션은 이 클래스가 Spring MVC 컨트롤러임을 나타냅니다.

 

이 어노테이션은 클래스가 스프링 프레임워크의 컨트롤러 역할을 하는 클래스임을 표시합니다. 컨트롤러는 웹 요청을 처리하고 응답을 반환하는 역할을 담당합니다.

 

@Controller 어노테이션은 이 클래스가 Spring MVC 컨트롤러임을 나타냅니다.

 


@Controller: 이 클래스가 Spring MVC 컨트롤러임을 나타내는 어노테이션입니다.
@Controller: 스프링 컨테이너가 관리할 컨트롤러 클래스라고 명시합니다. 이 클래스는 웹 요청을 처리하고 적절한 응답을 반환합니다.

 

 

BoardService는 생성자 주입을 통해 BoardController 클래스에 주입됩니다. 

 

BoardService는 생성자 주입을 통해 BoardController 클래스에 주입됩니다. 

이를 통해 컨트롤러에서 BoardService의 메서드를 사용하여 데이터를 가져올 수 있습니다.

이 서비스 클래스는 게시판 도메인의 비즈니스 로직을 처리합니다. 
여기에서는 서비스 레이어는 데이터베이스 작업과 같은 비즈니스 로직을 구현하고, 
컨트롤러와 데이터 액세스 객체 사이에서 작동합니다.

 

BoardService: BoardService 클래스의 인스턴스를 주입받기 위한 필드입니다.
private BoardService boardService;: 클래스의 프라이빗 필드로서, 

BoardService 인스턴스를 가리키는 레퍼런스입니다. 

boardService 객체는 비즈니스 로직을 수행하는데 사용됩니다.

 

private BoardService boardService;: BoardService 타입의 private 필드입니다. 이 필드는 애플리케이션의 비즈니스 로직 레이어(서비스 레이어)와 상호작용하기 위해 사용됩니다.

 

List boards = boardService.findAll() 은 무엇인가?

 

코드 진행 순서:
boardService.findAll() 메소드를 호출하여 Board 객체의 리스트를 가져옵니다.
List<Board> boards 변수에 반환된 Board 객체의 리스트를 저장합니다.
boards 변수를 Model 객체에 추가하여 뷰로 전달합니다.

 

이렇게 코드가 실행되면 BoardService의 findAll() 메소드를 통해 데이터베이스에서 모든 Board 객체를 가져와서 boards 변수에 저장하고, 이를 뷰로 전달합니다.

 

 



<Board>는 무슨뜻이냐?

 

Board 클래스는 데이터베이스의 테이블을 나타내는 Java 객체라고 할 수 있습니다. 이 클래스를 사용하면 데이터베이스에 있는 테이블 데이터를 Java 객체로 다룰 수 있습니다. 이렇게 데이터베이스의 테이블 구조와 동일한 구조를 가진 Java 객체를 사용하는 것을 ORM(Object-Relational Mapping)이라고 합니다. 

List<Board> boards에서, List는 Java 컬렉션 프레임워크의 List 인터페이스를 사용하고 <Board>는 그 List 내부에 Board 타입의 객체들이 저장된다는 것을 나타냅니다. 이 boards 리스트는 Board 객체들의 컬렉션(모음)입니다. 이 경우, 각 Board 객체는 데이터베이스의 테이블에 있는 한 행의 데이터를 나타냅니다.

 

 

따라서 <Board>는 List에 Board 객체의 리스트를 저장하기 위한 타입 정보를 제공하는 것이지, 데이터베이스의 테이블을 직접적으로 나타내는 것은 아닙니다.
Board 클래스는 JPA 애너테이션을 사용하여 데이터베이스의 테이블과 매핑되는 엔티티로 사용됩니다. 이를 통해 Board 객체의 인스턴스는 데이터베이스의 테이블과 연결되어 데이터를 저장하고 조회할 수 있습니다.
따라서 <Board>는 List<Board>에 Board 객체의 리스트를 저장하기 위한 타입 정보로 사용되는 것이며, 데이터베이스의 테이블을 직접적으로 나타내는 것은 아닙니다

 

 

 

Board 클래스에서 사용된 JPA 애너테이션은 무엇이냐?

 

@Entity: @Entity 애너테이션은 클래스를 JPA 엔티티로 지정합니다. Board 클래스는 데이터베이스의 테이블과 매핑되는 엔티티로 사용되기 위해 @Entity 애너테이션을 사용합니다.
@Id: @Id 애너테이션은 엔티티의 주키(primary key)를 지정합니다. Board 클래스의 id 필드에 @Id 애너테이션을 사용하여 주키로 지정합니다.
@GeneratedValue: @GeneratedValue 애너테이션은 주키의 값을 자동으로 생성하는 방법을 지정합니다. Board 클래스의 id 필드에 @GeneratedValue 애너테이션과 GenerationType.IDENTITY 전략을 사용하여 데이터베이스에서 자동으로 값을 생성하도록 지정합니다.

 

JPA 애너테이션을 사용하여 Board 클래스를 엔티티로 정의하고, 해당 클래스의 객체를 데이터베이스의 테이블과 매핑할 수 있습니다. 이를 통해 Board 객체의 인스턴스를 데이터베이스에 저장하고 조회할 수 있습니다

 

 

  1. @Entity: 클래스 레벨에서 사용되며, 이 클래스를 데이터베이스의 테이블과 매핑되는 엔티티로 선언합니다. 이 어노테이션을 사용하면 JPA는 이 클래스의 인스턴스를 데이터베이스에서 가져오거나 저장할 수 있습니다.
  2. @Id: 필드 레벨에서 사용되며, 해당 필드를 데이터베이스 테이블의 기본키(Primary Key)로 지정합니다.

 

 

 

@Entity와 @Id JPA 사용법은 무엇이냐?

 

@Entity와 @Id 애너테이션은 JPA를 사용하여 Java 객체와 데이터베이스 테이블을 매핑하는 데 사용됩니다. 아래의 코드를 통해 상세히 설명하겠습니다.

 

@Entity
public class Board {
    @Id
    private Integer id;
    // ...
}

 

 

위의 코드에서 Board 클래스는 JPA 엔티티로 지정되어 있습니다. 이는 Board 클래스가 데이터베이스의 테이블과 매핑될 것임을 나타냅니다.
@Id 애너테이션은 id 필드를 엔티티의 주키(primary key)로 지정합니다. 주키는 각 행을 고유하게 식별하는 역할을 합니다. Board 클래스의 id 필드에 @Id 애너테이션을 사용하여 주키로 지정되었습니다.
이렇게 @Entity와 @Id 애너테이션을 사용하여 Board 클래스를 정의하면 JPA는 해당 클래스의 객체를 데이터베이스의 테이블과 매핑합니다. id 필드는 테이블의 주키 컬럼과 매핑되어 데이터베이스에서 고유한 값을 가지게 됩니다.
이렇게 매핑된 엔티티 클래스를 사용하여 JPA를 통해 데이터베이스와 상호작용할 수 있습니다. 예를 들어, BoardRepository를 사용하여 Board 객체를 저장하거나 조회할 수 있습니다.

 

 

 

 

 

반응형

댓글