본문 바로가기

Spring boot

Spring boot 끄적 끄적(2)

반응형

1. 엔티티로 객체를 생성할때.....

 

 

 

이렇게 설정해주면 따로 id 값을 지정하고, 뭐 id++ 하면서 저장할 필요 없이 알아서 생성해준다

@Id 는 DB에서 Primary Key를 의미한다

참고로 @Entity 객체 안에는 @Id를 가지 변수가 존재해야 한다.

JPA는 이 어노테이션을 통해 각각의 객체를 구분한다

 

@GeneratedValue를 통해 Id 생성 전략 설정 가능하다

IDENTITY : 기본키 생성을 DB에 위임한다. mysql 은 AUTO_INCREMENT 이다.

@Column을 통해 테이블의 Id가 DB에 매핑될때 컬렴명이 "user_id" 로 매핑된다.

 

2. @Enumerated 어노테이션이란?

 

 

생각해보니 DB 테이블의 컬럼의 도메인 값은 보통 뭐 VAR CHAR(15) 또는 , INT 이렇게 넣었지 Enum타입을 넣는걸 들어본적도 본 적도 없다. 그렇기에 이렇게 따로 @Enumerated 어노테이션을 설정 해줘야한다.

 

 

3. Enum type 타임리프에서 문자열 비교 

 

계속 ${session.member.role}을 출력하면 ADMIN이 html에서 잘 출력되는걸 확인 했는데 

th:if ="${session.member.role=='ADMIN'}" 조건문이 아예 동작을 안해가지고 2시간을 헤매다가 결국 GPT 4.0 시간제한 풀려서 다시 물어봤다.

알고보니 th:if="${session.member.role.name()=='ADMIN'}"으로 해줘야 한다고 한다...

고마워요 GPT~~~~

 

4. JPQL 이란...

JPQL은 엔티티 객체를 대상으로 하는 쿼리 언어이다.

JPQL은 SQL과 유사한 구문을 사용한다.

 

JPQL 문법 특징

  • 엔티티 클래스 이름, 엔티티 필드의 대소문자가 일치해야 한다
  • JPQL 키워드는 대소문자 구분하지 않는다(SELECT, select..)
  • 엔티티 객체를 대상으로 하는 쿼리이므로 엔티티 이름을 사용한다(테이블 이름 X)
  • 별칭은 필수이다
  • JPQL은 결국 SQL로 변환된다.
  • SQL을 추상화해서 특정 데이터베이스 SQL에 의존하지 않는다

5. DTO <-> Entity 변환은 어느 layer에서 해주는게 좋을까?

서비스단에서 해주는게 일반적이라고 한다.

 

6. @RequestBody

@PostMapping("/create")
public ResponseEntity<BoardDTO> createBoard(@RequestBody BoardDTO boardDTO) {
    // boardDTO는 JSON 데이터를 변환한 자바 객체입니다.
    boardService.saveBoard(boardDTO);
    return ResponseEntity.ok(boardDTO);
}

이 코드에서 클라이언트에서 넘어온 Request의 body 파라미터 값이 JSON으로 담겨져 넘어오는데 이걸 자바 객체로 변환시켜주는 어노테이션이다.

반응형

'Spring boot' 카테고리의 다른 글

Spring boot 끄적끄적(3)  (0) 2024.07.16
NoSQL vs SQL  (0) 2024.07.16
왜 HTTP Status Code를 사용해야하는가??  (0) 2024.07.08
Spring boot 생성자 주입 vs 필드 주입  (0) 2024.06.28
Spring boot 끄적 끄적(1)  (0) 2024.06.25