Database12 ์ฟผ๋ฆฌ ํ๋ - ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ ํน์ ์ปฌ๋ผ ์ ์ธํ๊ณ ์กฐํ ๊ฐ์Spring Data JPA ๋ฅผ ์ฌ์ฉํด์ DB ๋ฅผ ์กฐํํ๋ฉด ์ง์ฐ ๋ก๋ฉ์ผ๋ก ์ค์ ๋์ด ์๋ ์ฐ๊ด ๊ด๊ณ ๋ฐ์ดํฐ๋ฅผ ์ ์ธํ๊ณ ์ฒ์๋ถํฐ ๋ชจ๋ ๋ฐ์ดํฐ ์ปฌ๋ผ ๊ฐ๋ค์ ๋ถ๋ฌ์จ๋ค. JPA ํน์ ์ ์ฒ์์ ๋ชจ๋ ๊ฐ๋ค์ ์ด๊ธฐํ ์ํค๊ณ ์ค๋ ์ต์ ๊ธฐ์ค์ผ๋ก ๋ํฐ ์ฒดํน์ ํด์ผํ๊ธฐ ๋๋ฌธ์ด๋ค. ํ์ง๋ง readOnly = true์ผ ๊ฒฝ์ฐ๋ ๋ํฐ์ฒดํน์ ํ ํ์๊ฐ ์๊ณ ์ํ๋ ๊ฐ๋ง ์ป์ผ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๊ฐ์ ์ด๊ธฐํํด์ ์ป์ ํ์๋ ์๋ค.์๋ฅผ ๋ค์ด DocumentDB ์ ๊ฐ์ NoSQL์ ์ฌ์ฉํ์ง ์๊ณ , RDB๋ก ์ํฐํด ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค๊ณ ์น์. @Entitypublic class Article { @Id @GeneratedValue private Long id; private String title; @Col.. Database 2024. 11. 13. CAP ์ด๋ก - ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ถ์ฐ ์์คํ ์ด๋ก ์์คํ ์ํคํ ์ฒ๋ฅผ ๊ณต๋ถํ๋ค๋ณด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ถ์ฐ์์คํ ์ ๊ณต๋ถํ๊ฒ ๋๋ ์ผ์ด ์๊ฒผ๋ค. ๊ทธ๋ CAP ์ด๋ก ์ด๋ผ๋ ๋จ์ด๋ฅผ ์ฒ์ ๋ดค๋๋ฐ, Capability ์ ์๊ธ์๋ฅผ ๋ฐ์ ๋ถ์ฐ ์์คํ ์์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๊ฐ์ฉ ๋ฅ๋ ฅ์ด๋ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ฑ๋ฅ์ ๊ด๋ จ๋ ์ด๋ก ์ธ์ค ์์๋ค.ํ์ง๋ง ๊ณต๋ถํด๋ณด๋ ์ ํ ๋ค๋ฅธ ๊ฐ๋ ์ด์๊ณ , CAP ์ด๋ก ์ ๋ถ์ฐ ์์คํ ์ DB ํ๊ฒฝ์์ ๋คํธ์ํฌ ๋ถํ ์ด ๋ฐ์ํ๋ฉด ์์คํ ์ ์ผ๊ด์ฑ๊ณผ ๊ฐ์ฉ์ฑ ์ค ํ๋๋ฅผ ์ ํํด์ผ ํ๋ฉฐ, ๋ ๋ค๋ฅผ ๋์์ ์๋ฒฝํ๊ฒ ๋ณด์ฅํ ์ ์๋ค๋ ์ด๋ก ์ด์๋ค. ๋๊ฒ ์ค์ํ ๊ฐ๋ ์ธ ๊ฒ ๊ฐ์์ ๊ธฐ๋ก์ผ๋ก ๋จ๊ฒจ๋๋ ค๊ณ ํ๋ค.๊ฐ๋ ๋จผ์ ๊ฐ๋ ์ ๋งํ์๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.CAP ์ด๋ก (CAP theorem)์ ๋ถ์ฐ ์์คํ ์์ ์ธ ๊ฐ์ง ์ฃผ์ ํน์ฑ์ธ ์ผ๊ด์ฑ(Consistency), ๊ฐ์ฉ์ฑ(Availability), ๊ทธ๋ฆฌ.. Database 2024. 9. 28. (23.01.10)Oracle ๋ฐ์ดํฐ๋ฒ ์ด์ค : on update cascade ๊ธฐ๋ฅ trigger๋ก ๊ตฌํํ โโon update cascade ๊ธฐ๋ฅ trigger๋ก ๊ตฌํํ๊ธฐโโ ์ค๋ผํด๊ณผ MS-SQL์ FK ์ ์ฝ์ ๊ฑธ๋ ON DELETE CASCADE ๋ฅผ ์ง์ํ์ง๋ง, ON UPDATE CASCADE๋ MS-SQL ๋ง ์ง์ํ๋ค. ์ค๋ผํด์์๋ ON UPDATE CASCADE๊ฐ ๋ง์ด ํ์ ํ๊ธฐ์ ์กฐ๊ธ ๋ถํธํ์ง๋ง Trigger๋ฅผ ์ด์ฉํด ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ด ์๋ค. ํธ๋ฆฌ๊ฑฐ ํน์ง - AFTER, BEFORE๋ฅผ ํตํด TRIGGER๊ฐ ์ธ์ ์คํ๋ ์ง ๊ฒฐ์ - FOR EACH ROW, ์ฆ ๋ชจ๋ ํ ์ด๋ธ์ ๋ฐ๋ณตํ๋ฉด์ ์คํ๋๋ค - BEGIN๊ณผ END ์ฌ์ด์ SQL๋ฌธ ์ฝ์ ๊ฐ๋ฅ, ์ด๋ ๋ฐ๋์ ; ๋ก ๋์ ๋ด์ฃผ์ด์ผ ํ๋ค!! CREATE TRIGGER ํธ๋ฆฌ๊ฑฐ๋ช AFTER UPDATE OF ๋ถ๋ชจํ ์ด๋ธ์ PK ์ปฌ๋ผ๋ช ON ๋ถ๋ชจํ ์ด๋ธ๋ช FOR EAC.. Database 2023. 1. 11. (23.01.09.) Oracle ๋ฐ์ดํฐ๋ฒ ์ด์ค : on delete cascade ์ค์ ํ๊ธฐ โโon delete cascadeโโ ๊ฒ์๊ธ๊ณผ ๋๊ธ ๊ฐ์ด ์ข ์ ๊ด๊ณ๊ฐ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ฉด ๋ถ๋ชจ ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋๋ฉด ์์๋ฐ์ดํฐ๋ ์๋์ ์ผ๋ก ์ญ์ ๋์ด์ผํ๋ค. ์ค๋ผํด์์ ์ด ๊ธฐ๋ฅ์ด ๋ฐ๋ก on delete cascade ์ด๋ค. ๊ฒ์๊ธ์ ์ญ์ ํ๋ ค๊ณ ํ๋ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด ์๋ฐฐ๋ก ์ญ์ ๊ฐ ์๋๊ณ 500์๋ฌ๊ฐ ๋์๋ค. ์ฐพ์๋ณด๋ delete cascade ์ ์ฝ์กฐ๊ฑด์ ์ค์ ํด๋์ผ ๋ถ๋ชจํ ์ด๋ธ ์ญ์ ์ ์์ํ ์ด๋ธ๋ ๊ฐ์ด ์ญ์ ๋๋ ๋ฐฉ๋ฒ์ ์ฐพ์๋ค. alter table ์์ํ ์ด๋ธ๋ช add constraint ์ค์ ํ ์ ์ฝ์กฐ๊ฑด๋ช foreign key (์ธ๋ํค๋ก ์ค์ ํ ํค) references ๋ถ๋ชจํ ์ด๋ธ๋ช (์ธ๋ํค๋ก ์ค์ ํ ํค) on delete cascade; !!์ธ๋ํค ์ ์ฝ์กฐ๊ฑด์ ์ถ๊ฐํ๊ธฐ ์ํด์ ๊ธฐ์กด์ ์ ์ฝ์กฐ๊ฑด์ ์ญ์ ํ, ๋ค์ ๋ฑ๋กํด์ค.. Database 2023. 1. 11. (22.12.09)Database: Join query, CROUP BY, Javascript Timing Events โโJoin queryโโ -inner join : ์ฐ๊ฒฐ ์กฐ๊ฑด์ ๋ง๋ ํ๋ง ์ฐ๊ฒฐํด์ ๊ฐ์ ธ์จ๋ค. -outer join : ์ฐ๊ฒฐ ์กฐ๊ฑด์ ๋ฒ์ด๋ ์์ด๋ ๊ฐ์ ธ์จ๋ค. left outer join right outer join full outer join -cross join : ์กฐ๊ฑด ์์ด ์ฐ๊ฒฐ ์ง๋๋ค (๊ธฐ์ค ํ ์ด๋ธ์ ํ ์ x ์ฐ๊ฒฐํ ํ ์ด๋ธ์ ํ ์ ๋งํผ์ ํ์๋ฅผ ๊ฐ์ง ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.) โโCROUP BY ~โโ โโJavascript Timing Eventsโโ - setTimeout (function ์ด๋ฆ, milliseconds(์ค์ ํ ์๊ฐ๋๋ฃ๊ธฐ ex: 3000 > 3์ด)) : 1ํ์ฉ ํ์ด๋จธ - setInterval (function ์ด๋ฆ, ์ค์ ํ ์๊ฐ) : ์ค์ ํ ์๊ฐ ๋ง๋ค ์ฃผ๊ธฐ์ ์ธ ํ์ด๋จธ Database 2022. 12. 9. (22.12.06)Database : MVC๋ฐฉ์ ๊ฒ์ํ ๋ต๊ธ ๋ฌ๊ธฐ (Oracle ๊ณ์ธต ์ฟผ๋ฆฌ ํ์ฉ) โโ๊ฒ์ํ ๋ต๊ธ ๋ฌ๊ธฐ- ๊ณ์ธต๊ตฌ์กฐ ์ง์(hierarchycal Query)โโ ์ค๋ผํด์์ ์ ๊ณตํด์ฃผ๋ ๊ณ์ธต๊ตฌ์กฐ ์ง์(hierarchycal Query)์ ํ์ฉํ์ฌ ๊ฒ์ํ์ ๋ต๊ธ ๋ฃ๊ธฐ ๊ธฐ์กด ๊ฒ์ํ [(22.12.02) ๊ฒ์ํ ๊ธ ์ฐธ๊ณ !!!] ์์ ๋ต๊ธ ๋ฌ๊ธฐ ๊ธฐ๋ฅ ๋ง๋ค๊ธฐ M : BoardVO.java , BoardDAO.java V : boardList.jsp , boardAdd.jsp , boardDetail.jsp , boardEdit.jsp , boardReple.jsp C : ์๋ธ๋ฆฟ MVC Service : BoardService.java ํ์ฌ ๊ธ์ ์๋ java, jsp ํ์ผ์ (22.12.02)๊ธ ์ฐธ๊ณ BoardService.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1.. Database 2022. 12. 6. (22.12.05) Database : ๊ณ์ธต๊ตฌ์กฐ ์ง์(hierarchycal Query), pagination(ํ์ด์ง ๋๋๊ธฐ),VIEW ๋ง๋ค๊ธฐ, ์ธ๋ถํค ์ ์ฝ์กฐ๊ฑด โโ๊ณ์ธต๊ตฌ์กฐ ์ง์(hierarchycal Query)โโ -๋ถ๋ชจ๊ธ /์์๊ธ ์ ๋ ฌ ๋๊ตฌ์๋์ ๋๊ตฌ๋ฅผ ๋ถ์ด๋ผ root๋ฅผ ์ ํด์ฃผ๋ฉด ๊ฐ์ง๊ฐ ๋ถ๋๋ค ์์ฌ์ ์ฌ์๋ฒํธ๋ก ์ ๋ ฌ์ ํ๊ฒ ๋๋ค๋ฉด ๋ฃจํธ๋ฅผ ์ ํด์ฃผ๊ณ ๊ทธ๊ณณ๋ถํฐ ์ฌ์๋ฒ์ ์์ฌ๋ฒํธ๊ฐ ๊ฐ์ ์ฌ๋๋ผ๋ฆฌ ์ ๋ ฌํ๋ค. ํ์ง๋ง ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ์ง ์์ ๋ณด๊ธฐ๊ฐ ๋ถํธํ๋ค. LPAD๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ด ์ฐ๊ธฐ๋ฅผ ํด์ค๋ค. ํธ๋ฆฌ์ ๊ฐ์ง๋ค์ ๊ฐ์ง์น๊ธฐ ํ ๋งํผ ๋ค์ฌ์ฐ๊ธฐ ๋๊ฒ ๋๋ค. NAME : KING์ ๋ ๋ฒจ์ด 1์ด๋ฏ๋ก ๋ ๋ฒจ 2๋ถํฐ ๋ค์ฌ์ฐ๊ธฐ ํด์ฃผ๊ณ ์ถ์ผ๋ (LEVEL-1)์ ํด์ค๋ค. ์ด๋ฆ์ ๋น์นธ์ ์ฃผ์ด ๋ค์ฌ์ฐ๊ธฐ ํ๊ณ ์ถ์๋ฐ ์์คํ ์์์ ๊ณต๋ฐฑ์ ํ๋๋ง ์ทจ๊ธ์ ํ๋ค. ๋ฐ๋ผ์ ํน์๋ฌธ์๋ฅผ ์ฌ์ฉํด์ค๋ค. 'ใฑ'์ ์ฐ๊ณ ํ์ ํค๋ฅผ ๋๋ฅด๋ฉด 1๋ฒ์ ๊ณต๋ฐฑ์ด ์๋ ๊ฑธ ํ์ธํ ์ ์๋ค. ๊ณต๋ฐฑ๋์ '*'์ ์ด๋ค๋ฉด ์ด์ .. Database 2022. 12. 5. (22.12.02)Database : DB์์ ์ ๋ณด๋ฅผ ๊บผ๋ด์ค๊ณ ์ถ๊ฐํ๋ ์น ํ๋ก๊ทธ๋๋ฐ(๊ฒ์ํ ๊ธ ์ฐพ๊ธฐ,์ถ๊ฐ,์์ ,์ญ์ CRUD) โโ๊ฒ์ํ CRUDโโ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(name = "DBBoardServlet", urlPatterns = { "/DBBoard" }) public class BoardServle.. Database 2022. 12. 2. (22.12.01)Database : ์ฌ์์ ๋ณด ์ญ์ ํ๊ธฐ, ์ถ๊ฐํ๊ธฐ, DB์์ ํ ์ด๋ธ ์์ฑ, ๋ ์ง ๊ฐ์ ธ์ค๊ธฐ, ์ํ์ค โโ์ฌ์์ ๋ณด ์ญ์ ํ๊ธฐโโ ํ์์ ๋ณด๋ฅผ ์ญ์ ํ๋ฉด DB์์๋ ํ ์ด๋ธ์์ ๊ฐ์ฒด ์ ๋ณด๋ฅผ ์ญ์ ํ๊ธฐ empDAO.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 1.. Database 2022. 12. 1. (22.11.30)Database : DB์์ ๋ฐ์ดํฐ๋ฅผ ๋ฝ์ MVC๋ฐฉ์์ผ๋ก ์นํ๋ก๊ทธ๋๋ฐ ํ๊ธฐ, ์ฌ์์ ๋ณด ์์ ํ๊ธฐ โโDB์์ ๋ฐ์ดํฐ๋ฅผ ๋ฝ์ ์นํ๋ก๊ทธ๋๋ฐ ํ๊ธฐโโ ์ด์ฉ์๊ฐ ๊ฒ์ํ ์ ์๋ ๊ธฐ๋ฅ์ค '์ด๋ฆ๊ฒ์'๊ณผ '๋ถ์๋ฒํธ' ๊ฒ์ ๋ ์ค ํ๋๋ฅผ ์ ํํ์ฌ ๋ง์ฝ ์ด์ฉ์๊ฐ '๋ถ์๋ฒํธ'๋ฅผ ์ ํํ๋ค๋ฉด ์๋ฒ์ธก์ ๋ถ์๋ฒํธ ๋ฆฌ์คํธ๋ฅผ ์์ฒญํ์ฌ ์๋ต(JSONArray ๋ฌธ์์ด)์ ๋ฐ์์ ' keyword' ๋ฐ์ค์ ๋ณด์ฌ์ค๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฒ์์ ํ๋ฉด ์์ธ๋ณด๊ธฐ๋ฅผ ํ ์ ์๊ฒ ํ๋ค. Servlet 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet;.. Database 2022. 11. 30. (22.11.29)Database : DB์์ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด MVC๋ฐฉ์์ ํตํ์ฌ ์น๋ธ๋ผ์ฐ์ ์ ๋ฐ์ดํฐ ๋ํ๋ด๊ธฐ โโ์น์์ MVC ๋ฐฉ์์ ๋ง์ถฐ Database์์ ์ ๋ณด๋ฅผ ๋ฝ์ ์น์์ ๋ํ๋ด๊ธฐโโ โModel : ๋ฐ์ดํฐ์ ๊ด๋ จ๋ ์์ ๋ค - -DB ์ ์ถ๋ ฅ์ ๋ด๋นํ๋ ํด๋์ค(DAO, Data Access Object) -๋ฐ์ดํฐ ๊ทธ ์์ฒด๋ฅผ ๋ํ๋ด๋ VO ํด๋์ค(DTO, Data Transfor Object) โView : ์ค์ ๋ธ๋ผ์ฐ์ ์ ๋ํ๋๋ ์์๋ค - html๋ฅผ ์ฌ์ฉํ์ฌ jsp ํ์ผ๋ก ์์ฑํ๋ค. โController : ๋ชจ๋ธ๊ณผ ๋ทฐ ๊ฐ์ ํ๋ฆ์ ์ ์ด ํ๋ ์์ โโ์ ๊ฐ์ ๊ธฐ์กด ๋ฐฉ์์์ ์๋ธ๋ฆฟ์ ๊ธฐ๋ฅ์ ์ต์ํ ์ํค๊ณ DB ์ ์ถ๋ ฅ ํ๋ ๋ฉ์๋ ๋ค์ ์๋ก์ด ํด๋์ค๋ฅผ ๋ง๋ค์ด์ ์๋ํ๊ฒ ๋ง๋ค๊ธฐโโ EmpVO.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2.. Database 2022. 11. 29. (22.11.28)Database : SQL, RDBMS(Oracle), Run SQL Command Line, sqlDeveloper โโDataBaseโโ DBMS (Database Management System) RDBMS(Relational Database Management System) ๊ด๊ณํ~ ,Oracle , MySQL, MariaDB ... SQL : Structured Query Language (DB๊ด๋ฆฌ์ฉ ํ์ค ์ง์์ด) NoSQL(Not only ~) : ๋น ๋ฐ์ดํฐ ์ ์ฅ์ฉ MongoDB Java App -> SQL -> Oracle(table) Oracle ๋ค์ด๋ก๋ ํ๊ธฐ https://www.oracle.com/database/technologies/xe-prior-release-downloads.html XE Prior Release Archive Getting Started: Support Oracle Databa.. Database 2022. 11. 28. ์ด์ 1 ๋ค์