Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hyunsoo730/aptdeal-insights
๐ก ์์ธ ์ง์ญ ๋ถ๋์ฐ ์ ๋ณด ํ๋์ ๋ณด๊ธฐ
https://github.com/hyunsoo730/aptdeal-insights
jpa mybatis querydsl spring-batch spring-boot
Last synced: 4 days ago
JSON representation
๐ก ์์ธ ์ง์ญ ๋ถ๋์ฐ ์ ๋ณด ํ๋์ ๋ณด๊ธฐ
- Host: GitHub
- URL: https://github.com/hyunsoo730/aptdeal-insights
- Owner: HyunSoo730
- Created: 2024-05-24T05:15:05.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2024-08-11T17:29:45.000Z (3 months ago)
- Last Synced: 2024-08-11T19:01:32.962Z (3 months ago)
- Topics: jpa, mybatis, querydsl, spring-batch, spring-boot
- Language: Vue
- Homepage:
- Size: 987 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# HappyHouse ๐
# HappyHouse ๐ - ์์ธ์ ๋ถ๋์ฐ ๋งค๋ฌผ ์ ๋ณด ์ ๊ณต ์๋น์ค
> **์์ธ์์ ๋ถ๋์ฐ ๋งค๋ฌผ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ณ ๋ค์ํ ์๋น์ค๋ฅผ ์ ๊ณตํ์ฌ ์ฌ์ฉ์๋ค์ด ํจ๊ณผ์ ์ผ๋ก ๋งค๋ฌผ์ ๊ฒ์ํ๊ณ ๋น๊ตํ ์ ์๋๋ก ๋์์ฃผ๋ ์๋น์ค์ ๋๋ค.**## ๐ ํ๋ก์ ํธ ์๊ฐ
HappyHouse๋ ์์ธ์์ ๋ถ๋์ฐ ๋งค๋ฌผ ์ ๋ณด๋ฅผ ํ ๊ณณ์์ ํ์ธํ๊ณ ๋น๊ตํ ์ ์๋ ํ๋ซํผ์ ๋๋ค. ์ํํธ ๋งค๋งค ์ค๊ฑฐ๋๊ฐ, ์ ์์ธ ์ค๊ฑฐ๋๊ฐ, ์ฃผ๋ณ ํ๊ตฐ ์ ๋ณด, ์ฃผ๋ณ ๊ตํต ์ ๋ณด, ํต๊ณ ์ฐจํธ ๋ฑ ๋ค์ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ์ฌ ์ฌ์ฉ์๋ค์ด ํจ์จ์ ์ผ๋ก ๋งค๋ฌผ์ ๊ฒ์ํ๊ณ ๋น๊ตํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ๋ํ ์ฌ์ฉ์๋ค ๊ฐ์ ์ ๋ณด ๊ตํ์ ์ํ ์ค์๊ฐ ์ปค๋ฎค๋ํฐ์ AI ์ฑ๋ด ์๋น์ค๋ฅผ ์ ๊ณตํ์ฌ ๋ณด๋ค ํธ๋ฆฌํ ๋งค๋ฌผ ํ์ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
๋ถ๋์ฐ ๋งค๋ฌผ ๊ฒ์์ ๋ณต์กํ๊ณ ์๊ฐ ์๋ชจ์ ์ธ ์์ ์ด ๋ ์ ์์ต๋๋ค. ์ฌ๋ฌ ์น์ฌ์ดํธ๋ฅผ ๋ฐฉ๋ฌธํ์ฌ ์ ๋ณด๋ฅผ ์์งํ๊ณ ๋น๊ตํ๋ ๊ฒ์ ์ฝ์ง ์์ต๋๋ค. HappyHouse๋ ์ด๋ฌํ ๋ถํธํจ์ ํด์ํ๊ณ ์ ์์ธ์์ ๋ถ๋์ฐ ๋งค๋ฌผ ์ ๋ณด๋ฅผ ํตํฉํ์ฌ ์ ๊ณตํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ์ฌ์ฉ์๋ ์ํ๋ ์กฐ๊ฑด์ ์ ๋ ฅํ์ฌ ๋งค๋ฌผ์ ๊ฒ์ํ๊ณ , ๊ด์ฌ ์๋ ๋งค๋ฌผ์ ๋น๊ตํ๋ฉฐ, ์ปค๋ฎค๋ํฐ๋ฅผ ํตํด ๋ค๋ฅธ ์ฌ์ฉ์๋ค๊ณผ ์ ๋ณด๋ฅผ ๊ณต์ ํ ์ ์์ต๋๋ค.
HappyHouse๋ ์ฌ์ฉ์ ์นํ์ ์ธ ์ธํฐํ์ด์ค์ ์ง๊ด์ ์ธ ๊ธฐ๋ฅ์ ํตํด ๋ถ๋์ฐ ๋งค๋ฌผ ๊ฒ์ ๊ณผ์ ์ ๊ฐ์ํํ๊ณ ์ต์ ํํฉ๋๋ค. ๋ํ AI ์ฑ๋ด์ ํ์ฉํ์ฌ ์ฌ์ฉ์์ ์ง๋ฌธ์ ์ฆ๊ฐ์ ์ผ๋ก ์๋ตํ๊ณ ๋ง์ถคํ ์ถ์ฒ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ ๋ณด๋ค ํธ๋ฆฌํ๊ณ ํจ์จ์ ์ผ๋ก ๋งค๋ฌผ์ ํ์ํ๊ณ ์์ฌ ๊ฒฐ์ ์ ๋ด๋ฆด ์ ์์ต๋๋ค.
ํ๋ก์ ํธ๋ฅผ ํตํด ๋ถ๋์ฐ ๋งค๋ฌผ ๊ฒ์์ ์์๋๋ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ ์ค์ด๊ณ , ์ฌ์ฉ์๋ค์๊ฒ ์ ๋ขฐํ ์ ์๋ ์ ๋ณด๋ฅผ ์ ๊ณตํ์ฌ ๋ง์กฑ๋๋ฅผ ๋์ด๋ ๊ฒ์ด ์ ํฌ ํ๋ก์ ํธ HappyHouse์ ๊ถ๊ทน์ ์ธ ๋ชฉํ์ ๋๋ค. ์ถ๊ฐํ๊ณ ์ถ์ ๊ธฐ๋ฅ ๋ฐ ์ฑ๋ฅ ๊ฐ์ ์ ๊ณ์ํด์ ํด ๋๊ฐ ๊ฒ์ ๋๋ค.
## ๐ ํ๋ก์ ํธ๋ฅผ ํตํด ์ป์ ์
๐ **Querydsl ํ์ฉ ์ญ๋ ๊ฐํ**
- ๊ธฐ์กด์๋ `JPA`์ ์ธํฐํ์ด์ค์ Querydsl์ ํจ๊ป ๊ตฌํํ์ฌ ์ฌ์ฉํ์ง๋ง(`Impl` ํํ๋ก Querydsl ์ฌ์ฉ), ์ด๋ฒ ํ๋ก์ ํธ์์๋ `@Repository` ์ด๋ ธํ ์ด์ ๋ง์ผ๋ก ํน์ DB์ ์ ๊ทผํ๋๋ก Querydsl์ ๋ ๋ฆฝ์ ์ผ๋ก ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ์ต๋๋ค. ์ด๋ฅผ ํตํด ์ข ๋ ๊ฐ๊ฒฐํ๊ณ ํจ์จ์ ์ธ ์ฟผ๋ฆฌ ์์ฑ์ด ๊ฐ๋ฅํด์ก์ต๋๋ค.
- Querydsl์ `JPAQueryFactory`๋ฅผ ์ฌ์ฉํ์ฌ ๋์ ์ฟผ๋ฆฌ ์์ฑ, ๋ณต์กํ ์กฐ๊ฑด ์ฒ๋ฆฌ ๋ฑ์ ์ํํ ์ ์๊ฒ ๋์์ต๋๋ค. ํนํ `BooleanBuilder`๋ฅผ ํ์ฉํ์ฌ null-safeํ ๋์ ์ฟผ๋ฆฌ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ก๊ณ , `where()`์ ๋ค์ํ ์กฐ๊ฑด์ ์ถ๊ฐํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ์ฝ๊ฒ ๊ตฌ์ฑํ ์ ์๊ฒ ๋์์ต๋๋ค.๐ **Vue.js๋ฅผ ํ์ฉํ ํ๋ก ํธ์๋ ๊ฐ๋ฐ ๊ฒฝํ**
- ์ด๋ฒ ํ๋ก์ ํธ์์ ์ฒ์์ผ๋ก ํ๋ก ํธ์๋๋ฅผ ๋งก์ Vue.js๋ก ๊ฐ๋ฐ์ ์งํํ๋ฉด์, Vue.js์ ์ฅ์ ๊ณผ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ๊ฐ๋ฐ ๋ฐฉ์์ ๋ํด ์๊ฒ ๋์์ต๋๋ค.
- Vue.js์ ๋ฐ์ํ ์์คํ , ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ, ์ปดํฌ๋ํธ ์ฌ์ฌ์ฉ์ฑ ๋ฑ์ ํ์ฉํ์ฌ ํจ์จ์ ์ด๊ณ ์ ์ง๋ณด์์ฑ ๋์ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์์ต๋๋ค.๐๏ธ **ํ๋ก์ ํธ ์ ๋ฐ์ ์ธ ์ํคํ ์ฒ ์ค๊ณ ๋ฐ ๊ฐ๋ฐ ๋ฆฌ๋ฉ ๊ฒฝํ**
- ํ๋ก์ ํธ์ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋ฆฌ๋ํ๋ฉด์ ํ๋ก์ ํธ ์ ๋ฐ์ ์ธ ์ํคํ ์ฒ ์ค๊ณ๋ฅผ ์ฃผ๋์ ์ผ๋ก ์งํํ์์ต๋๋ค. ๋ชจ๋ํ, ๊ณ์ธตํ ์ํคํ ์ฒ๋ฅผ ์ ์ฉํ์ฌ ํ์ฅ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ด๋ ๋ฐ ์ฃผ๋ ฅํ์์ต๋๋ค.
- RESTful API ์ค๊ณ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง, ๋น์ฆ๋์ค ๋ก์ง ๊ตฌํ ๋ฑ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ํต์ฌ ๋ถ๋ถ์ ๋ด๋นํ๋ฉด์ ๊ฐ๋ฐ ํ์ ์ด๋๋ ๊ฒฝํ์ ์์ ์ ์์์ต๋๋ค.๐ **๋ฐ์ดํฐ ๋๊ธฐํ ๋ฐ ๋ฐฐ์น ์ฒ๋ฆฌ ์๋ํ**
- Spring Batch๋ฅผ ํ์ฉํ์ฌ ๋๋์ ๋งค๋ฌผ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์์งํ๊ณ ๋ถ์ํ๋ ๋ฐฐ์น ์์ ์ ์๋ํํ์์ต๋๋ค.
- ๋ฐฐ์น ์์ ์ ์ค์ผ์ค๋ง, ์ฅ์ ๋์, ๋ชจ๋ํฐ๋ง ๋ฑ์ ๊ฒฝํํ๋ฉด์ ์์ ์ ์ธ ๋ฐ์ดํฐ ๋๊ธฐํ์ ๋ฐฐ์น ์ฒ๋ฆฌ ์ญ๋์ ๊ธฐ๋ฅผ ์ ์์์ต๋๋ค.๐ค **ํ์ ๋ฐ ์ปค๋ฎค๋์ผ์ด์ ๋ฅ๋ ฅ ํฅ์**
- ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ํ์๋ค๊ณผ์ ํจ๊ณผ์ ์ธ ์ปค๋ฎค๋์ผ์ด์ , ์ ๋ฌด ๋ถ๋ด, ์ผ์ ๊ด๋ฆฌ ๋ฑ ํ์ ๋ฅ๋ ฅ์ ํ์ธต ๋ ํฅ์์ํฌ ์ ์์์ต๋๋ค.
- ์ ๊ธฐ์ ์ธ ํ์, ์ฝ๋ ๋ฆฌ๋ทฐ, ๋ฌธ์ํ ๋ฑ์ ํตํด ํ๋ก์ ํธ์ ์งํ ์ํฉ์ ๊ณต์ ํ๊ณ ํจ๊ป ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด๋๊ฐ๋ ๊ฒฝํ์ ์์์ต๋๋ค.์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ํตํด Querydsl ํ์ฉ, Vue.js ํ๋ก ํธ์๋ ๊ฐ๋ฐ, ํ๋ก์ ํธ ์ํคํ ์ฒ ์ค๊ณ ๋ฐ ๊ฐ๋ฐ ๋ฆฌ๋ฉ, ๋ฐ์ดํฐ ๋๊ธฐํ ๋ฐ ๋ฐฐ์น ์ฒ๋ฆฌ ์๋ํ, ํ์ ๋ฐ ์ปค๋ฎค๋์ผ์ด์ ๋ฅ๋ ฅ ๋ฑ ๋ค์ํ ์ธก๋ฉด์์ ์ญ๋์ ๊ฐํํ ์ ์์์ต๋๋ค. ์์ผ๋ก๋ ์ด๋ฌํ ๊ฒฝํ์ ๋ฐํ์ผ๋ก ๋์ฑ ์ฑ์ฅํ๋ ๊ฐ๋ฐ์๊ฐ ๋๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ฒ ์ต๋๋ค.
## ๐ ๏ธ ๊ธฐ์ ์คํ
### Environment
![Java](https://img.shields.io/badge/Java-007396?style=for-the-badge&logo=java&logoColor=white)
![Spring Boot](https://img.shields.io/badge/Spring%20Boot-6DB33F?style=for-the-badge&logo=springboot&logoColor=white)
![MySQL](https://img.shields.io/badge/MySQL-4479A1?style=for-the-badge&logo=mysql&logoColor=white)
![Vue.js](https://img.shields.io/badge/Vue.js-4FC08D?style=for-the-badge&logo=vuedotjs&logoColor=white)### Config
![npm](https://img.shields.io/badge/npm-CB3837?style=for-the-badge&logo=npm&logoColor=white)
![Gradle](https://img.shields.io/badge/Gradle-02303A?style=for-the-badge&logo=gradle&logoColor=white)### Development
![Spring Data JPA](https://img.shields.io/badge/Spring%20Data%20JPA-6DB33F?style=for-the-badge&logo=spring&logoColor=white)
![QueryDSL](https://img.shields.io/badge/QueryDSL-3399FF?style=for-the-badge&logo=QueryDSL&logoColor=white)
![MyBatis](https://img.shields.io/badge/MyBatis-000000?style=for-the-badge&logo=mybatis&logoColor=white)
![Spring Batch](https://img.shields.io/badge/Spring%20Batch-6DB33F?style=for-the-badge&logo=spring&logoColor=white)
![Chart.js](https://img.shields.io/badge/Chart.js-FF6384?style=for-the-badge&logo=chartdotjs&logoColor=white)
![Tailwind CSS](https://img.shields.io/badge/Tailwind%20CSS-06B6D4?style=for-the-badge&logo=tailwindcss&logoColor=white)### Database
![AWS RDS](https://img.shields.io/badge/AWS%20RDS-527FFF?style=for-the-badge&logo=amazonrds&logoColor=white)### DevOps
![AWS EC2](https://img.shields.io/badge/AWS%20EC2-232F3E?style=for-the-badge&logo=amazonec2&logoColor=white)### Communication
![Notion](https://img.shields.io/badge/Notion-000000?style=for-the-badge&logo=notion&logoColor=white)
![Mattermost](https://img.shields.io/badge/Mattermost-0058CC?style=for-the-badge&logo=mattermost&logoColor=white)## ๐ฅ ํ ์๊ฐ
### ํ ๊ตฌ์ฑ
| ์กฐํ์ | ๊ณ ํ๊ฐ |
| :------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------: |
| | |
| [@hyunsoo](https://github.com/HyunSoo730) | [@hangang](https://github.com/hangang) |
| ๋ฐฑ์๋ ๊ฐ๋ฐ ๋ฆฌ๋ & ํ๋ก ํธ์๋ ๊ฐ๋ฐ | ํ๋ก ํธ์๋ ๊ฐ๋ฐ ๋ฆฌ๋ & ๋ฐฑ์๋ ๊ฐ๋ฐ |## ๐โโ๏ธ ํ์๋ณ ์ญํ ๋ฐ ๊ธฐ์ฌ๋
| ์ด๋ฆ | ์ญํ ๋ฐ ๊ธฐ์ฌ๋ |
|------|--------------|
| ๐ช ์กฐํ์ | - ๐ **๋ฐฑ์๋ ๊ฐ๋ฐ ๋ฆฌ๋**๋ก์ ํ๋ก์ ํธ ์ํคํ ์ฒ ์ค๊ณ ๋ฐ ๊ฐ๋ฐ ์ด๊ด
- ๐จ **Spring Boot**๋ฅผ ํ์ฉํ **RESTful API ๊ตฌํ ๋ฐ ๋ฌธ์ํ**
- โ๏ธ **Spring Batch**๋ฅผ ํ์ฉํ **๋ฐ์ดํฐ ์์ง ๋ฐ ๋ถ์ ๋ฐฐ์น ์์ ๊ตฌํ**
- ๐พ **๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฑ๋ฅ ์ต์ ํ** ๋ฐ **์ธ๋ฑ์ฑ ์์ ์ํ**
- ๐ **๋ฐฐํฌ ๋ฐ ์ด์ ํ๊ฒฝ ๊ตฌ์ถ ๋ฐ ๊ด๋ฆฌ**
- ๐จ **Vue.js**๋ฅผ ํ์ฉํ **ํ๋ก ํธ์๋ ๊ฐ๋ฐ** ๋ฐ **UI/UX ๋์์ธ ์ฐธ์ฌ**
- ๐ค **ํ ๋ด ์ปค๋ฎค๋์ผ์ด์ ๋ฐ ํ์ ์ฃผ๋**ํ๋ฉฐ **ํ๋ก์ ํธ ์ผ์ ๊ด๋ฆฌ**|
| ๐ช ๊ณ ํ๊ฐ | - ๐จ **Vue.js**๋ฅผ ํ์ฉํ **ํ๋ก ํธ์๋ ๊ฐ๋ฐ ๋ฆฌ๋** ๋ฐ **UI/UX ๋์์ธ ์ด๊ด**
- ๐ **Chart.js**๋ฅผ ํ์ฉํ **๋ฐ์ดํฐ ์๊ฐํ ๋ฐ ํต๊ณ ์ฐจํธ ๊ตฌํ**
- ๐ฟ **Tailwind CSS**๋ฅผ ํ์ฉํ **๋ฐ์ํ ๋์์ธ ๋ฐ ์คํ์ผ๋ง**
- ๐ค **AI ์ฑ๋ด ์๋น์ค ์ฐ๋** ๋ฐ **์ฌ์ฉ์ ์ํธ์์ฉ ๊ฐ๋ฐ**
- ๐งช **ํ๋ก ํธ์๋ ํ ์คํธ ๋ฐ ์ฑ๋ฅ ์ต์ ํ ์์ ์ํ**
- ๐ **Spring Boot**๋ฅผ ํ์ฉํ **๋ฐฑ์๋ ๊ฐ๋ฐ ์ฐธ์ฌ** ๋ฐ **RESTful API ๊ตฌํ**
- ๐ **ํ๋ก์ ํธ ๋ฌธ์ํ** ๋ฐ **์ฌ์ฉ์ ๊ฐ์ด๋ ์์ฑ ๋ด๋น**|## ๐ ERD (Entity-Relationship Diagram)
![ERD](https://i.postimg.cc/sghZhbVD/ERD.png)ํ๋ก์ ํธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์์ ๊ฐ์ ERD๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ค๊ณ๋์์ต๋๋ค.
- `apt_rent_sale` ํ ์ด๋ธ: ์ํํธ ์ ์์ธ ๋ฐ ๋งค๋งค ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ํ ์ด๋ธ์ ๋๋ค. ์ํํธ ์ด๋ฆ, ์ฃผ์, ๊ฑฐ๋ ์ ํ(์ ์ธ/์์ธ/๋งค๋งค), ๊ฐ๊ฒฉ, ๋ฉด์ ๋ฑ์ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
- `agent_review` ํ ์ด๋ธ: ๊ณต์ธ์ค๊ฐ์ฌ์ ๋ํ ์ฌ์ฉ์ ๋ฆฌ๋ทฐ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ํ ์ด๋ธ์ ๋๋ค. ๋ฆฌ๋ทฐ ๋ด์ฉ, ํ์ , ์์ฑ์, ์์ฑ์ผ ๋ฑ์ ์ ๋ณด๋ฅผ ํฌํจํฉ๋๋ค.
- `area` ํ ์ด๋ธ: ์ง์ญ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ํ ์ด๋ธ์ ๋๋ค. ์ง์ญ ์ด๋ฆ, ๊ตฌ, ๋ ๋ฑ์ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
- `apt_review` ํ ์ด๋ธ: ์ํํธ์ ๋ํ ์ฌ์ฉ์ ๋ฆฌ๋ทฐ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ํ ์ด๋ธ์ ๋๋ค. ๋ฆฌ๋ทฐ ๋ด์ฉ, ํ์ , ์์ฑ์, ์์ฑ์ผ ๋ฑ์ ์ ๋ณด๋ฅผ ํฌํจํฉ๋๋ค.
- `like_area` ํ ์ด๋ธ: ์ฌ์ฉ์๊ฐ ๊ด์ฌ ์๋ ์ง์ญ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ํ ์ด๋ธ์ ๋๋ค. ์ฌ์ฉ์ ID์ ์ง์ญ ID๋ฅผ ๋งคํํ์ฌ ๊ด๋ฆฌํฉ๋๋ค.
- `subway_station` ํ ์ด๋ธ: ์งํ์ฒ ์ญ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ํ ์ด๋ธ์ ๋๋ค. ์ญ ์ด๋ฆ, ํธ์ , ์์น ๋ฑ์ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
- `dongcode` ํ ์ด๋ธ: ํ์ ๋ ์ฝ๋ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ํ ์ด๋ธ์ ๋๋ค. ๋ ์ด๋ฆ, ์ฝ๋ ๋ฑ์ ์ ๋ณด๋ฅผ ํฌํจํฉ๋๋ค.
- `chat_rooms` ํ ์ด๋ธ: ์ฑํ ๋ฐฉ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ํ ์ด๋ธ์ ๋๋ค. ์ฑํ ๋ฐฉ ์ด๋ฆ, ์์ฑ์, ์์ฑ์ผ ๋ฑ์ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
- `apt_deal_info` ํ ์ด๋ธ: ์ํํธ ๊ฑฐ๋ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ํ ์ด๋ธ์ ๋๋ค. ์ํํธ ID, ๊ฑฐ๋ ์ผ์, ๊ฑฐ๋ ๊ธ์ก ๋ฑ์ ์์ธ ์ ๋ณด๋ฅผ ํฌํจํฉ๋๋ค.
- `apt_hsd_info` ํ ์ด๋ธ: ์ํํธ ์ธ๋ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ํ ์ด๋ธ์ ๋๋ค. ์ธ๋ ์, ๋๋ฐฉ ๋ฐฉ์, ๊ฑด์ถ ์ฐ๋ ๋ฑ์ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.ERD์์ ๋ณผ ์ ์๋ฏ์ด, ์ํํธ ๋งค๋ฌผ ์ ๋ณด๋ฅผ ์ค์ฌ์ผ๋ก ์ฌ์ฉ์ ๋ฆฌ๋ทฐ, ๊ด์ฌ ์ง์ญ, ์งํ์ฒ ์ญ, ํ์ ๋ ๋ฑ ๋ค์ํ ๊ด๋ จ ์ ๋ณด๊ฐ ํ ์ด๋ธ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ํํธ ๋งค๋ฌผ ๊ฒ์, ์ฌ์ฉ์ ๋ฆฌ๋ทฐ ๊ด๋ฆฌ, ๊ด์ฌ ์ง์ญ ์ค์ , ์ฃผ๋ณ ์ ๋ณด ์ ๊ณต ๋ฑ์ ๊ธฐ๋ฅ์ ํจ๊ณผ์ ์ผ๋ก ์ง์ํ ์ ์๋ ๊ตฌ์กฐ๋ก ๋์ด ์์ต๋๋ค.
๋ํ `apt_deal_info`์ `apt_hsd_info` ํ ์ด๋ธ์ ํตํด ์ํํธ ๊ฑฐ๋ ์ ๋ณด์ ์ธ๋ ์ ๋ณด๋ฅผ ๋ณ๋๋ก ๊ด๋ฆฌํจ์ผ๋ก์จ ์์ธํ ๋งค๋ฌผ ์ ๋ณด๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
## โ๏ธ ์ฃผ์ ๊ธฐ๋ฅ
### ๋งค๋ฌผ ์ ๋ณด ๊ฒ์
- ์ง์ญ๊ตฌ๋ณ, ์ํํธ๋ณ๋ก ๋งค๋ฌผ ์ ๋ณด๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค.
- ๋งค๋งค ์ค๊ฑฐ๋๊ฐ, ์ ์์ธ ์ค๊ฑฐ๋๊ฐ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
- ๊ด์ฌ ์๋ ๋งค๋ฌผ์ ์ฐํ๊ณ ๋น๊ตํ ์ ์์ต๋๋ค.### ํ๊ตฐ ๋ฐ ๊ตํต ์ ๋ณด ์ ๊ณต
- ์ ํํ ์ํํธ ์ฃผ๋ณ์ ์ด๋ฑํ๊ต, ์คํ๊ต, ๊ณ ๋ฑํ๊ต ํ๊ตฐ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ํ๋ฒ์ฌ์ธ ์๊ณ ๋ฆฌ์ฆ์ ํ์ฉํ์ฌ ํด๋น ์ํํธ๋ก๋ถํฐ ๊ฐ์ฅ ๊ฐ๊น์ด ์งํ์ฒ ์ญ 4๊ณณ์ ์กฐํํ๊ณ , ๊ฐ ์ญ๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ ๊ณตํฉ๋๋ค.### ํต๊ณ ์ฐจํธ ์ ๊ณต
- ์ง์ญ๊ตฌ๋ณ, ์ํํธ๋ณ ๋งค๋ฌผ ๊ฐ๊ฒฉ ์ถ์ด๋ฅผ ์ฐจํธ๋ก ์๊ฐํํ์ฌ ํ๋์ ํ์ ํ ์ ์์ต๋๋ค.
- ๋งค๋ฌผ์ ํ์๋ณ ๊ฐ๊ฒฉ ๋น๊ต ์ฐจํธ๋ฅผ ์ ๊ณตํ์ฌ ์์ฐ์ ๋ง๋ ์ ์ ํ ํ์๋ฅผ ์ ํํ ์ ์๋๋ก ๋์์ค๋๋ค.
- ํด๋น ์ง์ญ์ ํ๊ท ๋งค๋งค๊ฐ, ์ ์ธ๊ฐ ๋ฑ์ ์ฐจํธ๋ก ์ ๊ณตํ์ฌ ์์ธ ํ์ ์ ์ฉ์ดํฉ๋๋ค.### ์ปค๋ฎค๋ํฐ ๋ฐ AI ์ฑ๋ด
- ์ฌ์ฉ์๋ค ๊ฐ์ ์ ๋ณด ๊ตํ์ ์ํ ์ค์๊ฐ ์ปค๋ฎค๋ํฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ํด๋น ์ํํธ๋ ์ง์ญ์ ๋ํ ์์ํ ํ๊ธฐ์ ์ ๋ณด๋ฅผ ๊ณต์ ํ ์ ์์ต๋๋ค.
- AI ์ฑ๋ด์ ํตํด ์ฌ์ฉ์์ ์ง๋ฌธ์ ์ฆ๊ฐ์ ์ผ๋ก ๋ต๋ณํ๊ณ , ๋ง์ถคํ ๋งค๋ฌผ ์ถ์ฒ์ ์ ๊ณตํฉ๋๋ค.### ์ค์๊ฐ ์ฑํ ๊ธฐ๋ฅ
- ๊ด์ฌ ๋งค๋ฌผ์ ๋ํด ๊ณต์ธ์ค๊ฐ์ฌ์ ์ค์๊ฐ ์ฑํ ์ ํ ์ ์์ต๋๋ค.
- ๋งค๋ฌผ ๊ด๋ จ ๋ฌธ์์ฌํญ์ด๋ ์ถ๊ฐ ์ ๋ณด ์์ฒญ ๋ฑ์ ์ฑํ ์ ํตํด ๋น ๋ฅด๊ฒ ์ํตํ ์ ์์ต๋๋ค.### ๋งค๋ฌผ ๋ฑ๋ก ๋ฐ ๊ด๋ฆฌ
- ๊ณต์ธ์ค๊ฐ์ฌ๋ ๊ฐํธํ๊ฒ ๋งค๋ฌผ์ ๋ฑ๋กํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ๋ฑ๋ก๋ ๋งค๋ฌผ์ ์ ๋ณด๋ฅผ ์์ ํ๊ณ , ๊ฑฐ๋ ์๋ฃ๋ ๋งค๋ฌผ์ ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.## ๐บ ํ๋ฉด ๊ตฌ์ฑ
| ๋ฉ์ธ ํ์ด์ง | ๋งค๋ฌผ ๊ฒ์ ํ๋ฉด |
| :-------------------------------------------: | :-------------------------------------------: |
| | |
| ๋ฉ์ธ ํ์ด์ง์์๋ ์๋น์ค์ ์ฃผ์ ๊ธฐ๋ฅ๊ณผ ์ต์ ๋งค๋ฌผ ์ ๋ณด๋ฅผ ํ๋์ ํ์ธํ ์ ์์ต๋๋ค. ๋งค๋ฌผ ๊ฒ์, ์ปค๋ฎค๋ํฐ, ๊ด์ฌ ์ง์ญ ์ค์ ๋ฑ์ ๊ธฐ๋ฅ์ ๋ฐ๋ก ์ด์ฉํ ์ ์๋ UI๋ฅผ ์ ๊ณตํฉ๋๋ค. | ๋งค๋ฌผ ๊ฒ์ ํ๋ฉด์์๋ ๋ค์ํ ์กฐ๊ฑด์ ์ค์ ํ์ฌ ์ํ๋ ๋งค๋ฌผ์ ๊ฒ์ํ ์ ์์ต๋๋ค. ์ง์ญ, ๋งค๋งค/์ ์์ธ, ๊ฐ๊ฒฉ, ๋ฉด์ ๋ฑ์ ์กฐ๊ฑด์ ์ ๋ ฅํ๊ณ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. || ๋งค๋ฌผ ์์ธ ์ ๋ณด | ๋งค๋ฌผ ๋ฑ๋ก |
| :-------------------------------------------: | :-------------------------------------------: |
| | |
| ๋งค๋ฌผ ์์ธ ์ ๋ณด ํ๋ฉด์์๋ ์ ํํ ๋งค๋ฌผ์ ์์ธํ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ๋งค๋ฌผ์ ์ฌ์ง, ๊ฐ๊ฒฉ, ๋ฉด์ , ์์น, ์ต์ ๋ฑ์ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ฉฐ, ํด๋น ๋งค๋ฌผ์ ๋ํ ์ฌ์ฉ์ ๋ฆฌ๋ทฐ์ ์ง๋ฌธ/๋ต๋ณ์ ๋ณผ ์ ์์ต๋๋ค. | ๋งค๋ฌผ ๋ฑ๋ก ํ๋ฉด์์๋ ๊ณต์ธ์ค๊ฐ์ฌ๊ฐ ์๋ก์ด ๋งค๋ฌผ์ ๋ฑ๋กํ ์ ์์ต๋๋ค. ๋งค๋ฌผ์ ๊ธฐ๋ณธ ์ ๋ณด, ์ฌ์ง, ์์ธ ์ค๋ช ๋ฑ์ ์ ๋ ฅํ๊ณ ๋งค๋ฌผ์ ๊ฒ์ํ ์ ์์ต๋๋ค. || ์ปค๋ฎค๋ํฐ ๋ฐ AI ์ฑ๋ด | ์ฑํ ๋ฐฉ ํ๋ฉด |
| :-------------------------------------------: | :-------------------------------------------: |
| | |
| ์ปค๋ฎค๋ํฐ ๋ฐ AI ์ฑ๋ด ํ๋ฉด์์๋ ์ฌ์ฉ์๋ค ๊ฐ์ ์ ๋ณด ๊ณต์ ์ ์ํต์ด ์ด๋ฃจ์ด์ง๋๋ค. ๋งค๋ฌผ ๊ด๋ จ ์ง๋ฌธ๊ณผ ๋ต๋ณ, ์ง์ญ ์ ๋ณด ๋ฑ์ ๊ฒ์ํ ํํ๋ก ํ์ธํ ์ ์์ต๋๋ค. ๋ํ AI ์ฑ๋ด์ ํตํด ๋ถ๋์ฐ ๊ด๋ จ ์ง๋ฌธ์ ๋ํ ์๋ ์๋ต์ ๋ฐ์ ์ ์์ต๋๋ค. | ์ฑํ ๋ฐฉ ํ๋ฉด์์๋ ์ฌ์ฉ์๋ค ๊ฐ์ ์ค์๊ฐ ์ฑํ ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋งค๋ฌผ ๋ฌธ์, ๊ฑฐ๋ ์กฐ๊ฑด ํ์ ๋ฑ ๊ฐ์ธ ๊ฐ ์ปค๋ฎค๋์ผ์ด์ ์ ์ํ ์ฑํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. || ๋ง์ด ํ์ด์ง |
| :-------------------------------------------: |
| |
| ๋ง์ด ํ์ด์ง์์๋ ์ฌ์ฉ์์ ๊ฐ์ธ ์ ๋ณด ๊ด๋ฆฌ, ๊ด์ฌ ๋งค๋ฌผ ๋ชฉ๋ก, ๋ฌธ์ ๋ด์ญ ๋ฑ์ ํ์ธํ ์ ์์ต๋๋ค. ์ฌ์ฉ์๋ ํ๋กํ ์ ๋ณด๋ฅผ ์์ ํ๊ณ , ๊ด์ฌ ๋งค๋ฌผ์ ์ถ๊ฐ/์ญ์ ํ ์ ์์ผ๋ฉฐ, ์์ ์ด ์์ฑํ ๋ฌธ์ ๋ด์ญ์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. |## ๐๏ธ ์ํคํ ์ฒ
### ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ```plaintext
root
โโโ backend
โ โโโ Dockerfile
โ โโโ dao.iml
โ โโโ mvnw
โ โโโ mvnw.cmd
โ โโโ pom.xml
โ โโโ src
โ โโโ main
โ โ โโโ java
โ โ โ โโโ com
โ โ โ โโโ likelion
โ โ โ โโโ dao
โ โ โ โโโ DaoApplication.java
โ โ โ โโโ config
โ โ โ โ โโโ BatchConfig.java
โ โ โ โ โโโ OpenApiConfig.java
โ โ โ โ โโโ WebMvcConfig.java
โ โ โ โโโ controller
โ โ โ โ โโโ JobController.java
โ โ โ โ โโโ RegionController.java
โ โ โ โ โโโ UserController.java
โ โ โ โโโ dto
โ โ โ โ โโโ JobDto.java
โ โ โ โ โโโ RegionDto.java
โ โ โ โ โโโ UserDto.java
โ โ โ โโโ entity
โ โ โ โ โโโ Job.java
โ โ โ โ โโโ Region.java
โ โ โ โ โโโ User.java
โ โ โ โโโ repository
โ โ โ โ โโโ JobRepository.java
โ โ โ โ โโโ RegionRepository.java
โ โ โ โ โโโ UserRepository.java
โ โ โ โโโ service
โ โ โ โโโ JobService.java
โ โ โ โโโ KakaoAlarmService.java
โ โ โ โโโ RegionService.java
โ โ โ โโโ UserService.java
โ โ โโโ resources
โ โ โโโ application.properties
โ โ โโโ application-prod.properties
โ โโโ test
โ โโโ java
โ โโโ com
โ โโโ likelion
โ โโโ dao
โ โโโ DaoApplicationTests.java
โโโ frontend
โ โโโ README.md
โ โโโ node_modules
โ โโโ package-lock.json
โ โโโ package.json
โ โโโ public
โ โ โโโ favicon.ico
โ โ โโโ index.html
โ โ โโโ logo192.png
โ โ โโโ logo512.png
โ โ โโโ manifest.json
โ โ โโโ robots.txt
โ โโโ src
โ โโโ App.css
โ โโโ App.js
โ โโโ App.test.js
โ โโโ components
โ โ โโโ Footer.js
โ โ โโโ Header.js
โ โ โโโ JobDetail.js
โ โ โโโ JobList.js
โ โ โโโ KakaoAlarmModal.js
โ โ โโโ MyPage.js
โ โ โโโ RegionSelect.js
โ โโโ index.css
โ โโโ index.js
โ โโโ logo.svg
โ โโโ pages
โ โ โโโ AlarmPage.js
โ โ โโโ JobDetailPage.js
โ โ โโโ JobListPage.js
โ โ โโโ MainPage.js
โ โ โโโ MyPage.js
โ โโโ reportWebVitals.js
โ โโโ services
โ โ โโโ JobService.js
โ โ โโโ KakaoAlarmService.js
โ โ โโโ RegionService.js
โ โ โโโ UserService.js
โ โโโ setupTests.js
โโโ README.md
```## ๐ ํ๋ก์ ํธ ๊ฒฐ๊ณผ ๋ฐ ์ฑ๊ณผ
- ๐๏ธ ์์ธ์์ ๋ฐฉ๋ํ ๋ถ๋์ฐ ๋งค๋ฌผ ์ ๋ณด๋ฅผ ํ ๊ณณ์์ ์ ๊ณตํ์ฌ ์ฌ์ฉ์๋ค์ ๋งค๋ฌผ ๊ฒ์ ๊ฒฝํ์ ๊ฐ์ ํ์์ต๋๋ค.
- ๐ ํต๊ณ ์ฐจํธ์ ๋น๊ต ๊ธฐ๋ฅ์ ํตํด ์ฌ์ฉ์๋ค์ด ํจ๊ณผ์ ์ผ๋ก ๋งค๋ฌผ์ ๋ถ์ํ๊ณ ์์ฌ ๊ฒฐ์ ์ ๋ด๋ฆด ์ ์๋๋ก ์ง์ํ์์ต๋๋ค.
- ๐ ์ฃผ๋ณ ํ๊ตฐ ๋ฐ ๊ตํต ์ ๋ณด๋ฅผ ์ ๊ณตํ์ฌ ์ฌ์ฉ์๋ค์ด ๋งค๋ฌผ ์ ํ ์ ๊ณ ๋ คํด์ผ ํ ์์๋ฅผ ํ์ ํ ์ ์๊ฒ ํ์์ต๋๋ค.
- ๐ฌ ์ค์๊ฐ ์ปค๋ฎค๋ํฐ๋ฅผ ํตํด ์ฌ์ฉ์๋ค ๊ฐ์ ์ ๋ณด ๊ณต์ ์ ์ํต์ ํ์ฑํํ์์ต๋๋ค.
- ๐ค AI ์ฑ๋ด์ ๋์ ํ์ฌ ์ฌ์ฉ์๋ค์ ์ง๋ฌธ์ ์ฆ๊ฐ์ ์ผ๋ก ์๋ตํ๊ณ ๋ง์ถคํ ์ถ์ฒ์ ์ ๊ณตํ์ฌ ์ฌ์ฉ์ ๋ง์กฑ๋๋ฅผ ๋์์ต๋๋ค.
- โฐ Spring Batch๋ฅผ ํ์ฉํด ๋๋์ ๋งค๋ฌผ ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ณ ๋ถ์ํ๋ ๋ฐฐ์น ์์ ์ ์๋ํํ์ฌ(๋ฐฐ์น ํ๋ก์ธ์ฑ ์๋ํ ๊ตฌ์ถ) ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํจ์จ์ฑ์ ํฅ์์์ผฐ์ต๋๋ค.
- ๐๏ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ฑ๊ณผ ์ฟผ๋ฆฌ ์ต์ ํ๋ฅผ ํตํด ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ ์ฑ๋ฅ์ ๊ฐ์ ํ์์ต๋๋ค.
- ๐ AWS EC2๋ฅผ ํ์ฉํ์ฌ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ์๋น์ค๋ฅผ ๋ฐฐํฌํ๊ณ ์ด์ํจ์ผ๋ก์จ ํ์ฅ์ฑ๊ณผ ๊ฐ์ฉ์ฑ์ ํ๋ณดํ์์ต๋๋ค.## ๐ง ๊ฐ์ ์ฌํญ ๋ฐ ์ถํ ๊ณํ
- ๐ ์ฌ์ฉ์๋ค์ ํผ๋๋ฐฑ์ ์ ๊ทน ์๋ ดํ์ฌ ์๋น์ค ์ฌ์ฉ์ฑ๊ณผ ํธ์์ฑ์ ์ง์์ ์ผ๋ก ๊ฐ์ ํด ๋๊ฐ ์์ ์ ๋๋ค.
- ์) ๋งค๋ฌผ ํํฐ๋ง ์ต์ ๋ค์ํ, ์ฌ์ฉ์ ๋ง์ถคํ ์ถ์ฒ ์๊ณ ๋ฆฌ์ฆ ๊ณ ๋ํ(์ปจํ ์ธ ๊ธฐ๋ฐ ์ถ์ฒ ์๊ณ ๋ฆฌ์ฆ ์๊ฐ ์ค) ๋ฑ
- ๐ ๋ ๋ง์ ์ง์ญ์ผ๋ก ์๋น์ค ํ๋๋ฅผ ๊ณ ๋ คํ๊ณ ์์ต๋๋ค. ์์ธ์ ์ธ ์๋๊ถ ๋ฐ ์ฃผ์ ๋์๋ก ๋งค๋ฌผ ์ ๋ณด ์ ๊ณต ๋ฒ์๋ฅผ ๋ํ ๊ณํ์ ๋๋ค.
- ๐ ์๋น์ค ๋ชจ๋ํฐ๋ง ๋ฐ ๋ก๊น ์ฒด๊ณ๋ฅผ ๊ฐํํ์ฌ ์ฌ์ฉ์ ํ๋ ๋ถ์๊ณผ ์๋น์ค ๊ฐ์ ์ ํ์ฉํ ์์ ์ ๋๋ค.
- ๐ ์ฆ๊ฐํ๋ ํธ๋ํฝ๊ณผ ๋ฐ์ดํฐ ๋ณผ๋ฅจ์ ๋์ํ๊ธฐ ์ํด ์์คํ ์ํคํ ์ฒ ์ต์ ํ์ ํ์ฅ์ฑ ํฅ์์ ์ฃผ๋ ฅํ ๊ณํ์ ๋๋ค.## ๐จ ํธ๋ฌ๋ธ์ํ
### ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ ์ฑ๋ฅ ์ ํ
- ์ฆ์: ๋งค๋ฌผ ๋ฐ์ดํฐ ์์ง ๋ฐ ๋ถ์ ๋ฐฐ์น ์์ ์ํ ์ ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ก ์ธํด ์ฑ๋ฅ ์ ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์์ต๋๋ค.
- ์์ธ: ๋ฐ์ดํฐ ๋ณผ๋ฅจ ์ฆ๊ฐ์ ๋ฐ๋ฅธ ๋ฐฐ์น ์์ ์ฒ๋ฆฌ ์๊ฐ ์ฆ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ ์ฑ๋ฅ ์ ํ๊ฐ ์ฃผ๋ ์์ธ์ด์์ต๋๋ค.
- ํด๊ฒฐ: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ฑ๊ณผ ์ฟผ๋ฆฌ ์ต์ ํ๋ฅผ ํตํด ๋ฐ์ดํฐ ์กฐํ ์๋๋ฅผ ๊ฐ์ ํ์์ต๋๋ค. ๋ํ ๋ฐฐ์น ์์ ์ ์ฒญํฌ ์ฌ์ด์ฆ๋ฅผ ์กฐ์ ํ์ฌ ์ฒ๋ฆฌ ์๋๋ฅผ ํฅ์์์ผฐ์ต๋๋ค.### ๋ณต์กํ ์ฟผ๋ฆฌ๋ก ์ธํ ์ฑ๋ฅ ์ ํ
- ์ฆ์: ๋งค๋ฌผ ๊ฒ์ ์ ๋ณต์กํ ์กฐ๊ฑด์ ํฌํจํ ์ฟผ๋ฆฌ๋ก ์ธํด ์๋ต ์๋๊ฐ ์ ํ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์์ต๋๋ค. ํน์ ๊ฒ์ ์กฐ๊ฑด์์ ์ฟผ๋ฆฌ ์คํ ์๊ฐ์ด 1์ด ์ด์ ์์๋๋ ๊ฒฝ์ฐ๊ฐ ๊ด์ธก๋์์ต๋๋ค.
- ์์ธ: ๋ณต์กํ ์กฐ์ธ๊ณผ ํํฐ ์กฐ๊ฑด, ์ธ๋ฑ์ค ๋ฏธ์ฌ์ฉ ๋ฑ์ผ๋ก ์ธํด ์ฟผ๋ฆฌ ์คํ ๊ณํ์ด ๋นํจ์จ์ ์ผ๋ก ์๋ฆฝ๋์์ต๋๋ค.
- ํด๊ฒฐ: ์ฟผ๋ฆฌ ๋ถ์์ ํตํด ๋ณ๋ชฉ ์ง์ ์ ์๋ณํ๊ณ , ์ธ๋ฑ์ค ์์ฑ ๋ฐ ์ฟผ๋ฆฌ ์กฐ๊ฑด ์ต์ ํ๋ฅผ ์งํํ์์ต๋๋ค. ๋ถํ์ํ ์กฐ์ธ์ ์ ๊ฑฐํ๊ณ , ํํฐ ์กฐ๊ฑด์ ๋จ์ํํ์ฌ ์ฟผ๋ฆฌ ์คํ ์๋๋ฅผ ๊ฐ์ ํ์์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ ํ๊ท ์ฟผ๋ฆฌ ์คํ ์๊ฐ์ด 140ms์์ 52ms๋ก ์ฝ 63% ๊ฐ์ํ์์ต๋๋ค.### JPA N+1 ๋ฌธ์ ๋ก ์ธํ ์ฑ๋ฅ ์ ํ
- ์ฆ์: ๋งค๋ฌผ ์์ธ ์ ๋ณด ์กฐํ ์ ์ฐ๊ด๋ ์ํฐํฐ๋ฅผ ๋ก๋ฉํ๋ ๊ณผ์ ์์ N+1 ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ์ฟผ๋ฆฌ ์คํ ํ์๊ฐ ๊ณผ๋ํ๊ฒ ์ฆ๊ฐํ์์ต๋๋ค.
- ์์ธ: JPA์ ์ง์ฐ ๋ก๋ฉ(Lazy Loading) ์ ๋ต์ ์ฌ์ฉํ๋ฉด์ ์ฐ๊ด๋ ์ํฐํฐ๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ๋ก๋ฉํ๋ ๊ณผ์ ์์ N+1 ๋ฌธ์ ๊ฐ ๋ฐ์ํ์์ต๋๋ค.
- ํด๊ฒฐ: ํ์น ์กฐ์ธ(Fetch Join)์ ํ์ฉํ์ฌ ์ฐ๊ด๋ ์ํฐํฐ๋ฅผ ํ ๋ฒ์ ๋ก๋ฉํ๋๋ก ์ต์ ํํ์์ต๋๋ค. JPQL ์ฟผ๋ฆฌ์ ํ์น ์กฐ์ธ์ ๋ช ์ํ์ฌ ํ์ํ ์ํฐํฐ๋ฅผ ์ฆ์ ๋ก๋ฉํ๋๋ก ์กฐ์ ํ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฟผ๋ฆฌ ์คํ ํ์๋ฅผ ๋ํญ ๊ฐ์์ํค๊ณ ์ฑ๋ฅ์ ๊ฐ์ ํ ์ ์์์ต๋๋ค.## ๐ฅ๏ธ ํ๋ก์ ํธ ์์ฐ ์์
### ์๋ ์ฌ์ง ํด๋ฆญํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๋ค์ํ ๊ธฐ์ ์ ์ฑ๋ฆฐ์ง๋ฅผ ๊ฒฝํํ์ง๋ง, ํ์๋ค๊ณผ์ ํ์ ๊ณผ ๋ ธ๋ ฅ ๋ฐ ๋๊ธฐ๋ฅผ ๋ฐํ์ผ๋ก ์ฑ๊ณต์ ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์์ํ ์ ์์์ต๋๋ค. ์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ํตํด ํ์ ์ ์ค์์ฑ๊ณผ ๋ฌธ์ ์ ๊ทผ ๋ฐฉ์์ ์๋ก์ด ์ ๊ทผ๋ฒ์ ๋ฐฐ์ ๊ณ , ์ด๋ฅผ ํตํด ์ ๊ฐ ๊ฐ์ง ๊ฐ๋ฐ ์ญ๋์ ํ์ธต ๋ ๋ฐ์ ์ํฌ ์ ์์์ต๋๋ค. ์์ผ๋ก๋ ์ด๋ฌํ ๊ฒฝํ์ ๋ฐํ์ผ๋ก ๋์ฑ ์ฑ์ฅํด๋๊ฐ๊ฒ ์ต๋๋ค.