웹 개발하는 감자 - 1

신재원·2024년 4월 29일
0

diary

목록 보기
125/125

본문에 들어가기 앞서
해당 블로그는 Java, Oracle 에 대한 내용 입니다.

JAVA

JAVA 에서 문자열을 비교할때는 .equals() 메소드를 주로 사용 하게 됩니다.

이러한 배경지식을 가지고 회사에서 개발할때 파라미터로 넘어온 값을 .equals() 메소드를 사용하여 비교 하고 있었다.
(몇시간 동안 해당 로직에 디버깅을 태워보며..)

물론 .equals() 비교가 필요 한 경우도 있다.
예를 들어 주소값이 아닌 "값" 비교를 할 경우 .equals() 비교를 하게된다.

예시 코드

public String my0100 (String value) {
	if (value.equals(null) { 
    	System.out.println("NPE");
    }
}

파라미터인 valuenull 일 경우 if 문을 타고 들어가기도 전에 NPE (Null Pointer Exception)를 뱉는다.

→ 즉 System.out.println("NPE")- 출력이 안된다는 것 입니다.

그러면 어떻게 해야 될까 ?

1. equals 메소드가 아닌 == 비교를 한다.

예시 코드

public String my0100 (String value) {
	if (value == null) { 
    	System.out.println("NPE");
    }
}

잠깐 살펴봐도 별로 좋지 않은 코드인게 보일 것 입니다. 위 코드와 같이 null 그대로 비교하게 된다면 안정적이지 못하게 됩니다.

→ 정리하며 떠오른 생각으로 Optional 객체를 사용해서 null 을 안전하게 사용하면 될 것 같습니다.

ORACLE

SQL 를 작성하며 맞닥뜨릴수 있는 한 에러에 대해 다뤄 보려고 한다.

아래

ORA-00932: 일관성 없는 데이터 유형: -이(가) 필요하지만 CLOB임

간단하게 설명하여 데이터 타입이 맞지 않아서 발생하는 에러 입니다.

name 의 데이터 타입이 CLOB 임
Java에서의 형 변환 (타입캐스팅)이 필요함

select * from student where name = 'shin'; 

→ CLOB 데이터타입인 컬럼을 TO_CHAR()로 묶는다

select * from student where TO_CHAR(name) = 'shin'; 

0개의 댓글