Skip to content

Latest commit

ย 

History

History
101 lines (87 loc) ยท 3.44 KB

File metadata and controls

101 lines (87 loc) ยท 3.44 KB

๐ŸŽฌ ์˜ํ™” ๋ฆฌ๋ทฐ ํ”„๋กœ์ ํŠธ

๐Ÿ“– ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

์˜ํ™” ๋ฆฌ๋ทฐ ํ”„๋กœ์ ํŠธ๋Š” ์‚ฌ์šฉ์ž์˜ ์‹œ์ฒญ ๊ธฐ๋ก๊ณผ ์˜ํ™” ์ •๋ณด๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” Java ๊ธฐ๋ฐ˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค.
์ด ํ”„๋กœ์ ํŠธ๋Š” Oracle ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ฉฐ, CRUD ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์˜ํ™” ๊ฐ์ƒ ๊ธฐ๋ก์„ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž๋“ค์ด ์ž์‹ ์˜ ์‹œ์ฒญ ์ด๋ ฅ์„ ๊ด€๋ฆฌํ•˜๊ณ  ์˜ํ™”์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๋ฉฐ, ์˜ํ™”๋ฅผ ๊ฐ์ƒํ•œ ์‚ฌ์šฉ์ž๋งŒ ๋ฆฌ๋ทฐ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ’ก ์ฃผ์š” ๊ธฐ๋Šฅ

  • ์‚ฌ์šฉ์ž ์‹œ์ฒญ ๊ธฐ๋ก ๊ด€๋ฆฌ

    • ์‹œ์ฒญ ๊ธฐ๋ก ์กฐํšŒ, ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œ ๊ธฐ๋Šฅ ์ œ๊ณต.
    • ์˜ํ™”๋ณ„ ์ด ์‹œ์ฒญ ํšŸ์ˆ˜๋ฅผ ์ž๋™์œผ๋กœ ๊ณ„์‚ฐ ๋ฐ ์—…๋ฐ์ดํŠธ.
    • ์‹œ์ฒญ ๊ธฐ๋ก ๋ณ€๊ฒฝ ์‹œ ๊ด€๋ จ ๋ฐ์ดํ„ฐ(์‹œ์ฒญ ํšŸ์ˆ˜ ๋“ฑ) ์ž๋™ ๋ฐ˜์˜.
  • ์˜ํ™” ์ •๋ณด ํ†ตํ•ฉ ๊ด€๋ฆฌ

    • ์˜ํ™” ์ œ๋ชฉ, ๊ฐœ๋ด‰์ผ, ์žฅ๋ฅด, ์ƒ์˜ ์‹œ๊ฐ„ ๋“ฑ ์„ธ๋ถ€ ์ •๋ณด ์ œ๊ณต.
    • ์‹œ์ฒญ ๊ธฐ๋ก๊ณผ ์˜ํ™” ์ •๋ณด๋ฅผ ์—ฐ๋™ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํ™œ์šฉ๋„ ๊ทน๋Œ€ํ™”.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™

    • Oracle SQL์„ ํ™œ์šฉํ•œ ์•ˆ์ •์ ์ด๊ณ  ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ.
    • ๋ณต์žกํ•œ ์ฟผ๋ฆฌ(Subquery, Aggregate Function ๋“ฑ)๋กœ ์œ ์šฉํ•œ ๋ฐ์ดํ„ฐ ์กฐํšŒ ๊ฐ€๋Šฅ.
    • ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋กœ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ๊ณผ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ.
  • ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์„ค๊ณ„

    • DAO์™€ VO ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉํ•œ ๋ชจ๋“ˆํ™” ๋ฐ ์žฌ์‚ฌ์šฉ์„ฑ ๋†’์€ ๊ตฌ์กฐ.
    • ์‚ฌ์šฉ์ž ๋ฆฌ๋ทฐ ๋ฐ ํ‰์  ๊ธฐ๋Šฅ ๋“ฑ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ํ™•์žฅ ๊ฐ€๋Šฅ.
  • ํŽ‘์…˜, ํŠธ๋ฆฌ๊ฑฐ, ํ”„๋กœ์‹œ์ € ์†Œ๊ฐœ

    • ID ์ž๋™ ์ƒ์„ฑ ํŠธ๋ฆฌ๊ฑฐ
CREATE OR REPLACE TRIGGER USER_ID_TRIGGER
BEFORE INSERT ON Users
FOR EACH ROW
BEGIN
   IF :NEW.user_id IS NULL THEN
       :NEW.user_id := 'USER' || TO_CHAR(USER_ID_SEQ.NEXTVAL, 'FM0000');
   END IF;
END;
/
  • ํŒจ์Šค์›Œ๋“œ ์ฐพ๊ธฐ ํŽ‘์…˜
CREATE OR REPLACE FUNCTION FIND_PASSWORD_FUNC (
    p_user_id IN VARCHAR2,
    p_email IN VARCHAR2
) RETURN VARCHAR2
AS
    v_password VARCHAR2(255);
BEGIN
    SELECT password
    INTO v_password
    FROM Users
    WHERE user_id = p_user_id
      AND email = p_email;
    RETURN v_password;
EXCEPTION
    WHEN NO_DATA_FOUND THEN
        RETURN '์กด์žฌํ•˜์ง€ ์•Š๋Š” ์‚ฌ์šฉ์ž ์ž…๋‹ˆ๋‹ค';
END;
/
  • ์žฅ๋ฅด๋ณ„ ์˜ํ™” ์ฐพ๊ธฐ ํ”„๋กœ์‹œ์ €
CREATE OR REPLACE PROCEDURE list_movies_by_genre (
    p_genre IN VARCHAR2,
    p_cursor OUT SYS_REFCURSOR
) IS
BEGIN
    OPEN p_cursor FOR
        SELECT title, release_date, duration
        FROM Movies
        WHERE genre = p_genre;
END;
/

๐Ÿš€ ์‚ฌ์šฉ ๊ธฐ์ˆ 

  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด: Java 21 (JDK 21.0.4)
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค: Oracle SQL
  • ๊ฐœ๋ฐœ ๋„๊ตฌ: Eclipse 4.32.0
  • ํ˜•์ƒ ๊ด€๋ฆฌ: Git

๐Ÿ“ˆ ERD ๋‹ค์ด์–ด๊ทธ๋žจ

ERD


๐Ÿ’ป ์‹คํ–‰ ํ™”๋ฉด

  • ํšŒ์› ๊ฐ€์ž… ํ™”๋ฉด ์Šคํฌ๋ฆฐ์ƒท 2024-12-02 165648
  • ์˜ํ™” ์กฐํšŒ ํ™”๋ฉด ์Šคํฌ๋ฆฐ์ƒท 2024-12-02 165742
  • ์‹œ์ฒญ ๊ธฐ๋ก ํ™”๋ฉด ์Šคํฌ๋ฆฐ์ƒท 2024-12-02 165833
  • ์‹œ์ฒญ์ž ๋ฆฌ๋ทฐ ํ™”๋ฉด ์Šคํฌ๋ฆฐ์ƒท 2024-12-02 170054