728x90
의존성 주입을 하는 방식은 총 3가지가 있다
이 중에서 객체 선언을 하고 생성자를 만들어서 의존성을 주입하는 방식이 제일 빈번하게 사용된다
예시)
계층형 아키텍처
- 변경의 책임을 갖는 애만 변경되고 다른 계층은 변경이 되지 않아 전체적인 변경이 최소화된다!
Spring Repository
- Database에 접근하여 데이터 저장, 조회 등을 수행하는 역할
- Service와 Datavase 사이의 추상화 된 계층
- Database 기술이 변경되면 Repository 코드는 변경될 수 있지만, Service 계층의 코드는 변경되지 않도록 설계한다
데이터를 접근하기 위한 기술
- JDBC : Database에 접근하기 위한 Java의 표준 API
- JDBC Template : JDBC를 효율적으로 사용하기 위한 Spring API
- SQL Mapper
- SQL과 Java 객체를 매핑하는 기술
- SQL의 input 또는 output을 JAva 객체와 매핑
- Java에서 SQL Mapper에 적용하기 위해 MyBatis가 일반적으로 사용된다
- 국내에서 많은 기업의 대규모 프로젝트에서 활용되고 있음
- 옛날 세대에서 많이 쓰인 기술
- ORM(Object Relational Mapping)
- RDBMS의 테이블과 Java 객체를 매핑하는 기술
- ORM Framework이 객체와 테이블을 매핑하는 역할을 수행한다
- ORM Framework이 SQL을 자동 생성한다
- Java, Spring에서 ORM 적용을 위해 Hibernate와 Spring Data JPA가 주로 사용된다
- 요즘 사용률이 높아지는 추세
SQL Mapper를 배우는 이유?
- 백엔드의 동작을 명확하게 이해 가능
- SQL에 대한 연습 가능
- 아직까지는 국내에서 SQL Mapper가 많이 사용됨
Spring Boot에서 MyBatis 설정
- Maven 의존성 설정 : MyBatis 및 H2 Database
- application.properties 설정
Maven
- Java 프로젝트에서 사용되는 빌드 자동화도구
- 소스코드를 실행 가능한 SW 산출물로 만드는 과정
- Maven의 2가지의 주요 기능
- 프로젝트 구성 및 빌드 관리
- 라이브러리 의존성 관리
- (아직까지는 대기업에서 Gradle로 많이 바뀌지 않아서 Maven 사용할 확률 높음)
Maven의 라이브러리 의존성 관리
- 사용할 외부 라이브러리 정보를 명시하면 자동 다운로드 후 사용
- 개발자가 필요한 라이브러리를 일일이 다운로드 받아 설정할 필요 없다
- pom.xml 파일의 dependencies영역에 사용할 라이브러리 정보 설정
- 사용할 라이브러리가 Maven Repository에 등록되어 있어야 한다
- Maven Central Repository : Maven에서 관리하는 중앙 Repository
Maven pom.xml
- pom - Project Object Model
- Maven이 프로젝트를빌드하기 위해서 필요한 정보를 기술하는 XML 파일
- 프로젝트 정보
- 프로젝트가 필요로 하는 라이브러리 의존성 정보
- 빌드 단계에서 사용되는 정보
- 최소한의 pom.xml
- project태그로 시작
- groupId : 다양한 프로젝트 간의 식별 가능한 고유한 이름
- artifactId : 프로젝트 하위의 애플리케이션 이름, 빌드 후 생성되는 산출물 파일 명
- version : 현재 개발중인 application의 버전
- dependencies 태그 하위에 다수의 dependency로 라이브러리를 명시한다
- dependency 태그에 groupId, artifactId, version 등을 명시한다
Maven 의존성 검색
H2 Database
- RDBMS 중 하나로 메모리에 데이터를 저장 가능하다
- 개발 단계에서 테스트용으로 가볍게 활용이 가능하다
- 별도의 설치 없이 Maven 의존성만으로 Spring Boot에서 활용 가능하다
H2 Database 설정
- h2 database의 url 및 계정 정보 설정
- h2 웹 console 정보 설정
- browser에서 접속 가능
- 웹 기반 콘솔 제공
MyBatis Mapper의 동작
spring application 설정
- application.properties 파일에 설정 정보 추가
- application.yaml 포맷 사용하기도 함
- resources 디렉토리 하위에 위치한다
- key=value 형태로 설정 정보 작성
- 설정 정보는 라이브러리 별 공식 문서를 참고하여 작성
maven과 h2 설정을 완료한 후 localhost:8080/h2-console 로 접속해보면 아래와 같은 화면이 나타난다
이건 MySQL workbench와 같이 데이터베이스 관리가 가능하도록 하는 h2의 db client이다
스프링 프레임워크의 컴포넌트 스캔이 어노테이션을 스캔하면서 어떤걸 빈으로 만들지, 의존성을 주입할지 등을 결정한다
마이바티스는 이와 비슷하게 Mapper 스캔을 한다, 그래서 매퍼를 찾게된다
Q. Mapper SQL 문법 관련
#은 데이터 그대로
$는 조회 시 외부 사용자들 조회를 막기위해?
#은 콘솔에 데이터가 찍히고 그대로 보임
$는 로그에 안보이고 보안 유지가 가능
#이 $보다 SQL injection에 대해 취약한 듯 싶다
(참고)
https://logical-code.tistory.com/25
Spring MVC는 우리가 xml로 하나하나 설정 파일, 파일의 위치, 의존성 등을 다 얘기해야되는데, 그에 반해 스프링 프레임워크는 앵간한건 알아서 설정해주기 때문에 아아주 편하다고~
728x90
'코드프레소 체험단' 카테고리의 다른 글
[그림과 실습으로 배우는 도커 & 쿠버네티스] 스터디 🐳 (0) | 2022.05.04 |
---|---|
[라이브강의] 2022-03-30 (spring boot filter and interceptor) (1) | 2022.04.06 |
[Java 웹 개발 트랙 개발 팀 프로젝트] 오리엔테이션 (0) | 2022.03.10 |
[라이브 강의] 2022-01-19 (0) | 2022.02.28 |
댓글