✏️ 2022-12-05 Today I Learn

@mitoconcrete · December 05, 2022 · 6 min read

[TodayKeywords] 오늘 공부한 키워드

  • Interface : 양간의 경계면/접점
  • Controllor : HTTP의 접점에 있는 계층. 요청 처리 및 렌더링을 담당.
  • Service(Domain) : 유효성 검사 및 계산을 담당.
  • Repository : DAO 계층
  • DAO(Data Access Object) : DB에 접근가능 한 객체
  • DTO(Data Transfer Object) : 계층 간 데이터를 교환하기 위한 객체, 순수하게 get, set만 한다.
  • Spring : 계층 간 분리를 통해 조금더 개발자가 Service(Domain) 단의 개발에 집중 할 수 있도록 함.
  • DBMS(DataBase Management System) : DB를 관리하고 운영하는 소프트웨어
  • DDL(Data Definition Language) : 데이터를 정의하는 언어. CREATE, ALTER, DROP, TRUNCATE
  • DCL(Data Contorl Language) : 접근권한을 정의하는 언어. REVOKE, GRANT
  • DML(Data Manipulation Language): 데이터의 CRUD에 대한 것. CREATE, SELECT, UPDATE, DELETE
  • JDBC(Java DataBase Connectivity) : Java로 데이터베이스 연결을 가능하도록 만들어주는 API
  • JPA(Java Persistence API) : Java ORM 기술에 대한 표준명세
  • 영속성 컨텍스트 : JPA를 사용하게 되면, 어플리케이션과 DB사이에 영속성을 관리하기 위한 엔티티임시저장소가 생긴다. 이를 영속성 컨텐스트라고 한다.
  • 엔티티의 생명주기 : 비영속상태/ 영속상태/ 준영속상태/ 삭제상태
  • @PathVariable : { } 내에 전달되는 매개변수를 전달받기 위한 어노테이션. 생략불가
  • @RequestParam : request params 형식으로 주소를 통해 전달되는 인자를 받아오기 위한 어노테이션으로. 생략가능하다.
  • @ModelAttribute : request body 를 통해 전달된 값을 곧바로 클래스로 받아서 사용가능하도록 만드는 어노테이션. 생략가능하며, 전달받는 클래스에는 세터가 있어야한다.
  • @RequestBody : request body 를 통해 전달되는 json 값이 mapping된다. 생략불가하며, 전달받는 클래스에는 세터가 있어야한다.
  • JPA Auditing : @EnableJpaAuditing 어노테이션으로 구현가능하며, 감시하다의 의미를 지닌다. Entity의 생성수정시 그 시간을 자동으로 기록하고 저장해준다.
  • JPA 방언(Dialect) : JPA가 어떤 DBMS의 SQL를 사용하고 있는지 인식하도록 셋팅하는 것이다. 셋팅되면, 그에 맞는 Dialect 추상클래스를 가져와 사용한다.

[NextKeyworks] Study Queue

  • HTTPS
  • SOLID
  • loop label
  • CSV
  • 파일입출력
  • UML
  • UTC
  • epoch time / Instant time
  • MVC
  • URL ClassLoader
  • Secure ClassLoader
  • JNI
  • GC
  • HOF
  • 자바 해시코드
  • OSI 7 계층
  • PCB
  • DI
  • IOC
  • 스프링 설계철학
  • RESTful

[회고] 221205 : 선택과 집중을 잘해야하는 시기

새로운 프레임워크를 학습하기 시작했다. 스프링은 생각보다 잘 갖춰진 프레임워크 같았다. 마치 장고처럼!
과거의 경험을 토대로 생각해보면, 이런 프레임워크는 정해진 틀을 벗어나려고 하다보면 그 때부터 러닝커브가 시작된다. 또한, 스프링을 자주쓰다보면 자바를 잊어버리는 이상한 상황이 발생하는데, 그 점을 항상 경계해야겠다.

스프링하면서 신경써야할 것들은 다음과 같다.

  • 자바를 잃지 않기 : 어차피 JVM에서 돌아가는것이고, 근본은 자바이다. 따라서, 자바언어를 잊어버리면 근본적인 문제를 해결 할 수 없다.
  • 스프링, JPA, JDBC, Lombok 간의 관계를 정확히 파악하기 : 스프링은 프레임워크인데 그 안에 JPA, JDBC, Lombok를 이용한 것인지, 스프링 그자체로 할 수 있는 것은 어디까지인지 정확히 파악해야한다.
  • 특정 에디터에 종속되는 것을 경계하기 : 인텔리제이는 좋은 에디터이고, 자동완성이 정말 잘되있다. 또한 톰캣도 알아서 띄워준다. 하지만, 언제나 유료버전을 사용 할 순 없다. 인테리제이없이도 스프링을 돌릴 수 있도록 하자. (아마 build.gradle을 작성하는 능력일 듯)
  • 왜 이렇게 사용하는지 의심하기 : 그냥 아무런 생각없이 사용만 하면, 툴키디가 된다. 왜 굳이 이런선택을 해야했는지 의심하고 리서치해보며 개발하자.

나는 취업준비/면접준비를 병행하며 학습을 하는 만큼 그에 맞게 학습을 해야한다. 따라서, 위를 꼭 기억하며 스프링을 학습하려고 한다.

@mitoconcrete
어제보다 조금 더 성장하기 위해 기록합니다.