전체 글
-
02 MyBatis로 DAO작성하기Spring/03 MyBatis로 게시판 만들기 2023. 7. 11. 19:45
MyBatis로 DAO작성하기 1) BoardDao의 작성 >> 작업 순서 ① → ② → ③ → ④ 이지만, ① → ② → ③ → ④ 으로 Extract Interface를 이용하여 편하게 할 수도 있다 2) DTO란? - Data Transfer Object - 계층간의 테이터를 주고 받기 위해 사용되는 객체 - 분리된 대상에 Model을 사용했던 것처럼 DTO가 사용된다 - DTO : 각 계층간에 데이터 전달 >> VO(Value Object) 라고도 사용되지만 VO는 immutable(불변)이기 때문에 DTO와 같은 용어로 사용되는건 잘 못 되었다 ※ 예외처리 @Repository에서 예외처리 한다면? @Service에서 try{ 커밋 } catch{ 롤벡 }으로 처리 하기 때문에 @Reposito..
-
01 MyBatis의 소개와 설정Spring/03 MyBatis로 게시판 만들기 2023. 7. 10. 21:55
MyBatis의 소개와 설정 1) MyBatis란? - SQL Mapping Framework - Easy & Simple - 자바 코드로부터 SQL문을 분리해서 관리 - 매개변수 설정과 쿼리 결과를 읽어오는 코드를 제거 - 작성할 코드가 줄어서 생산성 향상 & 유지 보수 편리 1-1) 실습(설정) DB 테이블 만들기 pom.xml >> spring에서 mybatis를 사용하기 위해서 위의 2개 모듈이 필요하다 2) SqlSessionFactoryBean과 SqlSession Template - SqlSessoinFactory - SqlSession을 생성해서 제공 - SqlSession - SQL 명령을 수행하는데 필요한 메서드 제공 - SqlSessionFactoryBean - SqlSessionFa..
-
13 서비스 계층의 분리와 @Transactional(2)Spring/02 Spring DI와 AOP 2023. 7. 9. 22:22
서비스 계층의 분리와 @Transactional(2) 4-3) 실습(@Transactional 주입) root-context.xml A1DaoTest.java MySQL 에디터(테이블 b1생성) >> 데이터를 없이(false) a1과 같은 테이블 b1을 생성 >> 조건문 where false를 생략하면 a1의 테이블을 복사한 b1이 생성 >> primary key나 Notnull 같은 설정 값은 복사 되지 않는다(데이터 값만 복사) B1Dao.java(A1Dao.java 복사) >> B1Dao의 인터페이스를 추출해야되지만 생략하고 진행 TxService.java TxServiceTest.java >> conn의 주소 값이 다르다 TxService.java >> @Transactional 은 RunTime..
-
12 서비스 계층의 분리와 @Transactional(1)Spring/02 Spring DI와 AOP 2023. 7. 8. 21:57
서비스 계층의 분리와 @Transactional(1) 1) 서비스 계층(Layer)의 분리 비즈니스 로직의 분리 1-1) 서비스 계층(Layer)의 분리 비즈니스 로직의 분리 - 1)그림에서 UserHistoryDao의 추가하면 → RegisterController(userHistoryDao생성)변경해야된다 - 1-1)그림처럼 UserHistoryDao와 비즈니스 로직을 처리하는 UserService를 생성한다 >> 장점1) RegisterController는 UserService만 호출해주면 영속계층이 늘어나도 RegisterController는 에는 영향이 없다 장점 2) Tx 처리, UserService에 Tx 처리가 적합하다 RegisterController도 Tx처리가 가능하나 너무 복잡해진다 ..
-
11 AOP의 개념과 용어Spring/02 Spring DI와 AOP 2023. 7. 7. 20:53
AOP의 개념과 용어 1) 공통코드의 분리 1-1) 공통코드의 분리 (실습) AopMain.java(com.fastcampus.ch3.aop 패키지에 작성) >> 추가할 코드를 따로 분리해 작성해 놓고, 그 코드가 마치 추가된 것처럼 실행되는데 AOP 1-2) 공통코드의 분리 (응용1) >> a로 시작하는 패턴의 메서드만 실행하게 된다 1-2) 공통코드의 분리 (응용2) >> 에너테이션으로 출력 2) 코드를 자동으로 추가한다면 어디에? - 메서드 중간에는 넣을 수 없다 >> Advice{ } : 자동 추가할 코드 >> Before Advice : 메서드의 시작에 자동 추가 >> After Advice : 메서드의 끝에 자동 추가 >> Around Advice : 양쪽에 자동 추가 3) AOP(Aspect..
-
10 Transaction, Commit, RollbackSpring/02 Spring DI와 AOP 2023. 7. 5. 23:19
Transaction, Commit, Rollback 1) Transaction이란? - 더 이상 나눌 수 없는 작업의 단위 (Tx 간단히 쓰임, insert,update,select,등 명령 하나하나가 트잰젝션) - 계좌 이체의 경우, 출금과 입금이 하나의 Tx로 묶여야 됨 (출금+입금 = Tx) - ‘모’ 아니면 ‘도’. 출금과 입금이 모두 성공하지 않으면 실패. (둘다 성공, 하나만 실패해도 모두 취소) 2) Transation의 속성 - ACID 원자성(Atomicity) - 나눌 수 없는 하나의 작업으로 다뤄져야 한다. ex) 출금+입금 = Tx 일관성(Consistency) - Tx 수행 전과 후가 일관된 상태를 유지해야 한다. ex) 전: A가 500원, B는 300원을 가지고 있고, 후: ..
-
09 DAO의 작성과 적용(2-2)Spring/02 Spring DI와 AOP 2023. 7. 4. 21:06
DAO의 작성과 적용(2-2) 1) DAO 주입 LoginCotroller.java >> @Autowired를 주입 RegisterController.java >> @Autowired를 주입 2) 결과 확인(로그인, 회원가입, 에러 메시지) 톰캣 에러 메세지 >> ApplicationContextTest.java 주석 처리 - 로그인 >> HomeController.java의 @Controller가 주석 처리되었다 LoginController.java >> HomeController가 등록이 되어있지 않아 에러 발생 servlet-context.xml >> 등록 결과 확인 >> 성공 servelt-context.xml (변경) >> css가 출력되었다 - 회원가입 >> 한글이 깨져서 출력된다 web.xm..
-
09 DAO의 작성과 적용(2-1)Spring/02 Spring DI와 AOP 2023. 7. 3. 23:21
DAO의 작성과 적용(2-1) LoginController.java RegisterController.java loginForm.jsp index.jsp registerInfo,jsp registerForm.jsp 작성 LoginController.java RegisterController.java loginForm.jsp index.jsp menu.css (resource → css → menu.css 생성) >> menu.css는 생략 registerInfo.jsp registerForm.jsp