ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL 49th day
    TIL(Today I Learned) 2021. 12. 10. 12:23

    HikariCP

    • 데이터베이스와 커넥션풀을 관리해주는 기능

    커넥션 풀

    • 커넥션풀은 미래에 데이터베이스 요청이 왔을 때 더 좋은 성능으로 이용할 수 있도록 캐시를 유지관리해주는것을 의미

    thymeleaf

    • nature templates
      • 마크업언어의 변경 최소화, 웹 브라우저에서 확인 가능

    @Controller

    • 스프링 MVC 컨트롤러로 인식
    • MVC에서 C를 담당
      • 역할을 분담하므로써 대규모 프로젝트의 비용절약, 유지보수 비용 절약 등이 가능
    • 사용자의 요청이 진입하는 지점
    • 단지 요청만 받고 실질적인 서비스는 서비스(Layerd Architecture)에서 담당
    • 사용자에게 View를 응답으로 보내줌.

    Model

    • Model을 통해 데이터를 실어서 View에 넘길 수 있다.
      • Model.addAttribute

    스프링 부트 타임리프 매핑

    • 양식) resources:template/ +{ViewName}+ .html
    • 메인 화면 양식(정적)) resources:static/ +{ViewName}+ .html

    인텔리제이 자동 리부트

    • build.gradle의 dependencies에 추가
      • implementation 'org.springframework.boot:spring-boot-devtools'
    • build에서 리컴파일하면 바뀐 설정 값으로 화면에 표시(ctrl+shift+f9)

    h2 database

    • h2 데이터베이스 설치후 h2.bat 파일 실행(window)
      • jpashop.mv.db 생성 후
      • 네트워크 연결 루트로 설정(jdbc:h2:tcp://localhost/~/jpashop)

    yaml(yml)

    • yaml은 properties의 진화형(?) 속성 설정
      • 사람이 더 직관적으로 볼 수 있도록 변화.
      • 중복되는 코드가 더 적어짐
      • properties에서 속성이 유사할 때 벌어질 수 있는 에러를 상쇄시켜줌
    • 마크업이 아닌 데이터가 중심
    • MVCC=TRUE 속성을 이용하면 동시 접속시에 더 빠른 처리가 가능하다.
    • driver-class-name: org.h2.Drive : 데이터베이스 커넥션 설정
    • hikariCP가 커넥션 풀 연결을 해줌
    • ddl-auti
      • 자바언어에서 Object를 선언해두고 @Entity만 붙이면 웹어플리케이션이 올라갈 때 데이터소스에 접근을해서 DBMS의 스키마를 자동으로 수정하거나 지우고 다시 만들거나 검증하거나 하는 역할을 해준다.
      • 웹애플리케이션이 올라갈 떄 DBMS 스키마에 무슨 행위를 할 것인가에 대해 정하는 정책
      • 개발 환경에서 사용하면 편리하지만 실무에서의 사용은 위험할 수 있다. 실무에서는 update나 validate를 잘 사용하면 좋다.

    DAO(Spring Framework)

    • Data Access Object
      • 즉, 객체 단위로 데이터를 접근하는것을 의미하는데
      • 하나의 SQL문을 제어하는 데이터 객체 단위라고 볼 수 있다.
      • Controller는 업무 단위, Server는 트랜잭션 단위, DAO는 DB SQL 단위
    • DB에 대한 접근을 분산시켜줘서(다수의 원격 DAO 호출을 통해) 트랜잭션간의 오버헤드를 감소시켜줄 수 있다.
    • Controller-> server -> DAO, Controller-> server -> serverImpl -> DAO 구조로 만든다.

    JPA @Id @GeneratedValue

    • JPA는 크게 직접 할당과, 자동생성으로 구분되는데,
      • @Id는 직접할당
      • @GeneratedValue는 자동 생성이다.
      • 기본키 생성을 DB에 위임하도록 해준다.

    커멘드와 쿼리를 분리하라(Command and Query Responsibility Segregation)(CQRS)

    • 조회하는 기능과 처리하는 기능을 분리하라
      • 예) 회원 정보를 저장하는 메소드를 생성했을 때, 회원을 저장하는 메소드이기 때문에 조회기능을 분리할 필요가 있다. 따라서, return member.getId()로 선언해준다.

    엔터티(entity)

    • 엔터티는 실체, 객체라고 생각할 수 있다.
    • 엔터티는 두개 이상의 인스턴스(객체)들의 집합이다.
    • 엔터티는 속성을 지녀야한다.
    • 엔터티는 다른 엔터티와 하나 이상의 관계를 가져야한다.

    @RunWith

    • 스프링부트와 관련된 클래스를 테스트할 것임을 알리는 어노테이션

    No EntityManager With actual transaction error

    • 한마디로 트랜잭션이 없다는 에러
    • 엔터티매니저를 포함한 모든 데이터 변경은 항상 트랜잭션 안에서 이뤄져야한다.

    Gradle vs Maven

    • 성능상 Gradle이 압도적으로 우위에 있지만 러닝커브에 의해서 Maven을 사용하는 팀은 아직도 많은 추세..
      • 따라서, Maven을 공부해놓는것도 좋은 방법이라고 생각.(또한 Maven을 사용해보고 Gradle이 어느 부분을 보완해주었는지 직접 느껴보는것도 좋다고 생각함.)

    SOA

    • Service Oriented Architecture
      • 즉, 서비스 중심 지향 개발을 의미한다.
      • 현실의 업무를 기준으로 개발,

    CBD

    • Component Based Development
      • 컴포넌트 기반 개발을 의미한다.

    'TIL(Today I Learned)' 카테고리의 다른 글

    TIL 51th day  (0) 2021.12.12
    TIL 50th day  (0) 2021.12.11
    TIL 48th day  (0) 2021.12.09
    TIL 47th day  (0) 2021.12.08
    TIL 46th day  (0) 2021.12.07
Designed by Tistory.