본문 바로가기

전체 글189

[DB/Oracle] JOIN join : 두개 이상의 테이블이나 결과를 서로 연결하여 데이터를 검색하고자 할 때 사용하는 방법이다.. from절에 조인할 테이블을 기술하고, 조건절에서 테이블간의 연결이 이루어질 조건을 기술한다. join의 종류를 보면 CARTESLAN PRODUCT, EQUI JOIN, NON-EQUI JOIN, OUTER JOIN, SELF JOIN 등으로 나뉜다, CARTESLAN PRODUCT : 조인절에 조인을 위한 조건을기술하지 않을경우 테이블의 RECORD 곱으로 결과가 생성된다. EQUAL JOIN : 조건절에 기술된 조인 조건을 EQUAL('=') 연산자로 연결하는 경우가 이에 해당한다. - temp, tdept 두 테이블에서 dept_code가 서로 동일한 값만 리턴되어 나오게된다. NON EQUA.. 2022. 2. 19.
[DB/Oracle] union, union all, minus, intersect 집합 연산자 SQL문의 집합간의 비교를 하기 위해서는 연산자로 연결된 SELECT문의 결과 SET이 같은 구조를 가져야 한다. 따라서 집합 연산자로 연결된 SELECT문들은 컬럼의 수와, 데이터 형이 순서대로 일치해야 된다. UNION : 합집합(중복자료 배제) UNION ALL : 합집합(중복자료 포함) MINUS : 차집합 INTERSECT : 교집합 4개의 집합 연산자 중에 sort가 발생하지 않는것은 UNION ALL뿐이다. UNION 연산자는 두 DATASET의 합집합을 보여주며, 중복된 ROW가 있으면 그 중 하나의 ROW만을 포함 시킨다. 이러한 작업을 하기 위해 내부적으로 정렬 작업을 한다. UNION ALL 연산자는 DATASET의 합집합을 보여주며 중복된 ROW가 있더라도 결과를 모두 .. 2022. 2. 15.
[JavaScript] 자바스크립트 기초2 호이스팅 : 스코프 내부 어디서든 변수 선언은 최상위에 선언된 것 처럼 행동 Temporal Dead Zone(TDZ) TDZ 시맨틱은 선언전에 변수에 접근하는 것을 금지한다. (변수 선언 전에 사용하지 않는다) TDZ에 영향을 받는 구문으로 const, let, class, constructor() 내부의 super() : super()를 호출전 까지 this바인딩은 TDZ존에 있다, 기본 함수 매개변수, var 는 선언하기 전에 사용할 수 있다. Hoisting에 의해 선언이 먼저된다. 그래서 undefined 되며, 선언된 값은 호이스팅이 되지 않는다. typeof 연산자는 변수가 현재 스코프 안에 선언되었는지 확인할 때 유용하다. 예를 들어서, 변수가 선언되지 않은 상태에서 typeof notDe.. 2022. 2. 9.
[Javascript] Javascript 기본 Javascript 의 변수 var : 지역변수 개념으로 함수범위에서 유효하며, var를 선언하지 않으면 자동으로 전연변수 처리가된다. let : 값을 선언 후에 변경이 가능하다 const : 변수 선언 후 값을 변경이 불가능하며, 변하지 않는 값을 넣을때 사용하는 상수이다. 연산자 ( 조건 ) ? ( 조건이 참일경우 ) : ( 조건이 거짓일경우 ) hosting Javascript에서 모든 변수 선언은 호이스트 되고, 함수의 경우 선언형식은 호이스팅이 되나, 변수에 할당된 경우는 호이스팅이 되지 않는다 선언형식은 function alerts(){ … } 이며, 변수에 할당형식은 const sayHello = function() { … } 형식이다. function sayHello(){ console.l.. 2022. 2. 4.
[Spring] Controller Exception처리 Controller 작성시 예외사항을 고려하면 처리해야할 사항이 많아 지는데 처리하는 방법으로 @ExceptionHandler와 @ControllerAdvice를 이용한 처리 @ResponseEntity를 이용한 예외메시지 구성 이있다. @ControllerAdvice - AOP(Aspect-Oriented-Programming)를 이용하는 방식으로, 공통적인 관심사(coss-concern)는 분리하자는개념으로 공통적인 예외사항에 대해 @ControllerAdvice를 이용하여 분리하는 방식입니다. @ControllerAdvice는 해당 객체가 스프링 컨트롤러에서 발생하는 예외를 처리하는 존재임을 명시하는 용도로 사용하며, @ExceptionHandler는 해당 매서드가 ()들어가는 예외타입을 처리함을 .. 2022. 1. 20.
[Spring] file-Upload Spring file upload Maven Repository 에서 commons-fileupload 를 추가한다. Servlet-context.xml 설정을 추가한다. Bean을 추가해주는데 maxUploadSize는 한번의 Requset로 전달될수 있는 최대의 크기를 의미하며, maxUploadSizePerFile은 하나의 파일 최대크기 maxInMemorySize는 메모리상에서 유지하는 최대의 크기를 의미한다. 만약 이크기 이상의 데이터는 uploadTempDir에 임시 파일의 형태로 보관된다 절대경로를 이용하려면 URI 형태로 제공해야 하기 때문에 " file:/ " 시작하도록 합니다. defaultEncoding은 업로드하는 파일의 이름이 한글일 경우 깨지는 문제를 처리한다. jsp 에서 fo.. 2022. 1. 20.
[Spring] Controller Return Type Controller 의 return Type 으로 void, String, 객체 타입 등이 있는데 1. void 의경우 return 이없더래도 자동으로 return "ex05"; 로 인식이된다 만약 Controller Mapping 이 되어있을경우 @RequestMapping("/sample/*") 이떄는 return "/sample/ex05"; 가 된다 Controller의 Mapping값과 void함수의 Mapping이 추가되어 페이지를 호출한다. 2. String은 계속 사용하니 패스한다. 3. 객체 타입으로 VO나, DTO타입 등 복합적인 데이터가 들어간 객체타입으로 지정할 수 있는데 이경우는 주로 JSON 데이터를 만들어 내는용도로 사용한다 . 이경우 pom.xml에 Jackson-databin.. 2022. 1. 20.
[Spring] Model .JSP 에서 GET / POST 방식으로 요청을 하면 DispatcherServlet 에서 요청을 받아 RequestMappingHandlerMapping이 Controller 에서 @RequestMapping 를 찾아 요청한 Controller로 보내 해당 메서드를 실행시킨다. 이때 매개변수에 VO가 선언되어 있을경우 보낸 데이터와 VO의 변수명이 일치 하면 자동으로 mapping된다. Controller에서는 해당 데이터로 DB작업을 하거나, 작업할 요소가 없을경우 가공된데이터 또는 해당 데이터를 JSP로 데이터를 다시 전달해줄때 사용하는데 Model이라는 객체다. @ModelAttribute라는 어노테이션이 있는데 해당 어노테이션은 Controller로 전달받은 파라미터를 Model에 담아서 화면.. 2022. 1. 20.
[Spring] String <-> Date 타입변환 jsp 파일에서 String type으로 넘어오는 데이터를 VO에서 변환하는 방법은 VO에서 @DateTimeFormat(pattern = "yyyy/MM/dd") 로 변수에 선언해주는 방법이 있다. /sample/ex03?title=test&dueDate=2022/01/20 get 방식으로 호출하면 Contorller로 넘어와서, /ex03을 차자 ex03메서드로 연결된다. 이때 매개변수로 TodoVO 를 가지고 오는데 넘어온 데이터는 자동으로 맵핑된다. 이때 VO 에서 dueDate 값이 @DateTimeFormat(pattern = "yyyy/MM/dd") 로 패턴이 정해져있다. 실행결과를 보면 dueDate가 자동으로 Date로 변환이 되어 나오는 것을 확인할 수 있다. dueDate의 패턴을 @.. 2022. 1. 20.
[Servlet] Servlet, ServletContainer CGI 란 Common Gateway Interface 라고하며, 웹서버와 프로그램 사이의 데이터를 주고받는 규칙입니다. CGI 프로그램은 C언어나, C++, JAVA와 같은 컴파일 언어로 작성할수 있으며, Perl,PHP,Python, VBScript 등의 스크립트 언어로도 작성할수 있다. JAVA로 만든 CGI 프로그램을 Servlet이라고 부르며, Servlet은 웹서버와 직접 데이터를 주고 받는게 아닌 Servlet Container 를 통해서 관리가 됩니다. WebServer Client 사이에 데이터를 서로 요청하고 응답을 HTTP Request , Http Response 를 통해서 주고받습니다. 이때 Web Server는 Client에게서온 HTTP Requset를 Servlet Conta.. 2022. 1. 18.
[Spring] SQL 어노테이션 사용, XML 사용 MyBatis 관련라이브러리 추가 이때 라이브러리를 추가할때 SpringFrameWork 와 버전을 일치 시켜줘야 한다. Mybatis-SpringMybatisDB hikariConfig 를 통해서 DB를 정보를 입력하고 해당 값을 ref로 사용하여 DB에 연결하고, SqlSessionFactory를 통해서 Mybatis-Spring에 연결해준다. 또한 JAVA 소스에서 사용한 @Select() 어노테이션을 인식하기 위하여 root-context.xml 에 를 통해서 Mapper를 인식하고 관리하게 한다. Mapper 인터페이스에서 어노테이션을 사용하지 않고 함수만 호출해준다. 호출해준 함수를 XML 파일을 통해 연동시킬것이다. 선언한 함수명과 여기서 중요한것은 namespace인데 namespace는 .. 2022. 1. 16.
[JAVA] 날짜를 비교하여 반복문 돌리기 날짜를 비교해서 시작날짜 ~ 끝나는 날짜 까지 반복문 돌리기 Calendar 객체를 2개 생성하여 startDays 에 startDay 날짜를 셋팅하고, endDays 에 endDay 날짜를 셋팅한다. Calendar에서 MONTH 를 셋팅할떄는 0~11까지 셋팅되므로 MONTH 를 셋팅할떄는 해당 값에서 -1 을 해줘야 한다. after()를 함수를 사용해서 startDays와 endDays를 비교하는데 after() 함수를 찾아보면 startDays 가 endDays 보다 작을경우만 반복문이 돌아가게되는데 (!) startDyas 가 endDays 보다 커지질경우 반복문에 종료가 된다. after() 값이 < 0 때만 리턴이 되는것인데. 비교할떄 매개변수가 작을떄는 1 같을떄는 0 클떄는 -1 인데... 2022. 1. 15.