Maven
보다 gradle
이 빠르다고 하여 gradle
로 의존성을 관리하려고 한다.
이 의존성의 기능을 보자. 총 5가지의 기능이 있는데, 이 중 3가지만 주로 쓰인다.
Cache
는 생산성이 있지만, 개발 과정에 있어서는 아니다? Cache
로 인해서 에플리케이션을 수정해도 즉각적으로 변화를 볼 수 없기 때문이다. 따라서 이 Application Cache
설정값을 false로 수정하는 것이 개발자 입장에서는 좋다. 이 기능을 Spring boot Devtools
에서 제공한다.
❓Cache
Cache는 Client가 Server에 접속 시, 이미지, CSS 등 정적 컨텐츠를 특정 위치에 저장하여 웹 사이트 서버에 해당 컨텐츠를 매번 요청하지 않고, 특정 위치에서 불러와 사이트 응답시간을 줄이고, 서버 트래픽 감소 효과를 준다.
Spring boot Devtools
는 파일 수정 후 저장하면 Classpath
에 존재하는 파일의 변경을 감지하고 자동으로 서버를 재시작해준다. 설정을 통해 원하는 디렉터만을 트리거로 설정할 수 있다.
이건 React
의 Hot reload
과 같다. JS파일을 수정하면 자동으로 브라우저가 새로 고침이 된다.
Java 라이브러리로 반복되는 getter, setter 등 메서드 작성 코드를 줄여주는 코드 다이어트 라이브러리이다.
어노테이션을 사용하여 코드를 간결하게 작성하고, 컴파일 시점에서 필요한 코드를 자동으로 생성한다.
Spring Security
는 스프링 기반 웹 에플리케이션의 인증
과 권한
을 담당하는 하위 프레임워크이다. 간단히 말해서 웹에 회원가입과 로그인을 도와준다.
출처: https://doing7.tistory.com/105
JPA에 알아보기 전에 ORM
에 대해 알아보자
❗️ORM
Object-Relational Mapping
의 약자로, 객체와 관계형 데이터를 매핑하는 기술이다. 이 매핑이 왜 필요할까?
이는 객체와 관계형 데이터간에패러다임 불일치
때문이다. 이 문제로 인해 코드는 복잡해지며 이로 인해 많은 문제가 발생할 수 있다. 따라서ORM
은 개발자가 객체지향적인 설계에 집중할 수 있게 한다.
출처: https://medium.com/@emccul13/object-relational-mapping-9d84807f5536
❗️패러다임 불일치
이 단어는 객체 지향 프로그래밍과 관계형 데이터베이스 사이의 데이터 표현 방식이 달라서 생기는 문제를 뜻한다. 이 문제가 일어나는 이유는 이들의 목표와 동작 방식이 달라서이다.
- 객체 지향
- 필드와 메서드 등을 묶어서 객체로 만들어 사용하는 것이 목표
- 추상화, 캡슐화, 정보은닉, 상속, 다형성 등 시스템의 복잡성을 제어할 수 잇는 다양한 장치 제공
- 관계형 데이터베이스
- 데이터를 잘 정규화해서 보관하는 것이 목표
Java Persistence API
의 약자로, 자바 ORM 기술에 대한 API 표준 명세이다. JPA
는 애플리케이션과 JDBC
사이에서 동작한다. 개발자가 JPA
를 사용하면, JPA
내부에서 JDBC API
를 사용하여 SQL
을 호출하여 DB와 통신한다. 이는 개발자가 직접 JDBC API
를 사용할 필요가 없다는 뜻이다.
❗️JDBC
Java Database Connectivity
의 약자로, Java 기반 애플리케이션의 데이터를 데이터베이스에 저장 및 업데이트하거나, 데이터베이스에 저장된 데이터를 Java에서 사용할 수 잇도록 하는 자바 API이다.
출처: https://ittrue.tistory.com/250#google_vignette
- 인터페이스: 상호간에 소통을 위해 만들어진 접점이다.
스마트키는 자동차와 사람의 접점인 인터페이스라고 할 수 있다.- API: 애플리케이션에서 데이터를 읽거나 쓰기 위해 사용하는 인터페이스