📌 순천향대학교 멋쟁이 사자처럼 동아리 백엔드 트랙에서 배운 내용을 정리하여 올립니다.
- main/java: 자바 파일을 작성하는 공간
Controller, Service, Repository, Entity, DTO등
- main/resources: 자바를 제외한 HTML, CSS, JavaScript, Application/yml 파일을 작성하는 공간
- Templates : 템플릿 파일 저장.
이때 템플릿 파일은 HTML 파일 형태로 자바 객체와 연동되는 파일이다.
- Static : CSS, JS, 이미지 파일(jpg, png) 등 저장 공간
- application.yml / properties 파일: Springboot 설정 정보 관리 파일
.properties
에서.yml
로 변경한 이유?
yml이 properties보다 가독성이 훨씬 나음.
.yml을 사용하는 것을 추천해서 변경
프로젝트를 위해 필요한 플러그인 & 라이브러리 등 기술
DB에 쓰일 필드와 여러 엔티티간 연관관계 정의
즉, DB 테이블에 대응하는 하나의 클래스
DB? 구조화된 정보 또는 데이터의 조직화된 모음으로서 일반적으로 컴퓨터 시스템에 저장되는 것
- 객체와 관계형DB 간의 매핑을 자동으로 처리해주는 기술
- ORM 기술에 대한 API 표준 명세
쉽게말해, 자바에서 ORM을 사용하기 위한 표준 인터페이스
Spring Data JPA: JPA를 쓰기 편하게 만들어 놓은 모듈
- JPA를 Repository 기반으로 간편하고 효율적으로 사용할 수 있는 모듈.
- 사용자가 Repository에 정해진 규칙대로 메소드 입력시, Spring이 알아서 해당 메소드 이름에 적합한 쿼리를 날리는 구현체를 만들어 Bean으로 등록
Hibernate는 JAP(interface)의 구현체로서 가장 높은 점유율 가짐
- DB 통신이 필요할 때 사용
- 함수명으로 기능 제작
ex) findById (Long Id)
스프링이 내부적으로 인터페이스 타입에 맞는 객체를 생성해서 빈으로 등록
메서드 | 기능 |
---|---|
save() | 레코드 저장 (insert, update) |
findOne() | primary key로 레코드 한 건 찾기 |
findAll() | 전체 레코드 불러오기. 정렬(sort), 페이징(pageable) 가능 |
count() | 레코드 개수 |
delete() | 레코드 삭제 |
ddl-auto
• create : 실행될 때마다 기존 스키마를 삭제하고 새로운 스키마 생성.
• creat-drop : Create와 동일, 종료 시에 스키마를 다시 삭제함
• update : 기존 스키마와 현재 Entity를 비교하고 변경점이 있으면 스키마에 반영.
• validate : 기존 스키마와 Entity를 비교하고 일치 여부 확인.
변경사항이 있으면 반영하지 않고 경고 발생 or 예외 던짐
• none : 자동으로 스키마를 생성하거나 업데이트 하지 않는다. 개발자가 수동으로 관리 해야 함
테스트 할 때: create 또는 update
서버 배포 후: validate 또는 none
Service에는 비즈니스 로직을 주로 다룸
비즈니스 로직이란?
ex) 주문 관리 시스템
- 주문처리
- 재고조회
- 재고 감소
- 주문 발송
①. @Service
루트 컨테이너에 Bean 객체로 생성해 줌.
루트 컨테이너에 Bean 객체로 등록을 해야 SpringBoot가 제공하는 기능 사용 가능
②. @Transactional
해당 범위 내 메소드가 Transcation이 되도록 보장
Transaction이란?
ex) 중고 거래
명품 지갑을 구매하기 위해 판매자에게 입금했으나 벽돌이 와버림
-> 시간을 되돌리고 싶은 구매자..
Transaction은 시간을 되돌릴 수 있음!
모든 작업들이 성공적으로 완료 되어야 DB에 적용하고, 중간에 에러가 발생하면 작업 원상복구.
Controller에서 바로 Repo로 연결해서 사용할 수 있는데,그러면 중복 코드 발생
즉, 코드 중복, 유지보수 및 재사용성 저하
- 사용자가 웹 브라우저에서 URI로 요청을 보내면, 그 요청을 Controller가 받음.
- 사용자의 Request를 전달 받아 요청의 처리를 담당하는 Service 호출
- @Controller: 주로 View(화면)을 반환하기 위해 사용
- @RestController: @Conteroller + @ResponseBody
의 형태로, JSON 형태 객체 데이터 반환
JSON이란?
- JavaScript Object Notation_의 약자로, 데이터를 저장하거나 전송할 때 많이 사용되는 data 교환 형식
- 특정 언어에 종속되지 않으며, 대부분 프로그래밍 언어에서 다룰 수 있음
Method | 기능 |
---|---|
PostMapping | Body를 통해 서버로 요청 데이터 전송 (Create) |
GetMapping | 리소스 조회 (Read) |
PutMapping / PatchMapping | 리소스 대체 (update) |
DeleteMapping | 리소스 제거 (Delete) |