| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- 안정해시
- go
- kotiln const val
- kotiln const
- rabbitmq 싱글톤
- kotiln functional interface
- spring mongodb switch
- nodejs rabbitmq
- mongodb lookup
- javav 1676
- spring mongoTemplate
- ipfs singletone
- spring mongoTemplate switch
- java 파티
- spring mongodb
- java 백준 1509
- java 1238
- 백준 특정한 최단 경로
- java 1509
- 자바 백준 팩토리얼 개수
- Claude Intelij 연결
- java 팩토리얼 개수
- 백준 연결요소 자바
- Spring ipfs
- 백준 2252 줄세우기
- 익명 객체 @transactional
- 백준 1504 java
- 자바 1676
- ipfs bean
- Java Call By Refernce
- Today
- Total
공부 흔적남기기
Spring JPA를 이용한 간단한 CRUD를 하면서 실수한 부분들 본문
1.Domain에 @Entity를 붙이지 않아서 30분동안 헤맸다. -> JPA에 DB를 넣기위해서 붙여야하는데 안붙였다.다음부터는 무조건 먼저 붙일 듯 ^^
2.Controller의 위치가 @ComponentScan이 있는 즉 @SpringBootApplication보다 같거나 아래 경로에 있어야 하는데 윗 경로로 만들었다가 20분정도 날린 것 같다. -> 경로 확인 잘하자! ^^ //+) 경로 다시 한번 확인해보기 이게 문제가 아니였던 것 같음.
3.Service에서 db처리하는 메소드 위에 @Transational을 붙이지 않아서 헤맸다. -> 이것도 30분은 헤맨듯 ^^ 덕분에 @Transational공부도하고 좋았다 ^^
4.URL 경로 오타나가지고 계속 404가 나왔다. -> ^^ 오타 ^^
5.Domain에 값들에 @ID와 @Column을 붙이지 않아서 5분정도 헤멨다. -> ^^ Nullable과 GeneratedValue(Stragey =GenerationType.Auto) ( Auto Increment기능) 이것들도 빼먹지말자
6. @RequiredArgsConstructor 와 @NoArgsConstructor 차이를 알 수 있어서 좋았다.
7. JPA는 update기능을 지원하지 않아서 따로 만들어 주어야 한다.
8. 생성 수정 시간을 자동으로 반영하게 해주는 Class Domain에 Extends로 붙여주면된다.
@MappedSuperclass // 상속했을 때, 컬럼으로 인식하게 합니다.
@EntityListeners(AuditingEntityListener.class) // 생성/수정 시간을 자동으로 반영하도록 설정
public class Timestamped {
@CreatedDate // 생성일자임을 나타냅니다.
private LocalDateTime createdAt;
@LastModifiedDate // 마지막 수정일자임을 나타냅니다.
private LocalDateTime modifiedAt;
}
9. Controller에서 클라이언트에게 받은 값은 인자앞에 @RequestBody를 붙여주고 Url로 받은 값은 앞에 @PathVariable을 붙여준다!
10. 신기한게 update를 할때 update할 객체를 db에서 찾아서 새로운 객체에 넣어준다음에 그 새로운 객체의 값을 바꾸면 update할 객체의 값도 바뀌었다. 신기하다 @Transection안에서 이루어져서 그런건가? 질문해야겠다.
@Transactional
public Long update(Long id, PersonRequestDto personRequestDto){
Person person = personRepository.findById(id).orElseThrow(
()-> new IllegalArgumentException("해당 정보가 존재하지 않습니다.")
);
person.update(personRequestDto);
return id;
}
11.Dto에 대해 처음 알게되었는데 좋은 개념인 것 같다. Domain에서 AI값을 제외한 Nullalbe=false 값들을 가지고 있는 class로 client에게 객체를 받을 때 Dto를 통해서 받는다. Domain에서 Dto를 통한 생성자나 update함수를 만들어 주면된다!
'web study > Spring' 카테고리의 다른 글
| Spring MVC 예제를 통한 이해 (0) | 2022.01.22 |
|---|---|
| Spring Dto와 서버와 클라이언트가 통신할 때의 값의 Type (0) | 2022.01.22 |
| Spring 컨테이너에 빈 등록하는 2가지 방식 (0) | 2022.01.19 |
| Spring 싱글톤 패턴 (0) | 2022.01.19 |
| Spring bean 조회하는 여러가지 방법 (0) | 2022.01.19 |