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 |