전체 글
-
이번 포스트에서는 레거시 스프링 프로젝트를 구성하는 절차를 살펴보자.이 페이지의 내용은 스프링 부트 애플리케이션의 구성을 연습하기 위한 것으로 비지니스 로직 처리는 적절치 않습니다. 기본 프로젝트 구성 maven project 구성아키타입을 생략한 새로운 Maven Project를 생성한다.group id(소속사 domain), artifact id(project 이름)을 기입하고 web 서비스를 위해 packaging을 war로 설정한다. pom.xml에 JDK 설정 및 필요한 의존성 설정다음과 같이 pom.xml 파일을 수정해서 JDK와 필요한 의존성을 설정한다. 4.0.0 com.doding legacyproj 0.0.1-SNAPSHOT war 17 6.1.13 org.spri..
레거시 스프링 프로젝트 작성 절차이번 포스트에서는 레거시 스프링 프로젝트를 구성하는 절차를 살펴보자.이 페이지의 내용은 스프링 부트 애플리케이션의 구성을 연습하기 위한 것으로 비지니스 로직 처리는 적절치 않습니다. 기본 프로젝트 구성 maven project 구성아키타입을 생략한 새로운 Maven Project를 생성한다.group id(소속사 domain), artifact id(project 이름)을 기입하고 web 서비스를 위해 packaging을 war로 설정한다. pom.xml에 JDK 설정 및 필요한 의존성 설정다음과 같이 pom.xml 파일을 수정해서 JDK와 필요한 의존성을 설정한다. 4.0.0 com.doding legacyproj 0.0.1-SNAPSHOT war 17 6.1.13 org.spri..
2024.10.25 -
Servlet 3.0에 들어오면서 WAS에서 xml 내용이 제외되기 시작했다. 따라서 web.xml이 제거되고 자바 기반으로 동작할 수 있도록 구조적인 변경이 일어났다.그럼 web.xml의 내용들은 어디로 없어졌을까? web.xml의 흔적을 찾아서 ServletContainerInitializerWAS는 처음 동작을 시작하면서 web.xml 파일을 로딩해서 애플리케이션(컨텍스트)를 초기화 한다. Servlet 3.0에서 부터는 XML없이 초기화를 진행하기 위해서 java를 실행해야할 필요가 생겼다. 그래서 등장한 친구가 ServletContainerInitializer가 그 역할을 한다. WAS는 classpath에 포함된 ServletContainerInitializer타입의 객체들을 로드해서 onS..
[Servlet] Spring에서 web.xml 파일 제거Servlet 3.0에 들어오면서 WAS에서 xml 내용이 제외되기 시작했다. 따라서 web.xml이 제거되고 자바 기반으로 동작할 수 있도록 구조적인 변경이 일어났다.그럼 web.xml의 내용들은 어디로 없어졌을까? web.xml의 흔적을 찾아서 ServletContainerInitializerWAS는 처음 동작을 시작하면서 web.xml 파일을 로딩해서 애플리케이션(컨텍스트)를 초기화 한다. Servlet 3.0에서 부터는 XML없이 초기화를 진행하기 위해서 java를 실행해야할 필요가 생겼다. 그래서 등장한 친구가 ServletContainerInitializer가 그 역할을 한다. WAS는 classpath에 포함된 ServletContainerInitializer타입의 객체들을 로드해서 onS..
2024.10.17 -
이번 포스트에서는 JDK21에 추가된 Virtual Thread에 대해 살펴보자. Virtual Thread? 기존의 스레드의 동작 방식자바에는 이미 잘 동작하는 스레드가 있는데 구지 Virtual Thread(V.T)가 필요했던 이유는 무엇일까? V.T의 필요성을 이해하기 위해서는 먼저 기존 스레드의 동작을 살펴볼 필요가 있다.일단 스레드는 기본적으로 OS의 자산이다. 자바께 아니다. Java에서 스레드를 사용할 때는 OS의 스레드와 1:1로 통신할 수 있는 스레드를 만들어서 사용한다. 이를 플랫폼 스레드(Platform Thread:P.T)라고 부른다. 그러다 보니 스레드의 주도권은 OS에 있다. 자바에서 스레드로 뭔가를 하려고 하면 OS와 소통해야 한다는 말이다.기존의 Thread의 문제점과 V..
Virtual Thread이번 포스트에서는 JDK21에 추가된 Virtual Thread에 대해 살펴보자. Virtual Thread? 기존의 스레드의 동작 방식자바에는 이미 잘 동작하는 스레드가 있는데 구지 Virtual Thread(V.T)가 필요했던 이유는 무엇일까? V.T의 필요성을 이해하기 위해서는 먼저 기존 스레드의 동작을 살펴볼 필요가 있다.일단 스레드는 기본적으로 OS의 자산이다. 자바께 아니다. Java에서 스레드를 사용할 때는 OS의 스레드와 1:1로 통신할 수 있는 스레드를 만들어서 사용한다. 이를 플랫폼 스레드(Platform Thread:P.T)라고 부른다. 그러다 보니 스레드의 주도권은 OS에 있다. 자바에서 스레드로 뭔가를 하려고 하면 OS와 소통해야 한다는 말이다.기존의 Thread의 문제점과 V..
2024.09.21 -
JDK18 ~ JDK20은 STS로 확정된 기능이 거의 없이 지나갔다. 드디어 2023년 9월 19일 LTS인 JDK21이 다양한 기능을 포함하고 발표되었다. 문법적인 변화 JEP 441: Pattern Matching for switch이제 switch case 문장에서 단순한 값 뿐 아니라 타입, null 여부까지 판단할 수 있게 되었다. 여기서 패턴이라 특정한 형태나 구조를 가진 데이터를 찾아내기 위한 개념으로 생각할 수 있다. 기존의 switch 문장이 int, String 등으로 단순히 값이 같은지를 비교했다면 이제 Object를 파라미터로 받아서 타입 기반으로 처리하거나 when 키워드를 이용해서 조건을 추가할 수도 있게 되었다.// if 문을 이용한 타입 확인 및 활용static Str..
[JDK] 버전별 특징 - JDK21JDK18 ~ JDK20은 STS로 확정된 기능이 거의 없이 지나갔다. 드디어 2023년 9월 19일 LTS인 JDK21이 다양한 기능을 포함하고 발표되었다. 문법적인 변화 JEP 441: Pattern Matching for switch이제 switch case 문장에서 단순한 값 뿐 아니라 타입, null 여부까지 판단할 수 있게 되었다. 여기서 패턴이라 특정한 형태나 구조를 가진 데이터를 찾아내기 위한 개념으로 생각할 수 있다. 기존의 switch 문장이 int, String 등으로 단순히 값이 같은지를 비교했다면 이제 Object를 파라미터로 받아서 타입 기반으로 처리하거나 when 키워드를 이용해서 조건을 추가할 수도 있게 되었다.// if 문을 이용한 타입 확인 및 활용static Str..
2024.09.20 -
이번 시간에는 DBMS의 window function의 over 절에 대해서 살펴보자. over 절의 활용 over() 절window 함수를 사용하기 위해서는 over() 절이 필수 항목이다. sum()을 그냥 쓰면 집계함수가 되고 over()가 있어야 window 함수가 된다. 다음의 간단한 예를 살펴보자.select title, length, rating, sum(length) over() "길이합", sum(length) over(partition by rating) "등급별 길이합"from filmorder by length;첫 번째 경우 처럼 over 절이 비어있으면 모든 쿼리 행을 대상으로 구성되며 window 함수는 전체 쿼리 결과를 하나의 파티션으로 취급한다. 따라..
window function 2이번 시간에는 DBMS의 window function의 over 절에 대해서 살펴보자. over 절의 활용 over() 절window 함수를 사용하기 위해서는 over() 절이 필수 항목이다. sum()을 그냥 쓰면 집계함수가 되고 over()가 있어야 window 함수가 된다. 다음의 간단한 예를 살펴보자.select title, length, rating, sum(length) over() "길이합", sum(length) over(partition by rating) "등급별 길이합"from filmorder by length;첫 번째 경우 처럼 over 절이 비어있으면 모든 쿼리 행을 대상으로 구성되며 window 함수는 전체 쿼리 결과를 하나의 파티션으로 취급한다. 따라..
2024.09.11 -
이번 시간에는 DBMS의 window function이라는 것을 mysql 중심으로 살펴보자.https://dev.mysql.com/doc/refman/9.0/en/window-function-descriptions.html MySQL :: MySQL 9.0 Reference Manual :: 14.20.1 Window Function Descriptions14.20.1 Window Function Descriptions This section describes nonaggregate window functions that, for each row from a query, perform a calculation using rows related to that row. Most aggregate funct..
window function 1이번 시간에는 DBMS의 window function이라는 것을 mysql 중심으로 살펴보자.https://dev.mysql.com/doc/refman/9.0/en/window-function-descriptions.html MySQL :: MySQL 9.0 Reference Manual :: 14.20.1 Window Function Descriptions14.20.1 Window Function Descriptions This section describes nonaggregate window functions that, for each row from a query, perform a calculation using rows related to that row. Most aggregate funct..
2024.09.09 -
이번 포스트에서는 데이터 저장 시 사용되는 character set과 collation에 대해 살펴보자. character set vs collation 기본 설정mysql에서는 database 생성 시 character set과 collate를 설정할 수 있다. 생략시에는 mysql 서버의 기본 설정을 따른다.create database samplecharacter set utf8 collate utf8mb4_0900_ai_ci;여기서 character set과 collate의 의미에 대해 살펴보자.character setcharacter set은 데이터베이스에 저장할 수 있는 문자들의 집합을 의미한다. 이 문자 집합은 데이터베이스가 어떤 문자들을 인식하고 저장할 수 있는지를 결정하다. 예를들어 지금..
[mysql]character set과 collation이번 포스트에서는 데이터 저장 시 사용되는 character set과 collation에 대해 살펴보자. character set vs collation 기본 설정mysql에서는 database 생성 시 character set과 collate를 설정할 수 있다. 생략시에는 mysql 서버의 기본 설정을 따른다.create database samplecharacter set utf8 collate utf8mb4_0900_ai_ci;여기서 character set과 collate의 의미에 대해 살펴보자.character setcharacter set은 데이터베이스에 저장할 수 있는 문자들의 집합을 의미한다. 이 문자 집합은 데이터베이스가 어떤 문자들을 인식하고 저장할 수 있는지를 결정하다. 예를들어 지금..
2024.09.09 -
이번 시간에는 Cookie, Session등 웹 애플리케이션에서 상태를 유지하기 위한 방법들에 대해 살펴보자. Http의 Stateless 한 특성 기본적으로 HTTP는 stateless 한 특성을 지닌다(반대말은 stateful 이다). 즉 한번 request를 보내고 서버로부터 response를 받으면 서로 남남으로 이전 요청의 상태를 기억하지 않는다. 그래서 로그인 후 글쓰기를 하려해도 다시 로그인 하라고 이야기 하게 된다.왜 HTTP는 stateless 할까?더보기확장성: 서버가 상태를 저장하지 않기 때문에 새로운 서버를 추가(scale out)하거나 기존 서버를 제거하는 것이 쉽다. 이를 통해 대규모 트래픽에 대응하기가 용이하다.단순성: 들어오는 요청만 처리하면 되기 때문에 시스템의 구성이 ..
07. cookie와 session이번 시간에는 Cookie, Session등 웹 애플리케이션에서 상태를 유지하기 위한 방법들에 대해 살펴보자. Http의 Stateless 한 특성 기본적으로 HTTP는 stateless 한 특성을 지닌다(반대말은 stateful 이다). 즉 한번 request를 보내고 서버로부터 response를 받으면 서로 남남으로 이전 요청의 상태를 기억하지 않는다. 그래서 로그인 후 글쓰기를 하려해도 다시 로그인 하라고 이야기 하게 된다.왜 HTTP는 stateless 할까?더보기확장성: 서버가 상태를 저장하지 않기 때문에 새로운 서버를 추가(scale out)하거나 기존 서버를 제거하는 것이 쉽다. 이를 통해 대규모 트래픽에 대응하기가 용이하다.단순성: 들어오는 요청만 처리하면 되기 때문에 시스템의 구성이 ..
2024.09.08