-
[패스트캠퍼스] Java & Spring 웹 개발 종합반 8주차 학습일지패스트캠퍼스/Java & Spring 웹 개발 종합반 2023. 4. 2. 15:24
내일배움카드, 국비지원교육
Chapter 03. Spring DI와 AOP
15 ~ 16. DAO의 작성과 적용
DAO란 데이터에 접근하기 위한 객체
컨트롤러에서 DB에 직접 접근할 수 있으나, dao로 따로 분리해 중복 코드를 제거하는 것이 좋음
코드는 똑같은데 왜 자꾸 오류가 발생하는지 모르겠다... root-context.xml 때문인 것 같은데
18. AOP의 개념과 용어
코드를 자동으로 추가하려면 메소드의 맨 앞이나 맨 뒤에만 넣을 수 있음
AOP란 부가 기능을 동적으로 추가해주는 기술
용어 설명 target advice가 추가될 객체 advice target에 동적으로 추가될 부가 기능(코드) join point advice가 추가될 대상(메서드) pointcut join point들을 정의한 패턴 proxy target에 advice가 동적으로 추가되어 생성된 객체 weaving target에 advice를 추가해서 proxy를 생성하는 것 Advice의 종류
종류 애너테이션 설명 around advice @Around 메서드의 시작과 끝 부분에 추가 before advice @Before 메서드의 시작 부분에 추가 after advice @After 메서드의 끝 부분에 추가 LoggingAdvice로 [start]와 [end]를 추가해줌
19 ~ 21. 서비스 계층의 분리와 Transactional
비즈니스 로직을 분리하기 위해 service가 필요함
Controller - Presentation, Service - Business, Dao - Persistence
transaction은 하나의 connection에서 이루어짐
transaction manager는 같은 transaction 내에서 같은 connection을 사용할 수 있게 관리함
Dao에서 connection을 얻을 때 DataSourceUtils 사용해야 함
@Transactional
- AOP를 이용해 핵심 기능과 부가 기능을 분리할 수 있음
- 클래스나 인터페이스에도 붙일 수 있음
- RuntimeException, Error만 rollback, @Transactional(rollbackFor = Exception.class) 이렇게 넣어야 Exception rollback
속성 설명 propagation transaction의 경계를 설정하는 방법을 지정 isolation transaction의 isolation level을 지정 readOnly transaction이 데이터를 읽기만 하는 경우, true로 지정하면 성능 향상 rollbackFor 지정된 예외가 발생하면 rollback noRollbackFor 지정된 예외가 발생해도 rollback 하지 않음 timeout 지정된 시간 내에 transaction이 종료되지 않으면 강제 종료 propagation
- required(기본값) : transaction이 진행중이면 참여하고 없으면 새로운 transaction 시작
- requires_new : transaction이 진행중이건 아니건 새로운 transaction 시작
노트북을 껐다가 켰을 뿐인데 이런 오류가...
강의에서 @Transactional이 동작하지 않은 이유는 같은 클래스에 속한 메서드끼리의 내부 호출이기 때문임
두 메서드를 별도의 클래스로 분리하면 transcation이 적용됨
Chapter 04. MyBatis로 게시판 만들기
01. MyBatis의 소개와 설정
MyBatis는 SQL Mapping Framework (SQL문을 XML 파일로 분리)
SqlSessionFactory가 SqlSession을 생성하고, SqlSession이 SQL 명령을 수행하는데 필요한 메서드를 제공함
- SqlSessionFactoryBean : SqlSessionFactory를 spring에서 사용하기 위한 빈
- SqlSessionTemplate : SQL 명령을 수행하는데 필요한 메서드 제공
02. MyBatis로 DAO 작성하기
DTO는 계층 간의 데이터를 주고받기 위해 사용되는 객체
- #{} : PreparedStatement에 들어갈 값에만 사용 가능
- ${} : Statement에 사용, 따옴표도 작성해야 함
- xml에서는 특수문자가 포함된 쿼리를 <![CDATA[ 와 ]]>로 감싸야 함
03 ~ 04. 게시판 목록 만들기와 페이징
totalPage, beginPage, endPage 헷갈리면 그림 그려보기!
왜 아무것도 안나와..
pageSize라고 적어야하는데 pagesize라고 적어서 그랬던 거였다... 그래서 자꾸 null이라고.. 확인하라고...
오타 안나게 하는게 제일 힘든 것 같다
05 ~ 06. 게시판 읽기, 쓰기, 삭제, 수정 기능 구현
기능별 URI 정의
작업 URI HTTP 메서드 설명 읽기 /board/read?bno=번호 GET 지정된 번호의 게시물 보여줌 삭제 /board/remove POST 게시물 삭제 쓰기 /board/write GET 게시물을 작성하기 위한 화면을 보여줌 /board/write POST 작성한 게시물을 저장 수정 /board/modify?bon=번호 GET 게시물을 수정하기 위해 읽어옴 /board/modify POST 수정된 게시물 저장 이미 삭제된 게시글은 '삭제되었거나 없는 게시글입니다.' alert 창 띄우기
07 ~ 08. 게시판 검색 기능 추가
공통 부분을 <sql>로 정의하고 <include>로 포함시켜 재사용 가능
Test 코드에서 SQL문 실행되는 순서를 알 수 있음
- maven repository에서 Log4Jdbc Log4j2 JDBC 4 1 추가
- log4jdbc.log4j2.properties 와 logback.xml 파일 추가
09. REST API와 Ajax
JSON : 자바 스크립트 객체 표기법
javascript 객체를 서버로 전송하려면 직렬화가 필요함
- JSON.stringify() : 객체를 JSON 문자열로 변환
- JSON.parse() : JSON 문자열을 객체로 변환
Ajax : 비동기 통신으로 데이터를 주고 받기 위한 기술
- maven repository에서 jackson databind 추가
- @RequestBody, @ResponseBody 필요
- @ResponseBody 대신 클래스에 @RestController 사용 가능
REST : 웹서비스 디자인 아키텍처 접근 방식
REST API : REST 규약을 준수하는 API
10 ~ 13. 댓글 기능 구현 - DAO 작성
1. DB 테이블 생성
2. Mapper XML 작성
3. DAO 작성 & 테스트
4. Service 작성 & 테스트
5. Controller 작성 & 테스트
6. 뷰(UI) 작성 & 테스트
Chapter 05. Spring MVC로 웹사이트 만들어보기
01. 웹프로젝트 기획하기
팀 구성은 4~5명, 주제는 평범하고 일상적이고 익숙한 것, 쇼핑몰을 하더라도 관리자&통계 기능을 만들 것
필요한 자료 확인하기
https://github.com/castello/spring_basic/tree/main/download
GitHub - castello/spring_basic: 남궁성의 스프링 기본 강의 @fastcampus.co.kr
남궁성의 스프링 기본 강의 @fastcampus.co.kr. Contribute to castello/spring_basic development by creating an account on GitHub.
github.com
CLOC -- Count Lines of Code
[Translations: Belarussian, Bulgarian, <!-- Polish , --> Russian, Serbo-Croatian, <!-- Slovakian --> Slovakian Ukrainian ] cloc counts blank lines, comment lines, and physical lines of source code in many programming languages. Given two versions of a code
cloc.sourceforge.net
W3Schools Free Online Web Tutorials
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
www.w3schools.com
02 ~ 03. git의 기본 명령어와 원리
git : version control system
> git add 파일이름 : staging area에 파일 추가
> git init : .git 로컬 저장소 생성
> git --help : 모든 도움말
> git status : working directory와 staging area 상태 확인
'패스트캠퍼스 > Java & Spring 웹 개발 종합반' 카테고리의 다른 글
[패스트캠퍼스] Java & Spring 웹 개발 종합반 7주차 학습일지 (0) 2023.03.26 [패스트캠퍼스] Java & Spring 웹 개발 종합반 6주차 학습일지 (0) 2023.03.19 [패스트캠퍼스] Java & Spring 웹 개발 종합반 5주차 학습일지 (0) 2023.03.10 [패스트캠퍼스] Java & Spring 웹 개발 종합반 4주차 학습일지 (1) 2023.03.05 [패스트캠퍼스] Java & Spring 웹 개발 종합반 3주차 학습일지 (1) 2023.02.26