전체 글 72

[MySQL] NOT EXIST 사용하여 INSERT 시 중복 값 체크하기

화면에서 한 노드에 동일한 값이 저장되는 경우의 수를 발견했다. 이럴 경우, 무결성 제약조건에 위배되어 duplicate key 오류가 발생했다. 이를 해결하기위해 테이블에 중복 값 여부를 확인하여 조회 값이 있으면 insert 하지 않고, 조회 값이 있으면 insert 하도록 NOT EXISTS를 사용하여 쿼리를 작성했다. xml에서 해당 SQL을 사용할 경우 주의해야할 점은 insert 쿼리라고 insert태그를 사용하는 것이 아니라, update 태그를 사용해야한다. # 예제 INSERT INTO tbl_cmm_config ( id, name, description ) SELECT #{id}, #{name}, #{description} FROM DUAL WHERE NOT EXISTS ( SELECT..

DataBase/MySQL 2024.01.16

[Spring] Spring Framework vs Spring Boot 차이점

■ Spring Framework 란? Spring Framework는 Java 기반의 오픈소스 애플리케이션 프레임워크입니다. Spring Framework를 사용할 경우, 개발자가 직접 설정 파일을 작성하여 Spring Container 구성 및 Bean 객체 등록 등 추가적인 설정이 필요합니다. ■ Spring Boot 란? Spring Boot는 Spring Framework 보다 개발자가 더욱 개발에만 집중할 수 있도록 하기 위해 나온 프레임워크입니다. Spring Boot는 Spring Framework를 사용하기 위한 설정의 많은 부분을 자동화하여 사용자가 편하게 스프링을 활용할 수 있도록 돕습니다. ■ 차이점 1. Dependency Spring Framework는 모든 dependency에..

Spring 2024.01.15

[Spring] @Value 어노테이션 Null 현상 해결

■ @Value 란? 필드나 메서드의 파라미터 수준에서 표현식 기반으로 값을 주입해주는 어노테이션입니다. 데이터베이스 접속정보, 변경 가능성이 높은 값 등에 대해 별도 properties 파일에서 정보를 가져오기 위해 사용합니다. 환경에 따라 유연한 값을 설정할 수 있기 때문에 수정과 관리가 용이합니다. ■ 오류 현상 1. application.properties #load balance lb.channel=1 2. Config.java import org.springframework.beans.factory.annotaion.Value; @NoArgsConstructor(access=AccessLevel.PRIVATE) public class Config { @Value("${lb.channel}") ..

Spring 2024.01.15

[JavaScript] XMLHttpRequest 사용하기

■ XMLHttpRequest 란? 웹 페이지에서 서버와 통신을 하여 데이터를 요청 및 응답받기 위한 객체입니다. 이 객체를 사용하면 웹 페이지 전체를 다시 로딩하지 않고, 일부분만을 갱신할 수 있습니다. ■ XMLHttpRequest 주요 프로퍼티 1. readyState XMLHttpRequest 객체의 현재 상태를 나타냅니다. 객체의 값은 다음과 같이 변화합니다. 값 의미 설명 0 UNSENT XMLHttpRequest 객체가 생성된 상태 1 OPENED open() 메소드가 호출된 상태 2 HEADERS_RECEIVED send() 메소드 호출 후, 서버에 요청한 결과의 Header를 수신한 상태 3 LOADING send() 메소드 호출 후, 서버에 요청한 결과를 받는 중인 상태 4 DONE 서..

JavaScript 2023.12.03

[JavaScript/jQuery] 데이터 속성(data-xxx) 값 가져오기

■ 데이터 속성이란? 데이터 속성(data-)이란, HTML5부터 추가된 개념으로 'data-'로 시작하는 모든 속성을 말합니다. 별도 다른 조작없이 HTML 요소에 추가 정보를 저장할 수 있게 도와주는 역할을 합니다. 개발자가 임의로 속성을 만들어서 데이터를 자유롭게 저장하여 사용할 수 있습니다. 해당 엘리먼트에 로 저장하여 사용하는 것으로 이해하면 쉽습니다. ■ 사용예제 HTML user와 code 데이터 속성을 만들어 각각 001, abc라는 값을 저장해주었습니다. 이처럼 하나의 HTML요소에 여러개의 데이터 속성을 동시에 사용할 수 있습니다. JavaScript 데이터 속성의 값 추출/변경/생성하는 JS코드는 다음과 같습니다. var id = document.getElementById("userI..

JavaScript 2023.11.30

[Java] ApachePDF 라이브러리 이용하여 PDF 파일 읽기

■ ApachePDFBox 란? Java로 작성된 오픈 소스 라이브러리로, PDF 파일을 생성, 수정, 조작 및 변환할 수 있는 기능을 제공합니다. 해당 라이브러리는 아래 링크에서 다운받을 수 있습니다. https://pdfbox.apache.org/download.html Apache PDFBox | Download Download Latest Releases The Apache PDFBox community provides feature and bugfix releases. Feature release for PDFBox 3.0.0 — 3.0.0 (requires Java 8) Feature release for PDFBox 2.0.x — 2.0.30 (requires Java 6) Feature r..

Java 2023.11.26

[Kafka] 자주 사용하는 콘솔 명령어 (2) - Producer / Consumer

■ Producer (메세지 송신) 1) 메세지 송신 $ ./kafka-console-producer.sh --broker-list 192.168.145.131:9191,192.168.145.132:9192 --topic TEST_TOPIC 2) 대량 메세지 송신 (500 byte메세지를 초당 만건씩, 100만건 송신) $ ./kafka-producer-perf-test.sh --topic TEST_TOPIC --throughput 1000 --record-size 500 --num-records 10000 --producer-propsbootstrap.servers=192.168.145.131:9191,192.168.145.132:9192 ■ Consumer(메세지 수신) 1) 메세지 수신 $ ./ka..

Kafka 2023.11.22

[Spring] CORS 오류 해결하기

■ CORS 에러 란? CORS는 SOP를 위반하여 나타나는 에러입니다. 클라이언트에서 다른 도메인을 가지는 서버로 요청을 보낼때, 브라우저에서 발생하는 보안정책을 의미합니다. - SOP(Same-Origin Policy) : 출처가 동일한 프로토콜, 포트번호, 도메인에서만 자원을 사용가능 하도록 하는 보안정책 - CORS(Cross-Origin Resource Sharing) : 교차 출처 리소스 공유로 현재 출처(Origin)가 아닌 다른 도메인에 요청을 보내 리소스를 공유 ■ Origin 이란? Origin이란, 요청을 보낸 곳의 주소(IP + Port)를 의미합니다. 다른 출처로 요청을 보낼 때 Request Header에 Origin을 포함하고, 서버는 응답헤더에 Access-Control-Al..

Spring 2023.11.22

[Java] properties 파일의 값 가져오기

■ Properties 란? Properties 클래스는 Hashtables의 하위 클래스이며, Hashtables를 상속 받았기 때문에 Map의 속성인 key와 values를 String 형태로 가지고 있습니다. 주로 자바에서 properties 파일은 설정정보를 저장할때 활용합니다. ■ 사용예제 dbConfig.properties properties 파일을 생성하고, 값을 key=value 형식으로 입력하여 저장합니다. #------------------------------------------------------------------ # Load Config configuration conf.db.ip = 127.0.0.1 conf.db.port = 3306 conf.db.name = test ..

Java 2023.11.15