본문 바로가기

TIL

2022.07.23.TIL

자바 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: 도메인 모델을 캡슐화 하여 보호할 수 있다. 

Domain ,Repository = Table,SQL

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