๐Ÿšจ [์ด์Šˆ]

์•„๋ž˜์™€ ๊ฐ™์€ ์›์ธ์œผ๋กœ ๊ด‘๊ณ ์— ๋Œ€ํ•œ ํ†ต๊ณ„ ๋ฐฐ์น˜ ์ž‘์—…์ด ์‹คํŒจ๋˜๊ณ  ์žˆ์—ˆ๋‹ค.

Untitled

๐Ÿ’ก[์›์ธ ํŒŒ์•…]

  1. ๋กœ๊ทธ๋ฅผ ๋”ฐ๋ผ๊ฐ€๋ณด๋‹ˆ hibernate ์„ธ์…˜์ด ์ข…๋ฃŒ๊ฐ€ ๋˜์–ด DB์™€ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๋ถ€๋ถ„์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋˜ calculateAdStat ๋ฉ”์„œ๋“œ๋ฅผ ๋”ฐ๋ผ๊ฐ€ ๋ณด์•˜๋‹ค.

    Untitled

calculateAdStat ๋ฉ”์„œ๋“œ๋ฅผ ํ™•์ธํ•ด๋ณด๋‹ˆ videoAdReadRepository.findAll(); ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ videoAdList์— ์ดˆ๊ธฐํ™”๋ฅผ ํ•˜๋Š” ์ฝ”๋“œ์˜ ๋ฌธ์ œ๋ผ๋Š” ๊ฒƒ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

hibernate์˜ ์„ธ์…˜์€ ํŠธ๋žœ์žญ์…˜์˜ ์ƒ๋ช… ์ฃผ๊ธฐ์™€ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•œ๋‹ค. ์ฆ‰, hibernate์˜ ์„ธ์…˜์€ ํŠธ๋žœ์žญ์…˜์ด ์‹œ์ž‘๋จ๊ณผ ๋™์‹œ์— ์‹œ์ž‘๋˜๊ณ  ์ข…๋ฃŒ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค.

๋•Œ๋ฌธ์—, ํŠธ๋žœ์žญ์…˜์ด ์ด๋ฏธ ์ข…๋ฃŒ๋œ ์‹œ์ ์—์„œ Fetch type์ด Lazy์ธ User ์—”ํ‹ฐํ‹ฐ์˜ ๋ฐ์ดํ„ฐ๋ฅผ getํ•˜๋ ค๊ณ  ํ•˜๋‹ˆ ๋ฉ”๋ชจ๋ฆฌ์— user ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์–ด ์ƒ๊ธด ๊ฒƒ์ด์—ˆ๋‹ค.

public void calculateAdDailyStat() {
  // ํŠธ๋žœ์žญ์…˜ ์‹œ์ž‘
  List<VideoAd> videoAdList = videoAdReadRepository.findAll();
  // ํŠธ๋žœ์žญ์…˜ ์ข…๋ฃŒ (์„ธ์…˜ ๋‹ซํž˜)
  for (VideoAd videoAd : videoAdList) {
			// ์„ธ์…˜์ด ๋‹ซํ˜”๊ธฐ ๋•Œ๋ฌธ์—, ์กฐํšŒ๋ฅผ ํ•  ์ˆ˜ ์—†๋‹ค.
      long user_id = videoAd.getVideo().getUser().getId();