728x90
728x90

전체 글 299

아두이노 통합 개발 환경 기능 이해 1 - Arduino IDE

아두이노(Arduino) IDE에 대해 알아보겠습니다. 아두이노(Arduino) IDE는 코드 작성을 위한 텍스트 편집 영역, 메시지 영역, 텍스트 콘솔 영역, 공통 기능을 위한 툴바(도구 모음), 메뉴로 구성되어 있습니다. ​ 아두이노(Arduino) IDE의 주요 기능으로는 프로그램 코드 컴파일과 Arduino 하드웨어와 연결하여 프로그램을 업로드하고 시리얼 통신을 합니다. ​ 아두이노(Arduino) IDE를 사용하여 작성된 프로그램을 스케치(Sketches)라고 합니다. 스케치(Sketches)의 파일은 .ino로 저장됩니다. 툴바의 열기 버튼, 저장 버튼으로 스케치 파일을 열거나 저장할 수 있습니다. ​ 아두이노(Arduino) IDE의 메시지 영역은 저장, 컴파일, 업로드, 오류에 대한 정보를..

아두이노 통합 개발 환경 설치 - Arduino IDE 1.8.18

아두이노(Arduino) 통합 개발 환경(IDE, Integrated Development Environment)은 프로그램을 코딩하여 아두이노 보드에서 실행되도록 기능들을 제공합니다. ​ 현재 1.8.18 버전입니다. ​ 1. 아두이노(Arduino) 사이트(https://www.arduino.cc/)에 접속합니다. 그리고 상단 메뉴에서 "SOFTWARE"를 클릭합니다. 2. 다운로드 옵션(DOWNLOAD OPTIONS)에서 "Windows Win 7 and newer"를 클릭합니다. 3. 아두이노 IDE에 대한 지원으로 기부 페이지가 나타납니다. "JUST DOWNLOAD"를 클릭합니다. 만약, 기부(Donation)를 하고 싶으시면 기부할 금액을 선택하신 후 "CONTRIBUTE & DOWNLOAD..

아두이노 우노 시작하기 - Arduino Uno

아두이노 우노(Arduino Uno) Arduino Uno는 ATmega328P를 기반으로 하는 마이크로컨트롤러 보드입니다. ATmega328P는 ATMEL사에서 만든 8-bit RISC 마이크로컨트롤러로 32KB 플래시 메모리를 내장하여 ISP(In-System Programmable, 시스템 내에서 프로그래밍 가능)를 지원합니다. RISC(Reduced instruction set computer - 축소 명령어 집합 컴퓨터)는 CPU 명령어의 개수를 줄여 명령어 해석 시간을 줄임으로써 실행 속도를 빠르게 한 방식입니다. 또한, 14개의 디지털 입력/출력 핀과 6개의 아날로그 입력 핀, 전원 출력 핀, 16MHz 세라믹 공진기, USB 연결 잭, 전원 잭, ICSP 헤더, 리셋 버튼으로 구성되어 있습..

Node.js 레스트 API 인증처리(토큰 재발급) - Node.js REST API Authentication Refresh-Tokon

Access-Token이 만료되면 로그인과 같은 인증을 하지 않고 재발급이 되도록 하기 위해서는 Refresh-Token를 생성해야 합니다. ​ ​ Refresh-Token 생성하기 ​ 1. memberapi.js 파일을 오픈하여 사용자 객체를 가지고 있는 배열에 refreshToken를 추가합니다. refreshToken는 사용자가 Access-Token를 재발급하려고 할 때 인증 확인과 검증하기 위해서 사용됩니다. let memberList = [ {id:"testid1", password:"testpwd1", name:"홍길동", refreshToken:""}, {id:"testid2", password:"testpwd2", name:"김철수", refreshToken:""}, {id:"testid..

Vue CLI 레스트 API 인증 정보 복호화 (Access-Token) - Vue CLI REST API Authentication, Base64 btoa/atob

Login을 하면 인증처리를 위해 레스트 API에서 JWT(JSON Web Token)를 이용한 Access-Token를 생성하여 처리하였습니다. 그러나 네트워크 해킹을 통해 Access-Token를 탈취하거나 브라우저의 쿠키(cookie)를 통해 쉽게 Access-Token를 탈취할 수 있어 보안에 취약합니다. ​ ​ 브라우저를 통한 Access-Token 탈취 ​ 브라우저에서 개발도구(F12)를 이용하여 Network로 Response(응답) 되는 정보를 확인할 수 있습니다. login의 Response 내용을 통해 accessToken을 확인할 수 있습니다. {"success":true,"accessToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJtZW1iZXJ..

Vue CLI 로그인 처리 3(공통 헤더 추가, 게시판 컴포넌트 수정) - Vue CLI Axios Add Common Header, Edit Board Component

전역 엑시오시 기본값(Global Axios Defaults)에 공통(Commone) 헤더(Header) 추가 ​ C:\workspaces\nodeserver\testvue\src\store\modules 폴더에서 login.js 파일을 오픈합니다. ​actions의 doLogin() 메서드에서 axios의 모든 요청에 적용되게 전역 기본값으로 헤더를 추가합니다. 헤더의 키는 "Access-Token"이고 값은 Login 후 응답받은 "accessToken"입니다. // 로그인합니다. async doLogin({ commit }, memberInfo) { let result = false; let resultErr = null; try { let res = await axios.post("http://l..

Vue CLI 로그인 처리 2(라우트 메타 필드, 중첩 처리) - Vue CLI Rounte Meta Fields, Nested Routes

Login이 필요로 하는 Vue에 대해 매번 라우트 별(beforeEnter)로 처리하거나 라우트 전역(beforeEach)으로 URL를 비교하여 처리하기에는 번거로울 수 있습니다. 그래서 라우트(route)의 메타(meta) 필드를 이용하여 처리하는 것이 좋습니다. ​ ​ Route Meta Fields (라우트 메타 필드)로 처리 ​ 1. C:\workspaces\nodeserver\testvue\src\router 폴더에 index.js 파일을 오픈합니다. Login이 필요로 하는 라우트에 meta 필드로 { requireLogin: true }를 추가합니다. 게시물 등록(/boardwrite), 수정(/boardedit)과 스코어(/score)에 meta 필드를 추가합니다. { path: '/bo..

Vue CLI 로그인 처리 1(로그인 모듈, 레스트 API 인증 연동) - Vue CLI Vuex Login Store, REST API Authentication)

로그인 Vue와 로그인 Store를 생성하고 내비게이션 가드(Navigation Guards)로 Login 후 처리되게 합니다. ​ ​ Login Vue 생성하기 ​ 1. C:\workspaces\nodeserver\testvue\src\views 폴더에 Login.vue 파일을 생성합니다. Login.vue 파일을 오픈하여 로그인 컴포넌트로 코딩합니다. This is an Login page 아이디 패스워드 로그인 취소 {{ errorMessage }} @click에 prevent를 추가하면 form의 input에서 엔터키를 누를 때 form이 submit 되는 것을 막을 수 있습니다. ​ form의 submit으로 사용할 경우에는 다음과 같이 하면 됩니다. 2. C:\workspaces\nodeser..

Vue CLI Vuex 모듈 처리 - Vue CLI Vuex Modules

Store를 모듈(module)로 사용하면 계층 구조로 Store를 관리할 수 있습니다. namespaced의 여부에 따라 상위 모듈과 계층 되거나 중첩됩니다. modules: { A: { namespaced: true, state: { stateA: 'A' --> this.$store.state.A.stateA }, getters: { getterA() { ... } --> this.$store.getters['A/getterA'] }, mutations: { mutationA() { ... } --> this.$store.commit('A/mutationA') }, actions: { actionA() { ... } --> this.$store.dispatch('A/actionA') }, module..

Vue CLI Vuex 설치 및 Store 연동 - Vue CLI Vuex Install, createStore

Vuex는 Vue.js에서 애플리케이션에 대한 상태 관리 패턴 + 라이브러리입니다. (Vuex is a state management pattern + library for Vue.js applications.) Vuex는 애플리케이션의 모든 컴포넌트에 대한 중앙 집중식 저장소 역할을 합니다. (It serves as a centralized store for all the components in an application.) ​ ​ Vuex 설치하기 (Vue 3 기준) ​ Vue 프로젝트에 Vuex를 설치하기 위해 콘솔에서 npm install 명령어를 실행합니다. npm install vuex@next --save npm install에 옵션으로 --save를 추가하면 자동으로 package.jso..

Node.js 레스트 API 인증처리(JWT 생성 및 검증) - Node.js REST API Authentication JWT(JSON Web Token) Sign, Verify

JWT(JSON Web Token - JSON 웹 토큰)은 두 개체 사이에서 안전하게 클레임을 전달(표현)해주는 산업 표준 RFC 7519 방법입니다. (JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.) ​ JWT는 header.payload.signature로 구성되어 있습니다. 도트(.)로 구분되어 있습니다. ​ header는 ALGORITHM & TOKEN TYPE으로 JWT 생성할 때 사용된 정보들로 검증할 때 사용됩니다. JSON을 base64UrlEncode() 메서드로 인코딩한 문자열입니다. ​ payload는 DATA로 JWT에 저..

Vue CLI 액시오스 레스트 API 연동 4 - Vue CLI Axios, REST API Connect (PUT, DELETE Method)

Vue Axios로 REST API 연동하기 ​ HTTP PUT 메서드로 REST API 서버에서 게시판 내용 수정하기 ​ 1. C:\workspaces\nodeserver\testvue\src\views 폴더에서 BoardEdit.vue 파일을 생성합니다. BoardEdit.vue 파일을 오픈하여 기본적인 Vue 컴포넌트로 코딩합니다. This is an board edit page 2. C:\workspaces\nodeserver\testvue\src\router 폴더에서 index.js 파일을 오픈하여 const routes에 추가합니다. { path: '/boardedit', name: 'BoardEdit', component: () => import('../views/BoardEdit.vue')..

Vue CLI 액시오스 레스트 API 연동 3 - Vue CLI Axios, REST API Connect (POST Method, Promise, asyn, await)

Vue Axios로 REST API 연동하기 ​ HTTP POST 메서드로 REST API 서버에서 새로운 게시판 내용 생성하기 ​ 1. C:\workspaces\nodeserver\testvue\src\views 폴더에서 BoardWrite.vue 파일을 생성합니다. BoardWrite.vue 파일을 오픈하여 기본적인 Vue 컴포넌트로 코딩합니다. This is an board write page 2. C:\workspaces\nodeserver\testvue\src\router 폴더에서 index.js 파일을 오픈하여 const routes에 추가합니다. { path: '/boardwrite', name: 'BoardWrite', component: () => import('../views/Board..

Vue CLI 액시오스 레스트 API 연동 2 - Vue CLI Axios, REST API Connect (GET Method, router.push, router.go)

Vue Axios로 REST API 연동하기​HTTP GET 메서드로 REST API 서버에서 게시판 번호로 게시판 내용 가져오기​1. C:\workspaces\nodeserver\testvue\src\views 폴더에서 BoardView.vue 파일을 생성합니다. BoardView.vue 파일을 오픈하여 기본적인 Vue 컴포넌트로 코딩합니다. This is an board view page  2. C:\workspaces\nodeserver\testvue\src\router 폴더에서 index.js 파일을 오픈하여 const routes에 추가합니다.{ path: '/boardview', name: 'BoardView', component: () => import('../views/BoardV..

Vue CLI 액시오스 설치 및 레스트 API 연동 1 - Vue CLI Axios Install, REST API Connect (GET Method)

Vue Axios는 Vue.js에서 Promise 기반 HTTP 비동기 통신 라이브러리로 많이 사용합니다. ​ ​ Vue Axios 설치하기 ​ Vue 프로젝트에 Vue Axios를 설치하기 위해 콘솔에서 npm install 명령어를 실행합니다. npm install --save axios npm install에 옵션으로 --save를 추가하면 자동으로 package.json 파일의 "dependencies"에 "axios" 항목이 추가됩니다. 설치가 진행됩니다. 설치가 완료됩니다. Vue 프로젝트의 node_modules 폴더(C:\workspaces\nodeserver\testvue\node_modules)에 axios 폴더가 추가됩니다. 그리고 package.json 파일의 "dependencie..

Node.js 레스트 API 서버 생성 및 실행 - Node.js REST API Server

REST API(RESTful API - 레스트 풀 API)는 Distributed Hypermedia Systems(디스트리뷰트드 하이퍼미디어 시스템 - 분산 하이퍼미디어 시스템)을 위한 REST(REpresentational State Transfer - 레프리젠테이셔널 스테이트 트렌스펄) 아키텍처의 제약 조건을 준수하는 API(Application Programming Interface - 애플리케이션 프로그래밍 인터페이스)를 뜻합니다. Guiding Principles of REST 1. Client–server(클라이언트-서버) : 사용자 인터페이스 관련 프로세스(클라이언트)를 데이터 스토리지 관련 프로세스(서버)로 부터 분리하여 여러 플랫폼에서 사용자 인터페이스(클라이언트)가 사용(이식성 - ..

Vue CLI 라우터 설치 및 적용 - Vue CLI Router Install

Vue Router는 Vue.js의 공식 라우터입니다. Vue에서 Router는 Vue 컴포넌트와 웹 경로를 연결해 줍니다. ​ Vue Router(https://router.vuejs.org/)에 대한 자세한 정보를 참고하기 바랍니다. Vue 프로젝트에 Vue Router를 설치하기 위해 콘솔에서 npm install 명령어를 실행합니다. npm install --save vue-router 그리고 Vue Router를 연동하기 위한 웹 경로와 Vue 컴포넌트를 연결하여 생성(createRouter() 메서드)하고 App.vue에서 사용(use() 메서드)하게 설정해야 합니다. ​ Vue에는 Vue Router에 대해 이런 일련의 작업들을 자동으로 처리해 Plugin을 제공합니다. Plugin을 설치하..

Vue CLI 컴포넌트 이해 2 - Vue CLI Components export(data, methods, event, watch, computed, lifecycle)

Vue 컴포넌트 export의 data, methods, event, watch, computed과 lifecycle에 대해 설명하겠습니다. ​ data data는 Vue 컴포넌트에서 사용할 변수들을 선언합니다. data는 Key : Value로 구성됩니다. 그리고 변수는 에서 바인딩하여 사용됩니다. 데이터 바인딩은 이중 중괄호(일명 Mustache - 무슈타쉬 - 수염)로 처리됩니다. 이중 중괄호는 HTML이 아닌 일반 텍스트로 데이터를 처리합니다. Hello, Vue! {{userId}}님, 안녕하세요. data에 선언한 변수는 에서 사용하지 않아도 문제는 없습니다. 그리고 data에서 선언되지 않은 변수를 에서 사용하면 빈 공간으로 처리됩니다. data 속성은 함수로 구성되어야 합니다. data :..

Vue CLI 컴포넌트 이해 1 - Vue CLI Components export(name, components, props)

Component(컴포넌트)란 프로그램에서 독립적인 프로세스나 기능을 수행하는 Module(모듈)입니다. ​ Vue 컴포넌트의 파일 확장자는 ".vue"입니다. Vue 컴포넌트는 , import로 가져온 TestComponent2 컴포넌트를 components에 등록하고 에서 로 사용합니다. components에서 가져온 Vue 컴포넌트를 components에 등록하지 않으면 "is defined but never used (no-unused-vars) - 정의되었지만 사용되지 않았습니다."라는 에러가 발생합니다. error: 'TestComponent2' is defined but never used (no-unused-vars) at src\components\TestComponent.vue:6:8:..

Vue CLI 설치 및 Vue 프로젝트 생성 - Vue CLI Install And Creating Vue Project

Vue CLI(https://cli.vuejs.org/)에 대한 자세한 정보를 참고하기 바랍니다. Vue CLI는 빠른 Vue.js 애플리케이션 개발을 위한 시스템을 제공합니다. ​ ​ Vue CLI 설치하기 ​ 1. 콘솔을 실행하고 Vue CLI를 설치하기 위해 npm install 명령어를 실행합니다. npm install -g @vue/cli 설치가 진행됩니다. 설치가 완료됩니다. 2. 설치 후 vue 명령어로 정상적으로 설치되었는지 확인할 수 있습니다. vue --version Vue 프로젝트 만들기 ​ 1. 콘솔을 실행하고 C:\workspaces\nodeserver 폴더로 이동합니다. 만약 폴더가 없으면 생성하시기 바랍니다. ​ 2. Vue 프로젝트를 생성하기 위해 vue create 명령어를..

Node.js 패키지 생성 및 실행 - Node.js package, npm init, npm run

Node.js의 패키지 만들기 ​ 1. C:\workspaces\nodeserver\test1 폴더를 생성합니다. 2. 콘솔을 실행하고 C:\workspaces\nodeserver\test1 폴더로 이동합니다. 패키지를 생성하기 위해 npm init 명령어를 실행합니다. npm init npm(Node Package Manager)는 Node.js로 만들어진 모듈을 설치하고 관리해 주는 프로그램입니다. ​ npm int는 패키지(애플리케이션)를 생성(초기화) 해주는 명령어입니다. ​ 패키지(애플리케이션)의 이름과 버전 같은 몇 가지 정보에 대해 prompt(프롬프트) 합니다. ​ 기본 설정으로 처리하겠습니다. 변경하려면 입력하고 엔터키를 누릅니다. 기본 값을 사용하려면 그냥 엔터키를 누릅니다. ​ pac..

윈도우 Node.js 설치 - Windows Node.js Download & Install - 14.x

1. Node.js 사이트(https://nodejs.org/ko/)를 접속합니다. 2023년 4월 12일 버전은 "20.1.0, 18.16.0 LTS"입니다. 안정적이고 신뢰도가 높은 버전(18.16.0 LTS)을 다운로드하시면 됩니다. 작성 당시 버전은 "14.17.4 LTS"입니다. "14.17.4 LTS"를 클릭합니다. 현재 사이트에서 안정적이고 신뢰도가 높다고 인정한 버전입니다. 웹브라우저에서 다운로드가 진행됩니다. 또는 상단의 "다운로드"를 클릭하고 다운로드 페이지에서 Windows Installer (.msi)의 64-Bit를 클릭합니다. (사용하시는 윈도우가 32-Bit인지 64-Bit인지 확인하신 후 다운로드를 진행하시기 바랍니다.) 2. "다운로드"폴더에서 다운로드한 "node-v14...

자바 마리아디비 문자형 데이터 타입(mediumtext, longtext) PreparedStatement 처리 3 - Java MariaDB String Data Types PreparedStatement

CLOB(Character large object)은 Oracle에서 아주 긴 문자열 데이터를 저장할 수 있는 데이터 타입이다. 이 타입은 테이블 자체에서 저장되지 않고 별도의 위치에 저장됩니다. 이처럼 MariaDB에서도 아주 긴 문자열 데이터를 저장할 수 있는 MEDIUMTEXT와 LONGTEXT가 있습니다. ​ ​ MEDIUMTEXT - 중간 크기의 텍스트 (TEXT 보다는 크고 LONGTEXT보다 작아서 중간 크기) ​ MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name] 최대 길이는 16,777,215입니다. (1 character = 1Byte) ​ 유효 최대 길이는 사용되는 Charset에 따라 달라집니다. Charset이 UTF..

자바 마리아디비 문자형 데이터 타입(tinytext, text) PreparedStatement 처리 2 - Java MariaDB String Data Types PreparedStatement

이어서 MariaDB(마리아디비)에서 String Data Types(문자형 데이터 타입)에서 TEXT들은 PreparedStatement에서 어떤 메소드로 값으로 설정해야 하는지 확인해 보겠습니다. ​ ​ TINYTEXT - 아주 작은 텍스트 ​ TINYTEXT [CHARACTER SET charset_name] [COLLATE collation_name] 최대 길이는 255입니다. (1 character = 1Byte) ​ 유효 최대 길이는 사용되는 Charset에 따라 달라집니다. Charset이 UTF8이면 한글은 문자당 최대 3Byte가 필요함으로 한글만 입력할 경우 최대 유효 최대 길이는 85입니다. 입력된 문자열에 멀티바이트 문자(한글)가 포함된 경우 유효 최대 길이가 짧아지는 것을 고려해야..

자바 마리아디비 문자형 데이터 타입(char, varchar) PreparedStatement 처리 1 - Java MariaDB String Data Types PreparedStatement

MariaDB(마리아디비)에서 String Data Types(문자형 데이터 타입)별로 PreparedStatement에서 어떤 메소드로 값으로 설정해야 하는지 확인해 보겠습니다. ​ CHAR - 고정 길이 문자열(fixed-length string) ​ CHAR(M) Range(길이) : 0 ~ 127 ​ (M)은 Byte가 아닌 문자 길이(수)입니다. 저장할 때 지정된 길이(M)만큼 공백이 항상 오른쪽으로 채워집니다. (M)을 설정하지 않으면 1로 설정됩니다. CREATE TABLE DAT_TEST10_TB ( COL_CHAR1 char(1), COL_CHAR2 char(1), COL_CHAR3 char(10) ) DEFAULT CHARSET=utf8; String query = "INSERT INT..

자바 마리아디비 숫자형 데이터 타입(bigint, decimal, float, double, bit) PreparedStatement 처리 2 - Java MariaDB Numeric Data Types PreparedStatement

이어서 MariaDB(마리아디비)에서 Numeric Data Types(숫자형 데이터 타입)에서 큰 정수와 실수들은 PreparedStatement에서 어떤 메소드로 값으로 설정해야 하는지 확인해 보겠습니다. ​ ​ BIGINT - 큰 정수(large integer) ​ BIGINT(M) Range(범위) : -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 ​ BIGINT(M) UNSIGNED BIGINT(M) UNSIGNED ZEROFILL Range(범위) : 0 ~ 18,446,744,073,709,551,615 ​ (M)을 설정하지 않으면 SIGNED은 음수 기호를 포함해서 20로 UNSIGNED (ZEROFILL)은 20으로 설정됩니다. CREA..

자바 마리아디비 숫자형 데이터 타입(tinyint, smallint, mediumint, int/integer) PreparedStatement 처리 1 - Java MariaDB Numeric Data Types PreparedStatement

MariaDB(마리아디비)에서 Numeric Data Types(숫자형 데이터 타입)별로 PreparedStatement에서 어떤 메소드로 값으로 설정해야 하는지 확인해 보겠습니다. ​ Numeric Data Types(숫자형 데이터 타입)의 키워드는 다음과 같습니다. SIGNED : 부호가 있는 숫자 (음수를 표현할 수 있습니다.) ex) -15, 15 UNSIGNED : 부호가 없는 숫자 (음수를 표시할 수 없습니다.) ex) 15 UNSIGNED ZEROFILL : 부호가 없는 숫자이고 문자로 가져올 때 지정된 길이로 숫자 앞에 "0"를 채웁니다. ex) 015 ​ Numeric Data Types(숫자형 데이터 타입)에서 (M)은 ZEROFILL 타입에서 사용하는 숫자의 최대 표시 너비입니다. 부..

자바 제네릭 메소드와 리플렉션을 이용한 자동 PreparedStatement 생성 3 - Java Generic Method Reflection PreparedStatement

세번째 ResultSet 객체에서 여러개의 행(row)를 받아 객체로 생성하고 리스트 객체로 전달하는 메소드인 executeQueryList()메소드를 생성하겠습니다. ​ PreparedStatement에서 사용되는 쿼리문 SELECT MBR_ID AS id, MBR_NM AS name FROM MBR_ACCOUNT_TB LIMIT 0, 10 쿼리문처럼 조건 없이 전체를 카운트 할 수 있어 전달되는 객체가 없을 수 있습니다. ​ executeQueryList()메소드는executeQueryOne()메소드와 동일하지만 결과가 리스트 객체로 전달됩니다. ​ 데이터베이스 컨넥션 객체를 가져옵니다. Connection connection = getConnection(); createPreparedStatemen..

자바 제네릭 메소드와 리플렉션을 이용한 자동 PreparedStatement 생성 2 - Java Generic Method Reflection PreparedStatement

두번째로 ResultSet 객체에서 한개의 행(row)에 한개의 컬럼(column)를 받아 전달하는 메소드인 executeQueryOneValue()메소드를 생성하겠습니다. ​ PreparedStatement에서 사용되는 쿼리문 SELECT COUNT(MBR_ID) AS CNT FROM MBR_ACCOUNT_TB WHERE 쿼리문처럼 조건 없이 전체를 카운트 할 수 있어 전달되는 객체가 없을 수 있습니다. ​ 그래서 이전의 createPreparedStatement()메소드에서 전달되는 객체가 없는 경우를 위해 수정합니다. /** * PreparedStatement 객체를 샹성합니다. * @param connection 데이터베이스 연결 객체 * @param query 쿼리 문자열 * @param par..

자바 제네릭 메소드와 리플렉션을 이용한 자동 PreparedStatement 생성 1 - Java Generic Method Reflection PreparedStatement

PreparedStatement 자동 생성과 실행으로 DAO에서는 쿼리문만 작성하게 되었습니다. 또한 반복적인 코드를 줄임으로써 개발 시간이 단축되었습니다. ​ 이어서 PreparedStatement에서 Select 쿼리문을 처리하는 메소드를 만들어 보겠습니다. ​ Select 쿼리문도 Insert, Update, Delete 쿼리문처럼 쿼리를 실행하지만 쿼리 결과는 ResultSet 객체로 받습니다. 또한 Select 쿼리문의 결과에는 한개 또는 여러개의 행(row)이 올 수 있고 한 개의 행(row)에 한 개의 컬럼(column)만 올 수 있습니다. ​ 그래서 Select 쿼리 처리 결과에 따라 메소드를 구분하여 만들어야 합니다. 1. ResultSet 객체에서 한개의 행(row)를 받아 객체로 생성..

728x90
728x90