1. Spring Boot 개요
1-1. 정의
- Spring 기반 애플리케이션을 빠르고 쉽게 개발하기 위한 프레임워크
- 내장 서버가 존재하므로 서버 등록 과정을 생략 가능
1-2. 특징
- Tomcat 내장 서버가 자동으로 구동됨
- 8080 포트가 기본 페이지
- Web Document Root 디렉터리에서 기본 페이지를 검색
2. 데이터 처리
2-1. 프로젝트 작성 방법
- Controller를 추가해서 요청 처리/결과 반환을 할 수 있도록 함
- 데이터 편집 및 반환 기능
- @RestController 어노테이편으로 표기
- @RequestMapping으로 경로 연결
- @GetMapping 등 메서드 별 어노테이션으로 대체 가능
- 일반적으로 MVC(Model, View, Controller) 구조를 가짐
2-2. 처리 흐름
- Spring Boot의 요청은 Dispatcher Servlet이 처리
- 요청 처리 시 데이터 흐름: Controller <-> Service <-> Data
- DAL(Data Access Layer)등이 추가될 수 있음
- 애플리케이션-저장소 간 상호작요을 위한 계층
- 비즈니스 로직과 데이터 접근 코드를 분리해서 유지보수성, 확장성을 향상
- DAO - JDBC Template - JDBC Driver - Database 과 같은 계층을 가짐
2-3.DAO(Data Access Object)
- 데이터베이스와 상호작용하는 객체
- 개발자가 SQL문으로 CRUD를구현
- 애플리케이션과 DB 사이의 불일치가 발생하는 것을 해결
- SQL문 등 데이터베이스를 다루는 구문만 전문적으로 처리해서 서비스 계층은 로직만 다룰 수 있도록 함
2-4. JDBC(Java Database Connectivity)
- DB에 접근할 수 있도록 JAVA가 제공하는 API
- API 명세이며, 추상 계층임 -> 구현 필요
- 데이터베이스에 CRUD하는 방법 제공
- Plain JDBC의 단점
- 쿼리 실행 전후에 많은 코드가 요구됨
- 예외 및 트랜잭션 처리 필요
- 매 쿼리 실행 시마다 수행해야 함
2-5. JDBC Template
- Plain JDBC의 단점 해결을 위한 접근 방법 중 하나
- Spring에서 제공(Spring JDBC)
- 개발자의 역할 일부를 담당
- 개발자는 SQL 작성, 결과 출력을 수행
2-6. JDBC Driver
- JDBC Interface의 구현체
- Java Client의 요청을 DBMS가 처리할 수 있는 프로토콜로 변환하는 클라이언트 측 어댑터
- DB마다 존재하며, 사용하는 DB에 맞는 Driver를 사용해야 함
- DataSource를 JDBC Template에 주입하고, JDBC Template는 JDBC Driver로 DB에 접근
2-7. DB 연결
- @Configuration 어노테이션으로 설정 정보를 가져옴
- @PropertySource 등으로 Configuration 클래스에 등록
- 연결에 필요한 정보를 설정 파일에 추가 -> application.properties 등
- Hikari 등의 툴을 사용함
2-8. MyBatis
- Java 애플리케이션과 RDBMS의 상호작용을 위한 퍼시스턴스 프레임워크
- 객체와 SQL 구문을 자동매핑 -> 개발 생산성 향상
- SqlSessionFactory로 SqlSession 객체를 만들어서 설정
- 기능
- DB 연결
- 트랜잭션 관리
- Mapper 파일 위치 관리
- Mapper 파일 사용하기
- ApplicationContext 객체를 주입
- SqlSessionTemplate?
- Spring 프레임워크와 MyBatis를 통합하기 위해 사용
- mapper의 경로를 지정
참고
- ModelAndView: 결과를 지정된 템플릿에 넣어서 반환하는 것으로, 생성자에 템플릿 경로를 지정해야 함
- @Service: 비즈니스 로직과 관련된 클래스에 사용
- @Mapper: mapper 인터페이스에 붙여서 MyBatis에서 사용할 수 있도록 하는 어노테이션
- Mybatis에서의 SQL문
- SQL문을 XML 형식으로 저장
- 태그 안에 , 등의 태그를 사용
태그 안에는 id 옵션을 사용해서 연결할 메서드, resultType을 사용해서 결과 타입이 있는 클래스를 정의
View 파일
resource 경로에 저장
thymeleaf 등을 사용하면 받아오는 객체와 컨트롤러에서 보내주는 정보는 동일 -> 컨트롤러가 제공하는 정보를 활용