널값 시맨틱
다음에서는 널값의 시맨틱에 대해 설명합니다.
- 알 수 없는(NULL) 값에 대한 비교 또는 산술 연산의 결과는 알 수 없는 값입니다.
- J2EE(Java 2 platform, Enterprise Edition) 버전 1.3 애플리케이션에서 경로 표현식은 NULL 필드 또는 cmr 값이 널(NULL)로 평가되는 외부 결합 시맨틱을 사용합니다. J2EE 버전 1.4에서 경로 표현식은 내부 결합 시맨틱을 사용합니다.
- IS NULL 및 IS NOT NULL 연산자는 경로 표현식에 적용할 수 있으며 TRUE 또는 FALSE를 리턴할 수 있습니다. 부울 연산자 AND, OR, NOT는 세 가지 값의 논리를 사용합니다.
AND | True | False | 알 수 없음 |
---|---|---|---|
True | True | False | 알 수 없음 |
False | False | False | False |
Unknown | 알 수 없음 | False | 알 수 없음 |
또는 | True | False | 알 수 없음 |
---|---|---|---|
True | True | True | True |
False | True | False | 알 수 없음 |
Unknown | True | 알 수 없음 | 알 수 없음 |
NOT | |
---|---|
True | False |
False | True |
Unknown | 알 수 없음 |
예: 널값 시맨틱
select object(e) from EmpBean where e.salary > 10 and e.dept.budget > 100
급여가 널일 경우, e.salary > 10의 평가는 알 수 없음을 리턴하며 직원 오브젝트는 리턴되지 않습니다. cmr 필드 dept 또는 budget이 널일 경우, e.dept.budget > 100의 평가는 알 수 없음을 리턴하며 직원 오브젝트는 리턴되지 않습니다.
select object(e) from EmpBean where e.dept.budget is null
J2EE 1.3에서 dept 또는 budget이 널일 경우, e.dept.budget의 평가는 널이고 TRUE를 리턴하며 직원 오브젝트가 리턴됩니다. J2EE 1.4에서 직원 오브젝트가 예산이 널인 경우에만 리턴됩니다.
select object(e) from EmpBean e , in (e.dept.emps) e1 where e1.salary > 10
부서가 널일 경우, 복수 값을 가지는 경로 표현식 e.dept.emps의 결과는 빈 콜렉션(널값을 포함하는 콜렉션이 아닌)입니다. 널 부서 값의 직원은 리턴되지 않습니다.
select object(e) from EmpBean e where e.dept.emps is empty
부서가 널일 경우, 술어에 대한 평가는 알 수 없음이며 직원 오브젝트는 리턴되지 않습니다.
select object(e) from EmpBean e , EmpBean e1 where e member of e1.dept.emps
부서가 널일 경우, 술어의 구성원에 대한 평가는 알 수 없음을 리턴하며 직원은 리턴되지 않습니다.