Burninghering's Blog
article thumbnail
게시판 목록 만들기와 페이징 - TDD(1)
패캠 챌린지 2023. 5. 12. 19:17

게시물이 너무 많을 때 페이지 별로 나눠놓고, 페이지 네비게이션을 통해 게시물을 편리하게 볼 수 있도록 하는 것 테이블에 들어있는 데이터를 페이지별로 가져오려면 SELECT문의 LIMIT이라는 구문을 사용해야 한다. offset이란, 처음부터 빨간 네모까지 얼마나 떨어져 있는가? 이고 row_count는 읽어올 row의 수 이다. 첫 번째 페이지의 offset은 0 두 번째 페이지의 offset은 10.. offset을 만드는 방법이 어려우므로, 일단 page-1을 해보면 page보다 하나씩 줄어드는 것을 알 수 있다. 거기다가 *10을 하면 offset을 계산할 수 있다. package com.fastcampus.ch4.domain; public class PageHandler { int totalCn..

article thumbnail
MaBatis로 DAO작성하기
패캠 챌린지 2023. 5. 11. 15:56

변환 에러를 피하기 위해 게시물 번호를 Integer를 썼다. 사용자가 요청한 데이터를 DTO에 담아서 서비스 계층으로 서비스 계층에서 Repository 계층으로 데이터를 전달할 필요가 있다 각 계층으로 분리를 해놨기 때문에 계층 간 데이터를 전달하는 객체가 DTO 컨트롤러의 실행 흐름 제어 : Redirect & Forward 관심사, 역할에 따라 계층을 분리해놨고 각 계층 간 데이터를 전달할 필요가 있기 때문에 그 데이터를 담을 객체를 DTO라고 한다. xml문 작성하기 1.mapper > boardMapper.xml 파일 생성하기 2.xml 코드 따오기 3.select문 만들기 4.console로 가서, board 테이블을 검색하는 select sql문을 만들어서 복사해서 가져와서 붙여넣어주기 s..

article thumbnail
MyBatis
패캠 챌린지 2023. 4. 28. 18:03

SQL Mapping이라는 것은 java 코드와 sql 코드를 맵핑해준다는 것 SQL문은 별도의 XML파일로 분리해놓는다 pom.xml web.xml sevlet-context.xml index.jsp menu.css LoginController.java UserDao.java User.java UserDaoImpl.java loginForm.jsp root-context.xml mybatis-config.xml

article thumbnail
서비스계층(Layer)의분리, Transactional
패캠 챌린지 2023. 4. 5. 11:53

컨트롤러에서 DB를 직접 관여하지 않고, UserDAO (Repository)를 통해 DB를 조작하였다. @Controller - Presentation Layer @Repository - Persistence Layer(영속계층), Data access Layer 컨트롤러는 DB 조작 없이 본연의 역할에 집중하도록 관심사를 분리한 것이다. 사용자의 이력을 다루게 되었다 컨트롤러에서 Dao를 주입한다 회원가입 할 때 사용자의 이력까지 다루는 것은 비즈니스 로직이다. (컨트롤러 내, DAO 내에도 위치하면 X) 비즈니스 로직을 담당할 객체를 하나 더 만들어야 한다. 비즈니스로직의 메소드명은 업무 용어와 같다. (UserDao의 메소드는 SQL적) 트랜잭션을 비즈니스 계층에 적용한다 회원 가입, 유저 이력까..

article thumbnail
AOP
패캠 챌린지 2023. 4. 4. 21:39

before & after코드 추가 -> 공통 코드 중복 만약 변경 사항이 생기면 똑같은 곳을 여러번 고쳐야한다. 조금 더 현명한 방법으로 해결하려고 한다 그것이 AOP 코드들을 따로 분리해냈다 하나의 메서드에 핵심기능/부가기능으로 두 개의 관심사가 있다. 서로 다른 관심사가 하나의 메서드에 있다면 관심사를 분리해줘야한다. 분리해야 하는 것 : 1. 관심사 / 2. 변하는 것/변하지 않는 것 / 3. 중복 코드 메서드 호출 부분 -> reflection API를 호출해서 메소드를 호출할 수 있도록 한다. 실습 package com.fastcampus.ch3.aop; import java.lang.reflect.Method; public class AopMain { public static void mai..

article thumbnail
Transaction, Commit, Rollback
패캠 챌린지 2023. 4. 3. 22:31

insert, update, select 등 명령 하나 하나가 Tx이다. 계좌 이체(update)는 출금 따로 입금 따로 작업을 할 수 없기 때문에 같이 묶어야 한다. 둘 다 성공하던가 / 하나만 실패해도 취소 -> All or Nothing 둘 이상의 작업을 어떻게 트랜잭션으로 묶을까? 우선 속성부터 배워보자 원자성 일관성 - 계좌 이체 전 과 후의 총 금액이 같아야한다. 고립성 - 서로의 작업(Tx1, Tx2)이 영향을 주면 안된다. (작업에 따라 Isolation Level을 적절하게 선택) 영속성 커밋을 해버리면, 롤백이 불가하다 자동 커밋 - 명령을 실행할 때마다 바로 커밋을 해버림 -> 롤백 불가 수동 커밋 - 내가 직접 커밋 명령을 내려줘야 커밋이 되는 것 각 트랜잭션을 고립시키는 정도를 나..

@Autowired 의존성 주입 실패 -> Apach Tomcat 에러
카테고리 없음 2023. 4. 1. 19:51

[2023-04-01 07:46:28,537] Artifact ch3:war exploded: Artifact is being deployed, please wait... 01-Apr-2023 19:46:32.095 INFO [RMI TCP Connection(2)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneede..

article thumbnail
DAO의 작성과 적용
패캠 챌린지 2023. 3. 30. 00:01

컨트롤러가 직접 DB에 접근하게 되면, 메소드가 중복된다. 중복을 제거하려면? 공통 부분을 따로 분리해낸다. 계층의 분리! UserDao를 통해 DB에 접근한다면 중복코드가 제거된다. 이 UserDao를 영속 계층(Persistence Layer), Data Access Layer 라고 하고, 컨트롤러 부분은 Presentation Layer라고 한다. 데이터를 보여주는 계층이다. 이렇게 분리해내는 이유는 1.관심사의 분리 / 2. 변하는 것과 변하지 않는 것 / 3. 중복, 공통 코드 1,3번이다. 나중에 MySQL을 쓰던지 Oracle을 쓰던지, 인터페이스를 사용하면 UserDao가 바뀌어도 상관없다. UserDao.java를 만들고, UserDaoImpl을 만들었다. UserDao를 인터페이스로 만..