πŸ’» BackEnd/🟨 Java

🟨 [Java] [Project] κ°„λ‹¨ν•œ μ‡Όν•‘λͺ° ν”„λ‘œμ νŠΈ λ§Œλ“€κΈ°

Dbswnstjd 2023. 6. 20. 09:52

πŸ“Œ μ‡Όν•‘λͺ° ν”„λ‘œμ νŠΈ

이전에 글을 μ“Έ λ•Œ μ‡Όν•‘λͺ° ν”„λ‘œμ νŠΈλ₯Ό μ •λ¦¬ν•˜λ €κ³  ν–ˆμœΌλ‚˜ μ‹œκ°„μ΄ μ—†μ–΄μ„œ μ΄μ œμ„œμ•Ό μ“°κ²Œ λ˜μ—ˆλ‹€. 

μˆœμ„œλŠ” μ•„λž˜μ—μ„œ μ„€λͺ…ν•˜λ„λ‘ ν•˜κ² λ‹€. μžλ°”λ₯Ό 처음 μ‚¬μš©ν•΄μ„œ λΆ€μ‘±ν•œ 뢀뢄도 λ§Žμ•˜κ³  μ‹œκ°„λ„ κ½€ κ±Έλ Έλ‹€. 근데 ν™•μ‹€νžˆ 객체지ν–₯ μ–Έμ–΄λ₯Ό μ‚¬μš©ν•˜λ‹ˆ μœ μ§€λ³΄μˆ˜κ°€ μš©μ΄ν•¨μ„ 느꼈고 데이터λ₯Ό 전달할 λ•Œ DTOλ₯Ό μ‚¬μš©ν•˜λŠ” 것이 맀우 νŽΈν•˜λ‹€λŠ” 생각이 λ“€μ—ˆλ‹€. 

 

πŸ“Œ λͺ©μ°¨

  1. 개발 ν™˜κ²½
  2. μš”κ΅¬μ‚¬ν•­ μ •μ˜ 및 λͺ¨λΈλ§
    1. μš”κ΅¬μ‚¬ν•­ μ •μ˜μ„œ
    2. λ©”λ‰΄νŠΈλ¦¬
    3. ERD
    4. μ„œλΉ„μŠ€ ν”Œλ‘œμš° 차트
  3. μ£Όμš” μ½”λ“œ μ„€λͺ…

λͺ©μ°¨λŠ” μ΄λ ‡κ²Œ 이루어져 μžˆλ‹€. μ£Όμš” μ½”λ“œ μ„€λͺ…λ§Œ ν• κΉŒ ν•˜λ‹€κ°€ 전체적인 λ‚΄μš©μ„ λ‹€λ£¨λ©΄μ„œ λ³΅μŠ΅ν•˜λ €κ³  ν•œλ‹€. 

 

 

πŸ“‘  1 . 개발 ν™˜κ²½

IDE : Eclipse

Configuration : Github [ https://github.com/wnstjd9701/shoppingmall ]

Language : Java 17

Library : Lombok , JDBC

DataBase : Oracle

Tool : ERD-Cloud [ ERD섀계 ], EdrawMax [ ν”Œλ‘œμš° 차트 ], GitMind [ 메뉴 트리 ] 

 

 

πŸ“‘  2 - 1 . μš”κ΅¬μ‚¬ν•­ μ •μ˜μ„œ

μš”κ΅¬μ‚¬ν•­ μ •μ˜μ„œ

κ°œλ°œμ— λ“€μ–΄κ°€κΈ° μ „ λ§Œλ“  μš”κ΅¬μ‚¬ν•­ μ •μ˜μ„œμ΄λ‹€. κ΄€λ¦¬μž νŽ˜μ΄μ§€μ™€ μ‚¬μš©μž νŽ˜μ΄μ§€λ‘œ λ‚˜λˆ„μ–΄ κ°„λ‹¨ν•œ κΈ°λŠ₯듀을 μ •μ˜ν•˜μ˜€λ‹€. 

곡톡 κΈ°λŠ₯ 5κ°œμ™€ κ΄€λ¦¬μž 10개, μ‚¬μš©μž 9개둜 κ΅¬μ„±ν•˜μ˜€λ‹€. 

 

 

πŸ“‘  2 - 2 . 메뉴 트리

메뉴 트리

κ΄€λ¦¬μžμ™€ μ‚¬μš©μžμ˜ λ©”λ‰΄νŠΈλ¦¬μ΄λ‹€. κΈ°λŠ₯은 μš”κ΅¬μ‚¬ν•­ μ •μ˜μ„œμ— μžˆλŠ” κ·ΈλŒ€λ‘œ κ΅¬ν˜„ν•˜μ˜€κ³  νŽ˜μ΄μ§€ λ³„λ‘œ μžˆλŠ” κΈ°λŠ₯을 트리 ν˜•νƒœλ‘œ λ§Œλ“€μ—ˆλ‹€. μ‚¬μš©μžκ°€ 보기 쉽고 κ°œλ°œν•  λ•Œλ„ μ–΄λ– ν•œ κΈ°λŠ₯듀이 있고 κΉŠμ΄λŠ” μ–Όλ§ˆμΈμ§€ ν•œ λˆˆμ— λ³Ό 수 μžˆμ–΄μ„œ κ°œλ°œν•˜λŠ”λ° 도움이 많이 λ˜μ—ˆλ‹€. 

 

μ‚¬μš©ν•œ νˆ΄μ€ GitMind 이닀. 

https://gitmind.com/

 

GitMind - AI Powered Mind Map, Flowchart, Whiteboard.

GitMind is a free AI-powered mind mapping & brainstorming app. Create and collaborate on mind maps online in real-time. The easiest way to make project plan, take notes, flowcharts, org charts, UML diagrams and more.

gitmind.com

 

 

πŸ“‘  2 - 3 . ERD

ERD

λ°μ΄ν„°λ² μ΄μŠ€λŠ” Oracle을 μ‚¬μš©ν•˜μ˜€κ³  ν…Œμ΄λΈ” 섀계λ₯Ό μ²˜μŒμ— 잘λͺ»ν•˜μ—¬ 계속 μˆ˜μ •ν•˜κ³  μ΅œμ’…μ μœΌλ‘œ λ§Œλ“  ERD 이닀. 

λͺ¨λ“  ν…Œμ΄λΈ”μ€ idλ₯Ό 가지고 μžˆλ‹€. μ΄ 외에 μ„€λͺ… ν• λ§Œν•œ λ‚΄μš©μ€ μ£Όλ¬Έ ν…Œμ΄λΈ”μ„ λ‚˜λˆˆκ²ƒμ΄λ‹€.

μ‚¬μš©μžκ°€ 주문을 ν•˜κ²Œ 되면 ν•œ λ²ˆμ— μ—¬λŸ¬ μƒν’ˆμ„ 담을 수 μžˆλ‹€. λ”°λΌμ„œ μ£Όλ¬Έ 상세 ν…Œμ΄λΈ”μ„ λ‚˜λˆ„μ§€ μ•ŠμœΌλ©΄ 총 가격, μ£Όμ†Œ, 배솑 μƒνƒœ 등이 μ€‘λ³΅λœλ‹€. 데이터 베이슀 μ •κ·œν™”λ₯Ό 배우면 μ‰½κ²Œ ν•  수 μžˆλ‹€. 사싀 μƒν’ˆ 같은 κ²½μš°μ—λ„ μƒν’ˆμ˜ μ’…λ₯˜κ°€ μ—¬λŸ¬κ°œ μžˆλ‹€λ©΄ λ‚˜λˆ„μ–΄ μ£ΌλŠ”κ²Œ λ§žλ‹€. ν•˜μ§€λ§Œ κ°„λ‹¨ν•˜κ²Œ λ§Œλ“€μ–΄μ„œ μƒν’ˆ μ„ΈλΆ€ ν…Œμ΄λΈ”μ€ λ”°λ‘œ λ‚˜λˆ„μ§€ μ•Šμ•˜λ‹€. 

μ œλŒ€λ‘œ 된 ν”„λ‘œμ νŠΈλ₯Ό ν•˜λ €λ©΄ ν…Œμ΄λΈ” 섀계에 λ§Žμ€ μ‹œκ°„μ„ 쏟고 쀑간에 μˆ˜μ •ν•˜λŠ” 일이 없도둝 ν•΄μ•Όλœλ‹€. κ·Έλž˜μ„œ 이번 ν”„λ‘œμ νŠΈλ₯Ό ν•˜λ©΄μ„œ μ •μ˜μ„œλ₯Ό μ œλŒ€λ‘œ μž‘μ„±ν•˜κ³  이λ₯Ό 기반으둜 ν…Œμ΄λΈ” 섀계λ₯Ό μ™„λ²½ν•˜κ²Œ ν•˜κ³  ν”„λ‘œμ νŠΈλ₯Ό μ‹œμž‘ν•΄μ•Όν•œλ‹€λŠ” 점을 λŠκΌˆλ‹€. κ·Έλž˜μ•Ό μˆ˜μ •ν•˜λŠ”λ° μ‹œκ°„μ„ μ΅œμ†Œν™” ν•  수 μžˆλ‹€. 

 

νˆ΄μ€ ERD-Cloud 와 AqueryTool을 μ‚¬μš©ν•˜μ˜€λ‹€. 

 

ErdCloud

https://www.erdcloud.com/

 

ERDCloud

Draw ERD with your team members. All states are shared in real time. And it's FREE. Database modeling tool.

www.erdcloud.com

 

AqueryTool

https://aquerytool.com/

 

AQueryTool

AQueryTool은 μ›Ή 기반 ERD 툴 + SQL μžλ™ 생성 ν”„λ‘œκ·Έλž¨μž…λ‹ˆλ‹€.

aquerytool.com

 

 

πŸ“‘  2 - 4 . μ„œλΉ„μŠ€ ν”Œλ‘œμš° 차트

μƒν’ˆ 관리 ν”Œλ‘œμš° 차트

λͺ¨λ“  ν”Œλ‘œμš° 차트λ₯Ό μ„€λͺ…ν•˜κΈ°μ—λŠ” λ„ˆλ¬΄ λ§Žμ•„μ„œ λŒ€ν‘œμ μΈ ν”Œλ‘œμš° 차트 ν•˜λ‚˜λ₯Ό μ„€λͺ…ν•˜κ³  μ½”λ“œμ—μ„œ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ μ„€λͺ…ν•˜λ‹€λ³΄λ©΄ μΆ©λΆ„νžˆ 이해가 κ°€λŠ₯ν•  것이닀. 

 

 

πŸ“‘  3 . μ£Όμš” μ½”λ“œ μ„€λͺ…

폴더 ꡬ쑰

ν”„λ‘œμ νŠΈ 폴더 ꡬ쑰이닀. μ‚¬μš©μžμ™€ κ΄€λ¦¬μžλ₯Ό νŒ¨ν‚€μ§€λ‘œ κ΅¬λΆ„ν•˜μ—¬ νŒŒμΌμ„ λ§Œλ“€μ—ˆλ‹€.

 

Main νŒ¨ν‚€μ§€

  • Application Class - Application이 μ‹€ν–‰λ˜μ–΄ Main ν•¨μˆ˜κ°€ μ‘΄μž¬ν•˜λŠ” 클래슀
  • LoginSession Class - λ‘œκ·ΈμΈμ„ μœ μ§€μ‹œν‚€κΈ° μœ„ν•œ 클래슀 
  • SHA256 Class - λΉ„λ°€λ²ˆν˜Έ μ•”ν˜Έν™”λ₯Ό μœ„ν•œ 클래슀

 

Admin νŒ¨ν‚€μ§€

  • MainAdminOrderFunction - λ©”μΈμ—μ„œ ν˜ΈμΆœν•˜λŠ” κ΄€λ¦¬μž μ£Όλ¬Έ 관리 κΈ°λŠ₯의 λΉ„μ¦ˆλ‹ˆμŠ€ 둜직이 μžˆλŠ” 클래슀
  • MainAdminProductFunction - λ©”μΈμ—μ„œ ν˜ΈμΆœν•˜λŠ” κ΄€λ¦¬μž μƒν’ˆ 관리 κΈ°λŠ₯의 λΉ„μ¦ˆλ‹ˆμŠ€ 둜직이 μžˆλŠ” 클래슀

 

User νŒ¨ν‚€μ§€

  • MainUserFunction - λ©”μΈμ—μ„œ ν˜ΈμΆœν•˜λŠ” μ‚¬μš©μž κΈ°λŠ₯의 λΉ„μ¦ˆλ‹ˆμŠ€ 둜직이 μžˆλŠ” 클래슀 

 

Model νŒ¨ν‚€μ§€

  • ShoppingDataSource - 컀λ„₯μ…˜ 풀을 μ‚¬μš©ν•˜κΈ° μœ„ν•΄ μžˆλŠ” 클래슀
  • DTO - 계측간 데이터 전달을 ν•˜κΈ° μœ„ν•œ DTO κ°€ μžˆλŠ” νŒ¨ν‚€μ§€, 
  • DAO - μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ§Œλ“€κ³  κ΅¬ν˜„μ²΄κ°€ μžˆλŠ” νŒ¨ν‚€μ§€

 

κ·Έ μ™Έμ—λŠ” μ‚¬μš©ν•œ λΌμ΄λΈŒλŸ¬λ¦¬μ™€ README.md κ°€ μžˆλ‹€. 

 

 

 

πŸ“Œ 마무리

사싀 처음 ν”„λ‘œμ νŠΈλ₯Ό ν•  λ•Œ SOLID 원칙을 μ§€ν‚€λ©΄μ„œ κ°œλ°œμ„ ν•˜κ³  μ‹Άμ—ˆλ‹€. 그런데 막상 κ°œλ°œν•˜λ‹€λ³΄λ‹ˆ μ΄λ ‡κ²Œ μž‘μ€ ν”„λ‘œμ νŠΈμ—μ„œλŠ” 원칙을 λͺ¨λ‘ 지킀기가 쉽지 μ•Šμ•˜κ³  ν•  수 μžˆλŠ” μ„ μ—μ„œ μ΅œλŒ€ν•œ μ‚¬μš©ν•΄λ³΄μ•˜λ‹€.

이것저것 μ‹œλ„ν•΄ λ³΄λ©΄μ„œ μžλ°”λ₯Ό 1도 λͺ¨λ₯΄λ˜ μ‹€λ ₯에 λΉ„ν•˜λ©΄ κ½€ 적응이 된 것 κ°™λ‹€.

Spring으둜 ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©΄ 훨씬 더 μ‹€λ ₯도 빨리 늘 것이닀. ν”„λ‘ νŠΈλ„ λ‹€μŒλ²ˆμ— μ •λ¦¬ν•˜κ³  λ‹€μŒ ν”„λ‘œμ νŠΈμ—μ„œλŠ” ν’€μŠ€νƒμœΌλ‘œ κ°œλ°œμ„ 진행할 것이닀.