JAN's History
<Optional>์ ์ฌ์ฉํด์ผ ํ๋ ์ด์ : Null ์์ ์ฑ๊ณผ ๋ช ์์ ์ฝ๋ฉ ๋ณธ๋ฌธ
<Optional>์ ์ฌ์ฉํด์ผ ํ๋ ์ด์ : Null ์์ ์ฑ๊ณผ ๋ช ์์ ์ฝ๋ฉ
JANNNNNN 2024. 4. 17. 12:31NullPointException๐๐ผ
ํ๋ก๊ทธ๋๋ฐ์ ํ๋ค ๋ณด๋ฉด null ์ฐธ์กฐ ์๋ฌ(NullPointerException)๋ ๊ฐ์ฅ ํผํ๊ณ ์ถ์ ์๋ฌ ์ค ํ๋์ ๋๋ค
์ด๋ฐ ์๋ฌ๋ ๋ฐํ์ ์ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ํ๋ก๊ทธ๋จ์ ์ ๋ขฐ์ฑ์ ๋จ์ด๋จ๋ฆฌ๊ณ , ๋๋ฒ๊น ํ๋ ๋ฐ์๋ ์ด๋ ค์์ด ๋ฐ๋ฅด๊ธฐ ๋๋ฌธ์ ๋๋ค.!
Optional Class
Java 8๋ถํฐ ๋์ ๋ Optional ํด๋์ค๋ ์ด๋ฌํ null ์ฐธ์กฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ณ ์๋์์ต๋๋ค. Optional์ '์์ ์๋ ์๊ณ , ์์ ์๋ ์๋ ๊ฐ'์ ๋ํํ๋ ํน๋ณํ ์ปจํ ์ด๋ ๊ฐ์ฒด์ ๋๋ค.
Optional์ ์ฌ์ฉํด์ผํ๋ ์ด์
- ๋ช
์์ ์ธ null์ฒดํฌ๋ฅผ ํด์ค๋๋ค.
- isPresent()๋ get()๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ช ์์ ์ผ๋ก null์ฒดํฌ๋ฅผ ํด์ผํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ค์๋ก null๋ฅผ ์ฐธ์กฐํ๋ ์ํฉ์ ์ปดํ์ผ ์ ์ ์ฌ์ ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
- Null์ ๋ํ ์์ ํ ์ฒ๋ฆฌ
- orElse(), orElseGet() ๋ฑ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด null์ผ ๊ฒฝ์ฐ ๋์ฒด๊ฐ์ ์ง์ ํ๊ฑฐ๋ ๋ณ๋ ๋ก์ง์ ์คํํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ Null์ ์์ ํ๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ๊ฐ๋
์ฑ ํฅ์
- Optional์ ์ฌ์ฉํ๋ฉด null์ฒดํฌ์ ๋ก์ง์ด ๋ช ํํด์ ์ฝ๋์ ๊ฐ๋ ์ฑ์ด ์ข์์ ธ ์ค์ฒฉ if๋ฌธ์ ์ค์ผ ์ ์์ต๋๋ค.
- ์๋ ์ ๋ฌ
- ์ฝ๋์์์ ์ด๋ค null์ด ๋ฐ์ํ๋์ง๋ฅผ ์ฝ๊ฒ ์์์ฐจ๋ฆด ์ ์์ต๋๋ค.
์์
Optional<MemberEntity> optionalMemberEntity = memberRepository.findById(id);
if(optionalMemberEntity.isPresent()) {
return MemberDto._toMemberDto_(optionalMemberEntity.get());
} else {
return null;
}
์ด ์ฝ๋์์ memberRepository.findById(id)๋ ID๋ก ํ์ ์ ๋ณด๋ฅผ ์กฐํํฉ๋๋ค.
๋ง์ฝ ํด๋น ID์ ํ์์ด ์๋ค๋ฉด null์ด ๋ฐํ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋์ ๋ฐํ๊ฐ์ Optional<MemberEntity>๋ก ๋ฐ์ ์์ ํ๊ฒ ์ฒ๋ฆฌํ๊ณ ์์ต๋๋ค.
๋ง์ฝ Optional ๋ด๋ถ์ ๊ฐ์ด ์๋ค๋ฉด, isPresent()๋ true๋ฅผ ๋ฐํํ๊ณ get()์ผ๋ก ๊ทธ ๊ฐ์ ์์ ํ๊ฒ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
๊ฐ์ด ์๋ค๋ฉด isPresent()๋ false๋ฅผ ๋ฐํํ๊ณ , ๋์ฒด๊ฐ์ ์ง์ ํ๊ฑฐ๋ ๋ณ๋ ๋ก์ง์ ์คํํ ์ ์์ต๋๋ค.
์ ๋ฆฌ
๋ฐ๋ผ์ null์ ์์ ํ๊ฒ ๋ค๋ฃจ๊ณ ์ถ๋ค๋ฉด, ๊ทธ๋ฆฌ๊ณ ๋ช ์์ ์ด๊ณ ๊ฐ๋ ์ฑ ๋์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ถ๋ค๋ฉด Optional ํด๋์ค๋ฅผ ์ ๊ทน ํ์ฉํ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค!
'์คํ๋ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํ๋ง๋ถํธ์์ AOP๋ฅผ ํ์ฉํ์ฌ Sentry ๋ฐ ๊ธฐ๋ณธ ํ์ผ๋ก Log ์ ์ฉํ๊ธฐ (0) | 2024.05.02 |
---|---|
DTO๊ฐ ํ์ํ ์ด์ (0) | 2024.04.29 |
์คํ๋ง๊ณผ JPA๋ฅผ ์ด์ฉํ ์น๊ฐ๋ฐ ํ๋ก์ ํธ_View ๊ตฌํ 2 (1) | 2024.04.12 |
์คํ๋ง๊ณผ JPA๋ฅผ ์ด์ฉํ ์น๊ฐ๋ฐ ํ๋ก์ ํธ_View ๊ตฌํ 1 (0) | 2024.04.11 |
์คํ๋ง๊ณผ JPA๋ฅผ ์ด์ฉํ ์น๊ฐ๋ฐ ํ๋ก์ ํธ_Repository๊ตฌํ (0) | 2024.04.08 |