오늘은 27일차이다. 오늘은 오전에 알고리즘 문제를 풀고 오후에는 백엔드 개발자의 주특기인 SpringBoot에 대해 공부하고 간단한 메모장 프로젝트를 만들어보았지만 전체적인 내용으로는 스프링부트 안에 들어가 있는 기능으로 간단한 CRUD를 만들 수가 있구나라는 것을 알았고, 아직까지는 깊게 파고들다가는 나오는 입구를 못찾아 헤맬거 같아서 얇고 넓게 배우려고 노력 중이다. 우리가 수학문제 풀 때 기본적인 사칙연산은 알고 어려운 문제를 풀 듯이 자바 기초를 탄탄히 하면서 다음 과제나 강의를 들어야 겠다는 생각이 들었다.
오늘 배운 것
> 1. JPA(Java Persistence Api)
-쿼리를 자동으로 만들어 줍니다.
-그리고 어플리케이션 계층에서 sql 의존성을 줄여서 번거로운 작업이 매우매우 단축됩니다.
-패러다임의 불일치를 해결해줍니다. 이와 관련된 내용으로는 매우 다양한 예시가 있지만, 지금 모두 이야기하게는 너무 많은 것 같습니다.
-특정한 상황을 제외하고는,성능도 챙겼습니다. 최적화를 위한 노력이 있었습니다..
-방언도 지원해줍니다. h2 Databse를 붙여도, mySql, oracle 뭘 붙여도 코드의 변경은 없습니다,
관계형 db이자 표준을 준수한 sql을 지원한다면, jpa가 방언들도 알아서 처리해줍니다.2. 영속성(Persistence)
-데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성을 말한다.
-영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에 프로그램을 종료하면 모두 잃어버리게 된다.3. ORM(Object-Relational Mapping)
-우리가 일반적으로 알고 있는 애플리케이션 Class와 RDB(Relation DataBase)의 테이블을
매핑(연결)한다는 뜻이며, 기술적으로는 애플리케이션의 객체를 RDB 테이블에 자동으로 영속화 해주는 것이라고 보면된다.4. 프로젝트 구조
controller / domain / service
domain - DB의 테이블 역할을 하는 클래스
Repository - DB의 SQL 역할을 하는 인터페이스
Cotroller - 가장 바깥 부분, url로 들어온 요청/응답을 처리한다.
Service - 중간 부분, 실제 중요한 동작이 많이 일나는 부분이다.
Repo(Domain, Repositoty) - 가장 안쪽 부분, DB와 밎닿아 있다.
TimeStamped.java 파일은 생성/수정 시간을 자동으로 업데이트 되도록 한다.