웹 백엔드/개념정리
객체의 null상태와 notnull상태
Blue_bull
2025. 1. 22. 20:14
null
과 not null
상태는 객체가 초기화되었는지 여부에 따라 달라집니다. 아래는 코드에서 각 객체(ResultSet
, PreparedStatement
, Connection
)가 null
또는 not null
상태가 되는 상황에 대한 설명입니다.
1. 객체가 null
인 경우
초기화만 하고, 실제로 객체를 생성하지 않았을 때:
ResultSet rs = null; // 초기화만 했으므로 rs는 null
객체 생성 중 예외가 발생하여 생성되지 못했을 때:
try { PreparedStatement pstmt = conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); // 쿼리 실행 중 예외 발생 } catch (SQLException e) { // rs는 초기화되지 않았으므로 여전히 null }
메서드가 값을 반환하지 않거나 실패했을 때:
- 예를 들어,
makeBean()
메서드에서null
을 반환하면, 호출하는 쪽에서는null
상태를 받게 됩니다.
- 예를 들어,
2. 객체가 not null
인 경우
정상적으로 객체가 생성되었을 때:
ResultSet rs = pstmt.executeQuery(); // 쿼리가 정상 실행되어 rs는 not null
외부 메서드에서 값을 반환받았을 때:
메서드가 유효한 객체를 반환하면, 변수는
not null
이 됩니다:Connection conn = super.getConnection(); // 연결 성공 시 conn은 not null
코드 내 객체의 null
여부에 따른 동작
1. Connection conn
null
일 때:- 데이터베이스 연결이 생성되지 않았거나,
getConnection()
메서드가 실패한 경우.
- 데이터베이스 연결이 생성되지 않았거나,
not null
일 때:super.getConnection()
이 성공적으로 데이터베이스 연결을 반환한 경우.
2. PreparedStatement pstmt
null
일 때:Connection
이 없어서conn.prepareStatement(sql)
을 호출하지 못했거나, 호출 중 예외가 발생한 경우.
not null
일 때:conn.prepareStatement(sql)
이 정상적으로 호출되고, 객체가 생성된 경우.
3. ResultSet rs
null
일 때:pstmt.executeQuery()
호출 전에 예외가 발생하거나, 쿼리가 실행되지 않은 경우.
not null
일 때:pstmt.executeQuery()
가 성공적으로 실행되어 쿼리 결과가 반환된 경우.
예제 상황
정상적인 경우 (not null
)
try {
Connection conn = super.getConnection(); // 연결 성공 → conn은 not null
PreparedStatement pstmt = conn.prepareStatement(sql); // 성공 → pstmt는 not null
ResultSet rs = pstmt.executeQuery(); // 쿼리 실행 성공 → rs는 not null
} catch (Exception e) {
e.printStackTrace();
}
비정상적인 경우 (null
)
try {
Connection conn = super.getConnection(); // 실패 → conn은 null
PreparedStatement pstmt = conn.prepareStatement(sql); // conn이 null이므로 pstmt도 생성되지 않음
ResultSet rs = pstmt.executeQuery(); // pstmt가 null이므로 rs는 생성되지 않음
} catch (Exception e) {
e.printStackTrace();
}
null
과 not null
을 결정하는 핵심
- 정상적으로 객체가 생성되었는가?
- 메서드 호출이 성공하면
not null
. - 실패하거나 예외가 발생하면
null
.
- 메서드 호출이 성공하면
- 초기화만 되었는가?
- 객체 선언 시 초기화만 했다면
null
상태를 유지.
- 객체 선언 시 초기화만 했다면
결론
- 객체는 정상적으로 생성되었을 때
not null
이 됩니다. - 객체가 생성되지 않았거나 예외가 발생하면
null
상태가 됩니다. - 코드에서
if (obj != null)
조건을 사용하는 이유는, 객체가 생성되었는지 확인하고 작업을 진행하기 위함입니다.