일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- spring mongodb
- ipfs bean
- Java Call By Refernce
- java 1509
- 백준 특정한 최단 경로
- nodejs rabbitmq
- java 팩토리얼 개수
- 자바 1676
- 백준 1504 java
- spring mongoTemplate switch
- ipfs singletone
- go
- 자바 백준 팩토리얼 개수
- spring mongodb switch
- mongodb lookup
- Spring ipfs
- 백준 2252 줄세우기
- javav 1676
- kotiln const val
- spring mongoTemplate
- 안정해시
- 익명 객체 @transactional
- java 파티
- 전략 패턴이란
- kotiln functional interface
- kotiln const
- java 1238
- java 백준 1509
- rabbitmq 싱글톤
- 백준 연결요소 자바
- 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 |