CLOB ์ค๋ผํด ORA-24816 ์๋ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ ๐ง๊ฐํ์ ์ผ๋ก๐ง ๋ฐ์ดํฐ ์ฌ์ด์ฆ๊ฐ ํด ๋, ORA-03146(๋ฒํผ ๊ธธ์ด ๋ถ์ ํฉ) ์๋ฌ ๋ฐ์ ๋์ ๊ฒฝ์ฐ์๋ INSERT, UPDATE ์์๋ ๋ฌธ์ ๊ฐ ์์ผ๋ MERGE๋ฌธ์์ ์๋ฌ ๋ฐ์. ๊ตฌ๊ธ๋ง ์ ๋ช
ํํ ์์ธ ๋ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ ์กด์ฌ X -> ๋์์ผ๋ก empty_clob()์ผ๋ก ๋ฐ์ดํฐ ์์ฑ ํ ๋ฐ๋ก UPDATE๋ฌธ ์ํ์ผ๋ก ํด๊ฒฐ CUD์, CLOB์ปฌ๋ผ์ ์ ์ผ ๋ง์ง๋ง ์์๋ก ๋ณ๊ฒฝํ์ ๋ ํด๊ฒฐ๋์๋ค๋ ์ผ์ด์ค๋ ์กด์ฌ ๐ Reference ๋๋ณด๊ธฐ https://velog.io/@kimbad1992/Oracle-MERGE-INTO-%EA%B5%AC%EB%AC%B8%EC%97%90%EC%84%9C%EC%9D%98-CLOB-%ED%83%80%EC%9E%85-INSERT-%EC%8B..
Today I Learned/2023
[@Builder] ์์ํ ํด๋์ค์ ๋ฉค๋ฒ๋ ์ฌ์ฉํด์ ๋น๋ ์์ฑํ๊ธฐ @Builder ์ด๋
ธํ
์ด์
์ ์ฌ์ฉํ๋ค๋ณด๋ฉด, ์์๋ฐ์ ํด๋์ค์ ๋ฉค๋ฒ๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. @Getter @AllArgsConstructor public class Parent { private final String parentName; private final int parentAge; } @Getter @Builder public class Child extends Parent { private final String childName; private final int childAge; } ์๋ฅผ ๋ค์ด, ์์ ์ฝ๋์ ๊ฐ์ด Parent๋ฅผ ์์๋ฐ์ Child์ Builder๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค..
Java Switch NPE ํผํ๊ธฐ String str = null; switch (str) { case "one": System.out.println("1"); break; case "two": System.out.println("2"); break; default: System.out.println("default"); break; } ์์ ๊ฐ์ ์ฝ๋์์ switch(์กฐ๊ฑด) -> (์กฐ๊ฑด)์ ๋ค์ด๊ฐ๋ ๋ณ์๊ฐ null์ผ ๊ฒฝ์ฐ NPE๊ฐ ๋ฐ์ํ๋ค. ๋น์ฐํ ๊ฒฐ๊ณผ์ผ์๋ ์์ง๋ง, ์๊ฐ๋ณด๋ค ๋์น ์ ์๋ ๋ถ๋ถ์ด๋ผ ๊ธ๋ก ๋จ๊ฒจ ๋์ผ๋ ค๊ณ ํ๋ค. ๋ํ, NPE๋ฅผ ํผํ๊ธฐ ์ํ ๋ฐฉ๋ฒ ๋ช๊ฐ์ง๋ฅผ ์๊ฐํ๋ค. ์ฌ์ค ๋ค ์ฉ ๋ง์ ๋๋ ๋ฐฉ๋ฒ์ ์๋๋ผ, Pattern Matching ๊ธฐ๋ฅ์ด ๋์
๋ switch๋ฌธ์ ์ฌ์ฉ(java 17 ์ดํ..
[Mapstruct] LocalDateTime Date mapstruct ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํด LocalDateTime์ Date๋ฅผ ๋ฐ๊ฟ๋ ๊ธฐ๋ณธ์ ์ผ๋ก Timezone์ UTC๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ํ์ฌ ์๋ฒ๊ฐ ์กด์ฌํ๋ ๋๋ผ์ ์๊ฐ๊ณผ ๋ค๋ฅด๊ฒ ๋ณํ ๋๋ค. (์ฐ๋ฆฌ๋๋ผ์ ๊ฒฝ์ฐ -9์๊ฐ ๋ ์๊ฐ์ผ๋ก ๋ณด์ฌ์ง) ๊ทธ๋์ ํ์ฌ ์์คํ
์ timezone์ ์ด์ฉํด ๋ณํํด์ผ ํ๋๋ฐ ๋ฑํ timezone์ ๋ณ์๋ก ์ฌ์ฉํด ๋ฐ๊ฟ ์ ์๋ ๋ฐฉ๋ฒ์ ์์ด๋ณด์ฌ์, expression์ ์ด์ฉํด ๋ณํํ๋ ๋ฐฉ๋ฒ์ ์ ํํ๋ค. import org.mapstruct.Mapper; import org.mapstruct.Mapping; import java.time.ZoneId; import java.util.List; @Mapper(imports = Z..
LocalDateTime.MIN to Date, LocalDateTime.MAX to Date -> java.lang.IllegalArgumentException: java.lang.ArithmeticException: long overflow java.util.Date ํด๋์ค๋ฅผ ์ฌ์ฉํ์ง ์์์ผ ํ๋ ์ด์ ๊ฐ ์๋ ์์ด ๋ง๋ค๋ ์ ์ ์์ง๋ง, ์ด์ฉ ์ ์์ด Date ํด๋์ค๋ฅผ ์ด์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์์๋ค. (๋์ ๊ฒฝ์ฐ๋ ํ์ฌ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ์๋ฅผ ๋ค๋ฃฐ ๋ Date๋ฅผ ์ฌ์ฉ์ค์ด๊ณ (ใ
ใ
), ๊ทธ ์ธ์๋ ์ด์ ๊ฐ ์์๋ค) ์๋ฌดํผ, ๊ทธ๋์ LocalDateTime์ Date๋ก ๋ณํํ๋ค๋ณด๋ ์ค๋ฅ๊ฐ ๋ฐ์ํด ์ด๋ฅผ ๊ณต์ ํ๊ณ ์ ํ๋ค. ๐ LocalDate(LocalDateTime) to Date // Timestamp์ value..