스프링

카테고리 없음

[에러] 남궁성 스프링의 정석 ch4-5 삭제 기능 구현 오류

1.문제 1. 로그인 후 board게시판으로 이동하기 위해 화면 우측 상단의 Board를 누르면 게시판이 나오지 않고 삭제에 실패했다는 알람이 뜹니다. 2. 게시물에 들어가 목록 버튼을 누르면 앞의 상황가 마찬가지로 삭제 실패를 알리는 알람이 뜹니다. ​ ​ 2.문제 해결을 위해 내가 한 것.(문제 해결 과정) ​ ①. 로그인 후 board게시판으로 이동하기 위해 화면 우측 상단의 Board를 누르면 게시판이 나오지 않고 삭제에 실패했다는 알람이 뜹니다. ​ ①-1. 로그인 후 화면 우측 상단의 Board를 누르면 /board/list로 이동합니다. 그래서 BoardController에서 Board를 누르면 /board/list로 잘 가는 지 확인했습니다. ①-2. 확인결과 console에서는 '----..

Spring/Spring 프로젝트

[게시판 만들기] CRUD 흐름

CRUD를 수행하기 위해 기능별로 URL를 살펴보면 '/'이후 기능별로 URI가 다른 걸 확인할 수 있다. 메서드도 다른데 크게 GET과 POST로 메서드를 사용한다. 'GET'은 정보를 불러오는 데에 메서드로 쓰이고 'POST'는 정보를 입력하는데에 메서드가 쓰인다. 여기서 주목해야 할 점은 쓰기와 수정에서 GET,POST가 모두 쓰인다는 점이다. 쓰기와 수정은 공통적으로 데이터를 '입력하기 전'에는 게시물을 읽어와야하고 게시물을 '입력한 후'에는 수정된 게시물을 저장해야한다. 그래서 게시물을 읽어올 때는 'GET'을 사용하고 게시물을 저장할 때는 'POST'를 사용한다. 1.읽기(Read) ①게시판의 게시물(bno=533)을 누르게 되면 '/board/read?bno=533'을 'GET'요청하게 된다..

Spring/Spring DI와 AOP

[Spring DI와 AOP]@Transactional

1.TransactionManager 하나의 메서드는 하나의 Connection을 가진다. 하지만 하나의 메서드에 하나의 Connection을 가지면 중복된 메서드의 Connection은 개별 커넥션을 갖기 때문에 Tx가 안된다는 문제가 발생한다. 예를들어 UserDao의 deleteUser(100);를 실행하면 메서드에 해당하는 Connection이 commit되면서 100이라는 키를 가진 유저의 정보가 삭제될거다. 그런데 여기에 deleteUser(200);을 실행한 후 rollback을 해야하는 상황이 발생하면, 이미 deleteUser(100);이 실행된 Connection은 commit 되었기에 rollback이 되지 않는다. 이 문제를 해결하기 위해선 두 메서드의 Connection을 하나의 ..

Spring/SpringMVC

[Spring MVC] 계층의 분리

1. 3계층 Spring은 3계층으로 구분 할 수 있다. 사용자 요청을 받아 흐름을 제어하는 Presentation Layer, 비즈니스 로직을 담당하는Business Layer, 데이터 베이스에 접근하여 데이터 베이스를 다루는 Persistence Layer(Data Access Layer)로 계층을 분리 할 수 있다. UserHistoryDao 회원의 이력을 추가, 삭제, 수정 등 비즈니스 로직을 수행하는 역할이 필요하다. Persistence Layer인 UserDao는 단순히 DB테이블의 정보를 CRUD(Creadt, Remove, Update, Delete)하는 기능만 수행하기에 비즈니스 수행할 수 없다. 그래서 Presentation Layer인 RegisterController에게 UserH..

Spring/REST API와 Ajax

REST API와 Ajax

1. JSON? JSON(Java Script Object Notation)은 자바 스크립트 객체 표기법이다. JSON 이전에는 XML을 이용하여 데이터를 교환했다. 하지만 XML은 데이터보다 태그가 더 많고 복잡하여 효율성이 떨어졌다. 이 문제를 해결하기 위해 등장 한 것이 자바 스크립트로 객체를 표기한 JSON이다. {속성명1: 속성값1, 속성명2: 속성값2, ...} // 기본 [{속성명: 속성값, ...}, {속성명: 속성값, ...}, ...] // 객체 배열 {키1:{속성명: 속성값, ...}, 키2:{속성명: 속성값, ...}, ...} // Map 1-1 stringify()와 parse() JS객체를 서버로 전송하려면, 직렬화 즉, 객체를 문자열로 변환하여 저장하는 작업이 필요하다. 반대..

Spring/Spring DI와 AOP

[Spring DI와 AOP] Transaction, Commit, Rollback

1.Transaction? Transaction은 더이상 나눌 수 없는 작업의 단위다. Transaction대신 별칭 Tx로 자주 표현되며, Transaction의 종류로는 대표적으로 SQL에서 insert, update, select를 수행하는 작업이 있다. 만약 계좌이체를 한다고 하면 출금(update)과 입금(update)이 하나의 Tx로 묶여야한다. 하나의 Tx로 묶여한다는 의미는 하나의 작업단위가 되어야 한다는 말이다. 내 계좌에서 은행계좌로 1000만원을 입금한다고 가정해보자. 그러면 내 계좌에서는 1000만원이 빠져나가야하고 은행계좌에는 1000만원이 입금되어야한다. Transaction이 제대로 이뤄지면 결과적으로 내 계좌(-1000만원) 은행계좌(+1000만원)인 작업이 실행 될 거다. ..

Spring/Spring DI와 AOP

[Spring DI와 AOP] DAO

DAO? DAO(Data Access Object)는 데이터(Data)에 접근(Access)하기 위한 객체(Object)다. DAO는 DB에 저장된 데이터를 쓰고(Create), 읽고(Read), 변경하고(Update), 삭제(Delete)를 한다. DB테이블당 하나의 DAO를 작성한다. 그렇다면 DAO를 왜 작성할까? DAO를 작성하는 가장 큰 이유는 코드의 중복을 피하기 위함이다. 위의 그림을 보면 DAO를 생성하기 전에는 selectUser()가 중복되는 걸 알 수 있다. 이후 DAO를 생성하면 중복되는 코드와 DAO가 수행하는 역할(쓰기, 읽기, 변경하기, 삭제하기)을 따로 떼어낼 수 있다.DAO를 생성함으로써 코드를 간결하게 할 수 있다. 코드의 중복을 피하는 것이외에도 관심사((Presenta..

Spring/Spring DI와 AOP

[Spring AOP] AOP의 개념과 사용

1.AOP(Aspect Oriented Programming)란? AOP의 약자를 풀어쓰면 관점 지향 프로그래밍이다. 관점 지향 프로그래밍? 어려운 말이다. 간단히 말하면 관점을 나눠서 프로그램을 짜는 방식이라고 말할 수 있다. AOP는 다른 말로 부가기능(advice)을 동적으로 추가해주는 기술이다. 이 말도 어렵다 부가기능은 무엇이고 동적이란 말은 무엇인가? 부가기능은 핵심기능의 반댓말이다. 그리고 동적이란 말은 실행중이라는 뜻이다. 즉 핵심기능이 아닌 기능을 실행중에 추가하는 기술이다. 하지만 그래도 어렵다. 마지막으로 한 줄로 AOP를 요약하면 메서드의 시작 또는 끝에 자동으로 코드(advice)를 추가하는 기술이다. 코드를 통해 AOP의 개념을 조금 더 살펴보자. 2.공통 코드의 분리 MyCla..

각시탈코더
'스프링' 태그의 글 목록