전체 글 163

[JAVA] NULL 처리를 잘하자

🔍 null 처리를 잘하자 – 진짜 실수는 예외가 아니다최근.. 회사에서 NULL 처리가 안되서 오류나는 사건들이 속출하고 있다.진짜 기본적인건데 생각하기 어렵기 때문에 오늘도 다짐을 하고 가본다.. ☠️ null은 조용히, 하지만 확실하게 망친다개발하면서 가장 흔하게 마주치는 오류 중 하나가 바로 NullPointerException(NPE)입니다. 특히 Java 개발자라면 null 체크는 거의 반사적으로 하게 되는 루틴이죠. 그런데, 언제부턴가 이게 "습관"이 되어버린 건 아닌지 한번 돌아보게 되더군요.그냥 if (obj != null)로 막기만 한다고 해서 진짜 null 처리를 잘하고 있는 걸까요? ✅ null 처리를 잘 한다는 건?null 처리를 “잘 한다”는 건 단순히 예외를 회피하는 것이..

[SQL] ORA-00932 데이터 유형이 일치하지 않습니다

오류 로그가 preparedStatement.setNull(18,1111) 로 계속 났었다.18번째 컬럼이 오류라는데 전혀 그런 것 같지 않았다. 원인을 찾아보자 🚨 오류 원인1111은 java.sql.Types.OTHER에 해당하는 값이지만, Oracle에서 이 타입을 사용하는 칼럼이 아니라면 오류가 납니다.특히, 해당 칼럼이 VARCHAR2, NUMBER, DATE와 같이 일반적인 타입인데 1111을 넣으면 "부적합한 열 유형" 또는 유사한 타입 관련 오류가 발생합니다. ✅ #{param, jdbcType=VARCHAR} 형태로 사용 INSERT INTO users (name, age) VALUES (#{name, jdbcType=VARCHAR}, #{age, jdbcType=INTEGER}) ..

[SQL] ORA-01461: LONG 값은 LONG 열에 삽입할 때만 바인드할 수 있습니다

이 오류는 현업에서 데이터 수정하시는데 자꾸 오류가 난다고 하셔서로그를 보다가 발견한 오류이다.컬럼에 설정된 문자열 사이즈보다 큰 문자열을 넣으려고 하면 나는 오류이다.매우 간단! 🧠 이 오류는 왜 발생할까?이 오류는 주로 VARCHAR2(4000) 타입의 컬럼에 4000바이트가 넘는 문자열을 삽입하려 할 때 발생합니다.Oracle DB에서 VARCHAR2 컬럼은 최대 4000바이트까지만 저장할 수 있기 때문에,그보다 큰 문자열을 넣으려고 하면 다음과 같은 오류가 발생하게 됩니다:ORA-01461: can bind a LONG value only for insert into a LONG column이럴 때는 CLOB(Character Large Object) 타입으로 컬럼을 변경하거나,입력 데이터를 조..

SEED 암호화 알고리즘

회사에서 API 연계시 SEED 암호화를 쓰고 있어어 좀 알아보ZA~SEED 암호화 알고리즘이란?SEED는 대한민국 국가정보원(NIS)에서 개발한 대칭키 블록 암호화 알고리즘입니다.128비트 블록 크기와 128비트 키를 사용하는 구조로, 주로 빠르고 안전한 데이터 암호화가 필요한 환경에서 사용됩니다.✅ SEED의 특징안전성다양한 보안 분석을 통해 강력한 보안성을 확보했으며,국제 표준인 ISO/IEC 18033-3에도 채택되었습니다.효율성하드웨어 및 소프트웨어 구현 모두에서 빠르고 효율적으로 작동하도록 설계되었습니다.호환성다양한 플랫폼에서 구현 가능하며,다른 암호화 알고리즘과의 호환성까지 고려한 구조입니다.🔐 운영 모드 종류SEED는 다양한 운영 모드를 제공하며, 사용 목적에 따라 선택할 수 있습니다.대..

[SQL] ORA-01427 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다.

SQL을 다루다 보면 다음과 같은 오류 메시지를 접한 적이 있을 겁니다.ORA-01427: 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다이 오류는 서브쿼리(Subquery)를 사용할 때 자주 발생하며, SQL을 작성할 때 한 번쯤은 꼭 겪게 되는 문제 중 하나입니다.✅ 오류 원인SELECT 문 안에 있는 서브쿼리(subquery)가 2개 이상의 행(row)을 반환했는데,그 서브쿼리를 사용하는 위치는 단 하나의 값만 허용하는 곳일 때 발생하는 오류입니다.예시:SELECT nameFROM employeesWHERE dept_id = (SELECT dept_id FROM departments WHERE location = 'Seoul');위 쿼리에서 location = 'Seoul'인 departmen..

[SQL] cron(크론)

CRON 크론식은 리눅스와 유닉스 기반 시스템에서 주기적으로 작업을 예약하고 실행하기 위해 사용되는 시간 기반 스케줄링 시스템입니다. 크론(Cron)은 그리스 신화에서 시간을 관리하는 타이탄 중 하나인 크로노스(Kronos)에서 이름을 따온 것입니다. 크론식 정규표현식 Asterisk (*) - 모든 값 표시 분(0-59), 시(0-23), 일(1-31), 월(1-12), 요일(0-7, 0과 7은 일요일) Comma (,) - 여러 값 지정 예: "1,5,10"은 1, 5, 10을 나타냄 Hyphen (-) - 범위 지정 예: "2-6"은 2부터 6까지를 나타냄 Slash (/) - 간격 지정 예: "*/5"는 5분 간격으로 모든 값에 대해 일치함을 나타냄 숫자 - 특정 값 지정 예: "3"은 3을 나타..

[SQL] 계층형 쿼리

SELECT LEVEL , LPAD(' ' ,2*(LEVEL-1)) || NAME AS NAME , CONNECT_BY_ROOT NAME AS ROOT_NAME FROM TEST_TABLE_ONE WHERE LEVEL >= 2 START WITH PP_LEVEL IS NULL CONNECT BY PRIOR P_LEVEL = PP_LEVEL CONNECT_BY_ROOT 최상위 노드 찾기 CONNECT_BY_ROOT NAME AS ROOT_NAME - 최상의 노드의 NAME이 조회 -- 최상의 노드의 NAME 조회 CONNECT_BY_ROOT NAME AS ROOT_NAME LEVEL 조회되는 레벨 -- 4 레벨만 조회 LEVEL = 4 -- 2 이상 레벨만 조회 LEVLE >= 2 LEVEL = 4 - 4..

Git과 SVN의 차이

SVN Git 분산 vs 중앙 집중식 중앙 집중식 분산 브랜치 관리 가능하나 강점이 아님 강점 속도 중앙 서버와 연결되어 느릴 수 있음 로컬 저장소에서 빠름 오프라인 작업 중앙 서버와 연결되어 있어야 함 로컬 저장소에서 가능 코드 저장소 구조 디렉토리 기반 스냅샷 기반 머지 방식 머지와 컨플릭트 처리가 까다로움 머지와 리베이스(Rebase) 방식 가능 SVN 프로세스 저장소 생성: 프로젝트를 위한 중앙 저장소를 생성합니다. 첫 번째 체크아웃(Checkout): 로컬 컴퓨터에서 작업할 프로젝트를 가져옵니다. 변경 사항 추적: 작업 디렉토리에서 변경 사항을 추적하고, 변경 사항을 중앙 저장소로 커밋합니다. 변경 사항 업데이트(Update): 중앙 저장소에 업데이트가 있으면 로컬 컴퓨터의 작업 디렉토리를 업데..

카테고리 없음 2023.04.14

[SQL] 배치와 프로시저의 차이

배치(batch)와 프로시저(procedure)는 서로 다른 개념입니다. 배치(batch)는 일괄 처리(batch processing)라고도하며, 대량의 데이터를 처리하거나 작업을 자동화하기 위해 여러 개의 작업을 그룹화하여 실행하는 것을 말합니다. 대부분의 경우 배치는 일정한 시간 간격으로 실행되며, 주로 데이터베이스에 대한 대량의 데이터 입력, 업데이트 또는 삭제 작업에 사용됩니다. 프로시저(procedure)는 데이터베이스에서 실행 가능한 하나 이상의 SQL문을 그룹화한 블록이며, 하나의 단위로 실행됩니다. 일반적으로 프로시저는 데이터베이스의 데이터를 처리하고, 응용 프로그램의 로직을 수행하기 위해 사용됩니다. 또한, 프로시저는 일반적으로 다른 SQL문에서 호출되어 실행되며, 호출자가 제공하는 매개..

반응형