순서 1. 파일 저장 2. UUID 적용 1. 파일 저장 뷰로 전달받은 파일을 지정한 폴더에 저장하기 위해 MultipartFile 클래스의 transferTo() 메서드를 사용했습니다. 사용 방법은 전달받은 파일인 MultipartFile 객체에 저장하고자 하는 위치를 지정한 File 객체를 파라미터로 하여 transferTo() 메서드를 호출하는 것입니다. MultipartFile.transferTo(File detination); 위의 메서드를 사용하기 위해 저장될 파일 이름과 위치 전체를 포함하는 File 객체를 만들어줍니다. 파일 이름의 경우 뷰로부터 전달받은 파일 이름을 그대로 사용하기 위해 getOriginalFilename() 메서드를 사용합니다. 파일의 경로는 uploadPath 변수를 ..
순서 1. 방향성 2. 날짜 경로를 문자열로 얻기 3. 폴더 생성(File 객체 사용) 4. 테스트 1. 방향성 저는 기본적으로 C:\upload 경로에 이미지 파일을 저장했습니다. C 경로에 upload 폴더를 생성합니다. 더불어 설정한 용량을 초과하는 파일들을 C:\upload 경로에 있는 temp 폴더에 저장되도록 설정하는 코드를 추가했기 때문에 upload 폴더 내에 temp 폴더를 생성했습니다. 업로드될 이미지 파일들을 C:\upload 폴더에 저장시켜도 상관없지만, 매우 많은 파일을 한 곳에 업로드할 경우, 업로드된 이미지를 호출할 때 애플리케이션 내에서 호출한 파일을 찾기 위해 upload 전체를 스캔하게 되는데, 그 과정에서 많은 자원이 소모될 수 있습니다. 이러한 문제점을 보완하기 위해 ..
순서 1. 업로드 UI 추가 - FormData 2. 첨부 파일 서버 전송 3. URL 매핑 메서드 1. 업로드 UI 추가 - FormData 첨부 파일을 서버로 전송하기 위해선 FormData 객체를 사용해야 합니다. FormData는 가상의 태그라고 생각하면 됩니다. 흔히 View에서 서버로 데이터를 전송하기 위해 태그를 사용했습니다. 화면 이동을 하면서 서버로 첨부 파일을 전송하는 것이라면 태그를 사용하면 됩니다. 하지만 상품 등록을 위해 화면의 이동 없이 첨부 파일을 서버로 전송해야 하기 때문에 FormData 객체를 생성하여 첨부 파일을 FormData에 저장하고 FormData 자체를 서버로 전송해야 합니다. 먼저 태그의 change 메서드 구현부에 FormData 객체를 인스턴스화 하여 변수..
옵티마이저(Optimizer) 가장 효율적인 방법으로 SQL을 수행할 최적의 처리 경로를 생성해주는 DBMS의 핵심 엔진이다. 옵티마이저 종류 규칙 기반 옵티마이저(RBO) 오라클 8 이하의 버전에서 기본으로 설정된 옵티마이저이며, 실행 속도가 빠른 순으로 규칙을 먼저 세워두고 우선순위가 앞서는 방법을 선택한다. 사전에 정의된 규칙 기반 실행 우선순위(Ranking) 인덱스 존재 시 가장 우선시 사용 사용자 SQL 숙련도 판단이 매우 규칙적이어서 실행 예상 가능 예측 통계 정보 요소 무시 AND 중심으로 양쪽 '=' 시 Index Merge 사용 비용 기반 옵티마이저(CBO) 테이블 및 인덱스 등의 통계 정보를 활용하여 SQL 문을 실행하는데 소요될 처리시간 및 CPU, I/O 자원량 등을 계산하여 가장..
집합 연산자 두 개 이상의 테이블에서 조인을 사용하지 않고 연관된 데이터를 조회할 때 사용한다. SELECT 절의 칼럼 수가 동일하고 SELECT 절의 동일 위치에 존재하는 칼럼의 데이터 타입이 상호 호환할 때 사용 가능하다. 일반 집한 연산자 UNION 여러 개의 쿼리 결과를 합치는 연산자로 중복된 영역은 제외하여 합친다.(합집합, 정렬 O) UNION ALL 여러 쿼리 결과를 합치는 연산자로 중복된 영역 모두 포함하여 합친다.(합집합, 정렬 X) INTERSECT 여러 개의 SELECT 결과에서 공통된 부분만 결과로 추출한다.(교집합) MINUS 선행 SELECT 결과에서 다음 SELECT 결과와 겹치는 부분을 제외한 나머지 부분을 추출한다.(차집합) CROSS JOIN 카테시안 곱(Cartesian..
DB 특정 기업이나 조직 또는 개인이 필요에 의해 데이터를 일정한 형태로 저장해 놓은 것을 의미한다. DBMS 효율적인 데이터 관리뿐만 아니라 예기치 못한 사건으로 인한 데이터의 손상을 피하고 필요시 필요한 데이터를 복구하기 위한 강력한 기능의 소프트웨어(SW)이다. SQL 관계형 DB에서 데이터 정의, 조작, 제어를 위해 사용하는 언어이다. SQL 문장들의 종류 명령어의 종류 명령어 설명 데이터 조작어 (DML: Data Manipulation Language) SELECT 데이터베이스에 들어 있는 데이터를 조회하거나 검색하기 위한 명령어를 말하는 것으로 RETRIEVE 라고도 한다. INSERT UPDATE DELETE 데이터베이스의 테이블에 들어 있는 데이터 변형을 가하는 종류의 명령어들을 말한다...
성능 데이터 모델링 DB 성능 향상을 목적으로 설계 단계의 데이터 모델링 때부터 정규화, 반정규화, 테이블 통합, 테이블 분할, 조인 구조, PK, FK 등 여러 가지 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것이다. 성능 데이터 모델링에 대한 설명 데이터의 증가가 빠를수록 성능 저하에 따른 성능 개선비용은 증가한다. 데이터 모델은 성능을 튜닝하면서 변경될 수 있는 특징이 있다. 분석/설계 단계에서 성능을 고려한 데이터 모델링을 수행할 경우 성능 저하에 따른 Rework 비용을 최소화할 수 있는 기회를 가지게 된다. 성능을 고려한 데이터 모델링의 순서 데이터 모델링을 할 때 정규화를 정확하게 수행한다. 데이터베이스 용량 산정을 수행한다. 데이터베이스에 발생되는 트랜잭션의 유형을 파악한..
모델링의 특징 1. 현실 세계를 일정한 형식에 맞추어 표현하는 추상화의 의미를 가질 수 있다. 2. 시스템 구현을 포함한 업무분석 및 업무 형상화를 하는 목적이 있다. 3. 복잡한 현실을 제한된 언어나 표기법을 통해 이해하기 쉽게 하는 단순화의 의미를 가진다. 4. 애매모호함을 배제하고 누구나 이해가 가능하도록 정확하게 현상을 기술하는 정확화의 의미를 가진다. 발생 시점에 따른 엔티티 분류 기본/키 엔티티 중심 엔티티 행위 엔티티 데이터 모델링이 필요한 주요 이유 1. 업무 정보를 구성하는 기초가 되는 정보들에 대해 일정한 표기법에 의해 표현한다. 2. 분석된 모델을 가지고 데이터베이스를 생성하여 개발 및 데이터 관리에 사용하기 위한 것이다. 3. 데이터 모델링이라는 것은 단지 데이터베이스만을 구축하기 ..
순서 1. Servlet 버전 변경 2. 필수 패키지 추가 및 설정 3. 아파치 톰캣 연동 4. 프로젝트 '절대 경로' 구조 변경 5. 구동 테스트 6. 한글 환경 설정 1. Servlet 버전 변경 JAVA 설정 등을 이용하기 위해서 servlet 3.0 이상 버전으로 변경해줍니다. pom.xml에 있는 기존의 servlet 2.5 버전은 주석 처리 혹은 삭제한 후 servlet 3.1 버전을 추가 및 저장합니다. javax.servlet javax.servlet-api 3.1.0 provided 2. 필수 패키지 추가 및 설정 패키지 추가 src/main/java 경로에 3개의 패키지를 추가합니다. - com.swan.model : VO(value Object) 패키지입니다. 데이터 타입을 저장합니다..