23.11.1 TIL

전주현·2023년 11월 1일

TIL

목록 보기
2/21

1. 오늘 한 것

  1. 스프링 강의 듣기

2. 오늘 배운 것

  • thymeleaf

    템플릿 엔진, 동적인 html 웹페이지를 만들기 위한 라이브러리, template 폴더 안에 담긴다.

  • redirect

    리턴값이 redirect:/hello.html 이면@GetMapping("/html/redirect")였어도 hello.html로 재요청해서 준다.

  • json
    • 자바에는 존재하지 않고 자바스크립트에서 존재하는 형식
    • return "{\"name\":\"Robbie\",\"age\":95}";
      이렇게 넘길 경우 텍스트 형식으로 넘어감
    • return new Star("Robbie",95);
      이렇게 객체로 넘길 경우 json 형식으로 넘아감
  • @ResponseBody

    html을 반환하는게 아니라 그냥 데이터를 반환하는것이라는 의미

  • @RestController

    @Controller 대신 @RestController 사용 시 각 메서드마다 @ResponseBody를 안 붙여도 됨

  • Jackson
    • json 데이터 구조를 처리해주는 라이브러리
      object -> json(String)
      json(String) -> object
  • PathVariable
    • 슬래시(/) 단위로 주소를 쓰는 방식
  • RequestParam
    • 쿼리스트링 방식, ? 뒤에 붙음
    • @RequestParam 은 생략 가능
    • required 옵션은 디폴트는 true
      required = false 이런식으로 설정 가능
  • ModelAttribute
    • 바디 부분에 들어온 쿼리스트링 방식의 데이터를 객체에 매핑해서 가져 올 수 있음
    • 받을 파라미터가 많을 경우 객체로 받으면 코드가 간결해짐
    • @ModelAttribute 도 생략 가능
    • 어노테이션을 생략 할 경우 스프링은 심플밸류타입은 requestParam으로 인식하고, 객체는 modelAttribute로 인식함
  • @RequestBody

    POST 방식으로 넘어온 데이터를 json 형식으로 받으려면 requestbody 어노테이션을 사용해야함

  • localhost:8080은 기본적으로 index.html 파일에 접근
  • DTO
    • Data Tranfer Object
    • 데이터 전송 및 이동을 위해 생성되는 객체를 의미
    • client에서 보내오는 데이터를 객체로 처리할 때 사용
    • 서버의 계층간의 이동에도 사용
    • DB와의 소통을 담당하는 Java클래스를 그대로 client에 반환하는 것이 아니라 DTO로 한번 변환한 후 반환할 때도 사용
    • Entity와 비슷하지만 분리하는 이유는 DB와 소통하는 클래스는 조심해서 다뤄야하기 때문, JPA에서 추가 설명
  • SQL

    DDL : CRDT
    DCL : GRANT, REVOKE
    DML : ISUD

  • 제약조건에 따로 이름을 설정할때는 CONSTRAINT ""
  • JDBC
    • Java Datebase Connectivity
    • DB에 접근할 수 있도록 Java에서 제공하는 API
    • JDBC를 사용하면 DB 변경 시 드라이버 교체만으로 쉽게 DB 변경 가능
  • JdbcTemplate
    • Spring JDBC
    • JDBC만 쓰면 교체는 쉽지만 여전히 DB에 연결하기 위한 작업 로직들을 직접 작성해야하는 불편함
    • 이러한 불편함을 해결하기 위해 커넥션 연결, statement 준비 및 실행, 커넥션 종료 등의 반복적이고 중복되는 작업들을 대신 처리해주는 JdbcTemplate이 등장
    • 하지만 JdbcTemplate도 복잡해서 현업에서 사용할 가능성이 낮음
    • DB와 자바의 객체를 매핑해서 소통할 수 있는 ORM이라는 기술이 등장

3. 느낀 점

  1. sql의 select 부분은 좀 사용할 수 있겠는데 나머지는 아직 보고 따라하는 정도라 sql도 중요하다고 하니 sql을 따로 공부해야할 것 같다.
profile
개발

0개의 댓글