어제까지만 해도 잘 됐는데, 갑자기 lombok 오류가 떠서 STL 을 지웠다가 다시 깔았습니다..
[스프링과 MySQL Database 연동]
1. JDBC 연결 및 테스트
1) MySQL JDBC driver 등록
(1) pom.xml 변경
pom.xml 에 해당 문구를 추가합니다.
2) JDBC 테스트코드
src/test/java 밑에 org.zerock.persistence 패키지에 JDBCTests.java를 만들고 해당 코드를 작성 후 테스트합니다.
콘솔을 보면 성공적으로 테스트가 된 것을 확인할 수 있습니다..
2. 커넥션 풀 설정
1) DB와 Connection을 맺고 끊는 작업은 리소스가 많이 소모되는 작업
2) Pooling 이라는 기법을 통해서 객체를 미리 생성해놓고 빌려쓴느 방식을 이용해서 연결시간을 단축
3) Common DBCP 나 HikariCP 등을 활용
4) 라이브러리 추가와 DataSource 설정
5) pom.xml과 root-context 에 해당 문구 추가
pom.xml과 root-context 에 해당 문구를 추가
6) 커넥션 풀 동작 확인 DataSourceTests.java
위와 동일한 패키지에 DataSourceTests 를 작성하고 확인한다. 콘솔창에 보면 커넥션 객체가 생성된 것을 확인할 수 있다.
[MyBatis와 스프링 연동]
1. SQL Mapping 프레임워크 : SQL 과 Object 간의 관계를 매핑해주는 역할
2. JDBC 와 MyBatis 비교
JDBC | MyBatis |
직접 Connection 을 맺고 마지막에 close() | 자동으로 Connection, close() 가능 |
PrepareStatement 직접 생성 및 처리 | MyBatis 내부적으로 PreparedStatement 처리 |
PrepareStatement setXXX() 등에 대한 모든 작업을 개발자가 처리 |
#{prop}와 같이 속성을 지정하면 내부적으로 지원 처리 |
SELECT의 경우 직접 ResultSet 처리 | 리턴 타입을 지정하는 경우 자동으로 객체 생성 및 ResultSet 처리 |
3. MyBatis 관련 라이브러리 추가
1) pom.xml 수정
pom.xml 에 해당문구 추가(학원에서 캡쳐해놨단거 올립니당)
2) root-context namespace 에 mybatis 추가 / root-context source 에 해당문구 추가
root-context mybatis
root-context source
3) 위의 동일한 클래스 DataSourceTests.java 해당 메소드를 추가하여 테스트 (돼야하나, 안되네요 import 가 ibatis로 자꾸 되서 그런거같은데 학원에서 확인해보겠습니다.
DataSourceTests.java 추가
[스프링과의 연동 처리]
1. Mapper 인터페이스
1) MyBatis 를 사용하는 방식으로는 Mapper 인터페이스를 작성하고 자동으로 생성되는
클래스를 사용하는 방식을 이용
2) org.zerock.mapper.TimeMapper.java 인터페이스 추가
(1) MyBatis의 어노테이션을 이용해서 SQL을 메소드에 추가
TimeMapper 인터페이스
(2) root-context.xml 수정
3) 테스트를 위해 org.zerock.peresistence.TimeMapperTest.java 추가
TimeMappterTest.java 성공.
2. XML 매퍼와 같이 쓰기
1) Mapper 인터페이스와 XML을 동시에 지원
2) XML 을 이용할 때
(1) XML 파일의 위치와 XML 파일에 지정하는 namespace 속성이 중요
(2) XML 파일의 위치
ㄱ) Mapper 인터페이스가 있는 곳에 같이 있거나
ㄴ) src/main/resource에 XML을 저장할 폴더를 생성
(3) XML 파일 이름 : Mapper 인터페이스와 같은 이름 이용 (가독성)
(4) 예시 : src/main/resource/org/zerock/mapper/TimeMapper.xml
ㄱ) 폴더형식이므로 경로준수
(5) MyBatis의 XML 매퍼에서 이용하는 태그에 대한 설정 필요
3) Mapper 인터페이스에 추가 메소드 선언하기
메소드 추가
4) src/main/resources/org/zerock/mapper/TimeMapper.xml 만들기
TimeMapper.xml 후 해당내용 추가
5) TimeMapperTest.java 수정하여 테스트 하기
TimeMapperTest 성공
[SQL의 로그(log4jdbc-log4j2) 설정
1. MyBatis의 SQL 로그를 보기 위한 설정
2. pom.xml 수정하기
pom.xml 수정
3. src/main/resources/log4jdbc.log4j2.properties 추가
3. src/main/resources/log4jdbc.log4j2.properties 추가
4. JDBC 드라이버의 url 수정 : root-context.xml
root-context 수정
[스프링 MVC의 기본구조]
1. 대부분의 서블릿 기반 프레임워크들이 사용하는 방식
2. 데이터와 처리, 화면을 분리하는 방식
3. 웹에서는 Model2 방식으로 표현
[스프링과 스프링 MVC]
1. 스프링 프레임워크 Core + 여러 Sub 프로젝트들
Spring | Projects
Spring Boot Takes an opinionated view of building Spring applications and gets you up and running as quickly as possible. Spring Data Provides a consistent approach to data access – relational, non-relational, map-reduce, and beyond. Spring Cloud Data Flow Provides an orchestration service for compo...
spring.io
2. 별도로 결합해서 사용하기 때문에 설정 역시 별도로 처리 가능
[일반적인 스프링 + 스프링 MVC]
[웹 프로젝트의 구조]
1. 스프링을 실행하는 존재
1) ApplicationContext -> WebApplicationContext (객체 생성, 주입)
2) 같이 연동되는 방식으로 동작하기 때문에 설정을 분리해도 통합해서 사용가능
2. 프로젝트 설정 후 변경
1) 서블릿은 3.0이상으로 변경
pom.xml
[스프링 MVC의 기본사상]
1. 서블릿 기반이긴 하지만 한 단계 더 추상화된 수준의 개발 지향
2. 서블릿 API 없이도 개발이 가능한 수준
[스프링 MVC의 Controller]
1. Controller의 특징
1) HttpServletRequest, HttpServletResponse를 거의 사용할 필요 없이 필요한 기능 구현
2) 다양한 타입의 파라미터 처리, 다양한 타입의 리턴 타입 사용 가능
3) Get 방식, Post 방식 등 전송방식에 대한 처리를 어노테이션으로 처리 가능
4) 상속/인터페이스 방식 대신에 어노테이션만으로도 필요한 설정 가능
2. @Controller, @RequestMapping
1) @Controller
(1) 해당 클래스의 인스턴스를 스프링의 빈으로 등록하고 컨트롤러로 사용
(2) <component-scan>과 같이 활용
2) @RequestMapping
(1) 특정한 URI에 대한 처리를 해당 컨트롤러나 메서드에서 처리
[Controller의 파마리터 수집]
1. 스프링 MVC의 컨트롤러는 메서드의 파라미터를 자동으로 수집, 변환하는 편리한 기능을 제공
2. Java Beans 에 규칙에 맞게 작성이 되어야 한다.
1) 생성자가 없거나 빈 생성자
2) 올바른 규칙으로 만들어진 Getter / Setter
3) SampleDTO.java 만들기
4) SampleController.java에 메소드 추가 후 주소에 파라미터 입력해서 출력
이렇게 하면 콘솔에 파라미터에 맞는 값이 나와야 하는데 안나오네요..
나머지 부분은 조금 남았는데, 학원가서 확인해보고 주말에 올리겠습니다.
'컴퓨터학원(복습)(수료)' 카테고리의 다른 글
자바(JAVA)기반 안드로이드 웹&앱 개발 71일차 (1) (스프링 기본적인 CRUD 관리, Modal) (0) | 2021.06.09 |
---|---|
자바(JAVA)기반 안드로이드 웹&앱 개발 70일차 ( Model 데이터전달자, RedirectAttributes, Controller, ResponseEntity, 파일업로) (0) | 2021.06.08 |
자바(JAVA)기반 안드로이드 웹&앱 개발 68일차 (2)(의존성 주입 테스트, 스프링이 동작하면서 생기는 일) (0) | 2021.06.04 |
자바(JAVA)기반 안드로이드 웹&앱 개발 68일차 (JAVA SPRING 시작) (0) | 2021.06.04 |
자바(JAVA)기반 안드로이드 웹&앱 개발 67일차 (평가 2일차) (0) | 2021.06.03 |