자바 Spring 학습:
기본 구조:
domain
- Memo(어노테이션 객체)
- MemoRepository(repository)
- MomoRequestDto(DTO)
- Timestamped
service
- MemoService(service)
controller
- MemoController
제작순서: Repository ->Service->Controller
RDBMS: RelationalDataBaseManagementSystem관계형데이터베이스
H2: RDBMS의 일종으로 프로그램을 끄면 사라짐
JPA: Java언어를 SQL로 바꾸어줌, Java로 코드를 작성하면 SQL로 번역해줄 뿐만 아니라, 기본적인 기능이 거의 완벽하게 들어있다.
Repository: JPA를 작동시키는 매개체
Lombok: 자주쓰는 코드를 자동으로 작성해줌
DTO: 도메인 모델을 캡슐화 하여 보호할 수 있다.
Timestamped 상속해서 시간 다루기: 어노테이션(담을 객체)에 extends로 상속시키기
@Getter
@MappedSuperclass // Entity가 자동으로 컬럼으로 인식합니다.
@EntityListeners(AuditingEntityListener.class) // 생성/변경 시간을 자동으로 업데이트합니다.
public abstract class Timestamped {
@CreatedDate
private LocalDateTime createdAt;
@LastModifiedDate
private LocalDateTime modifiedAt;
}
CRUD: CreateReadUpdateDelete
스프링의 구조는 3가지 영역으로 나눌 수 있다.
- Controller : 가장 바깥 부분, 요청/응답을 처리함.
- Service : 중간 부분, 실제 중요한 작동이 많이 일어나는 부분
- Repo : 가장 안쪽 부분, DB와 맞닿아 있음.
Update 는 Service 부분에 작성한다.
JPA공식문서로 사용법 찾아보기: https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods
Spring Data JPA - Reference Documentation
Example 109. Using @Transactional at query methods @Transactional(readOnly = true) interface UserRepository extends JpaRepository { List findByLastname(String lastname); @Modifying @Transactional @Query("delete from User u where u.active = false") void del
docs.spring.io
NullPointerException: 가리키는 대상이 없다.
IllegalArgumentException: argument(전달받은 재료)가 뭔가 잘못됬다.
@: 어노테이션
@RequestBody: 클라이언트에서 값을 파라미터로 건내받을 수 있게해줌
@PathVariable: 주소의 {}값을 파라미터로 넣어줌
JSON : JavaScriptObjectNotation->자바스크립트에서의 딕셔너리
JSON.stringify:json을 문자열로 바꿔줌(전달은 문자열밖에 못하기 때문)
그래서 번역 잘하라고 contentType:"application/json"요소가 있는 것
자바스크립트에서 문자열에 변수를 넣을땐 ``(백틱)을 쓰고 ${}안에 변수를 넣는다.
ajax 기본형식(get):
$.ajax({
type: 'GET',
url: '/api/memos',
success: function (response) {
console.log(response);
}
})
ajax 기본형식(post):
$.ajax({
type: "POST",
url: "/api/memos",
contentType: "application/json", // JSON 형식으로 전달함을 알리기
data: JSON.stringify(data),
success: function (response) {
alert('메시지가 성공적으로 작성되었습니다.');
window.location.reload();
}
})
Timestamped에 @Getter넣기 + Application에 @EnableJapAuditing 넣기 ->시간 저장/수정에 필수
ajax는 틀 복사해서 가져다 쓰기
LocalDateBetween JPA찾아보기
'TIL' 카테고리의 다른 글
2022.07.26.TIL (0) | 2022.07.26 |
---|---|
2022.07.25.TIL (0) | 2022.07.25 |
2022.07.22.TIL (0) | 2022.07.22 |
2022.07.21.TIL (0) | 2022.07.21 |
2022.07.20.TIL (0) | 2022.07.20 |