์ฑ ๊ฐ๋ฐ ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ User๊ฐ ์ด ๊ธ์ ๋ถ๋ฌ์ฌ ๋, ๋ชจ๋ ๊ธ์ด ๋ถ๋ฌ์์ง๊ฒ ๋๊ธฐ ๋๋ฌธ์ ์ผ์ ๋ถ๋ถ์ ๊ธ๋ง ๋ถ๋ฌ์์ง๊ฒ api๋ฅผ ์์ ํด๋ฌ๋ผ๋ ๋ถํ์ ๋ฐ์๋ค.
์ธํฐ๋ท์ ์ฐพ์๋ณด๋, FrontEnd์ ์ญํ ์ธ ๊ฒ ๊ฐ์์ง๋ง ์ผ๋จ ์๊ฒ ๋ค๊ณ ํ๊ธฐ ๋๋ฌธ์ ์ต๋ํ api๋ฅผ ์์ ํด๋ณด๊ณ ์ํ๋ค.
(์์ผ๋ก๋ ์ด๊ฒ ์๋ฒ์ ์ญํ ์ธ์ง, ํ๋ก ํธ์ ์ญํ ์ธ์ง ๋ค์ ํ์ธํ ํ api๋ฅผ ์์ฑํด์ผ๊ฒ ๋ค)
Jpa Repository๋ฅผ ํตํด์ User๊ฐ ์ด ๊ธ์ ๊ฐ์ ๋ถ๋ฌ์ค๊ฒ ๋๋ค. ์ด๋, Return variable์ด List<Entity>๊ฐ ๋๋ฏ๋ก ๊ฐ์ ๋ณ๊ฒฝํ๋๋ฐ for๋ฌธ์ ์ฌ์ฉํด์ List์ ์๋ ๊ฐ์ ๋๋ค๋ฅธ List๋ก ์ฎ๊ฒจ์ผํ๊ธฐ ๋๋ฌธ์ ๋ณต์กํ ๋ฐ๋ณต๋ฌธ์ด ์ฌ์ฉ๋ ๊ฒ์ผ๋ก ์์๋์๋ค.
for๋ฌธ์ผ๋ก List<Entity>๋ฅผ ๋ ๋ค๋ฅธ List๋ก ์ฎ๊ธฐ๋ฉด์ ์์ ์๋ ๊ฐ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์ด๋ ต๊ณ , ์ฝ๋๊ฐ ๊ธธ์ด์ง๊ณ , ์๋ฌ๊ฐ ๋๋ฉด์ ํด๊ฒฐ์ด ๋์ง ์์ ๋ง์ ์ด๋ ค์์ ๊ฒช์๋ค.
๋ฌดํ ๊ตฌ๊ธ๋ง์ ํด๋ณธ๊ฒฐ๊ณผ "์๋ฐ8 Streams"์์ List์ ๊ฐ์ ์ฝ๊ฒ ๋ณ๊ฒฝํ ์ ์๋ Stream.forEach(... -> ....)์ ์๊ฒ ๋์๊ณ ์ด๋ฅผ ํตํด์ API๋ฅผ ์ฑ๊ณตํ๊ฒ ๋์๋ค. ์ด๋ JPA๋ง ๊ตญํ๋์ง ์๊ณ , List๋ผ๋ฉด ๋ฌด์์ด๋ ์ง ๊ฐ๋ฅํ๋ค.
์์ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
List<Story> story = storyRepository.findByUserId(userId);
//userId๋ก ์ฐพ์์ list๋ก ๋ถ๋ฌ์ค๊ธฐ
int like = +1;
// ์์ฃผ ๋ณ๊ฒฝ๋๋ ๊ฐ์ด ์๋๋ผ๋ฉด, method์ด ์๋๋ผ ์ง์ attribute์ ๋ฃ์ด์ฃผ๋ ๊ฒ์ด ์ข์
story.stream().forEach(o -> o.changeLike(like));
//story list์ ๊ฐ์ ๋ณ๊ฒฝ, story Entity์ changeLike method์ int ๊ฐ์ ๋ฃ๊ณ like ๊ฐ์ ๋ณ๊ฒฝํด์ฃผ๋ code
storyRepository.save(story);
//๋ณ๊ฒฝ ๊ฐ ์ ์ฅ
////////////////////////////////////////////////////////////////////////////////////////
//story Entity ์์ changeLike method๋ ๋ค์๊ณผ ๊ฐ๋ค.
public void changeLike(int like){
this.like +=like; // ์๋์ like ๊ฐ์์ parameter๋ก ๋ฐ์์จ like ๋ฅผ ๋ํ๋ method
}
///////////////////////////////////////////////////////////////////////////////////////
/*
์ฆ, stream() ์ฌ์ฉ์ ๋ค์๊ณผ ๊ฐ๋ค.
*/
list_Name.Stream().forEach(name -> name.method());
Stream์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ง ์๋ค๋ ๊ธ์ ๋ด์์ง๋ง, ์์ง๊น์ง๋ stream ์ด์ธ์ for๋ฌธ์ ์ฌ์ฉํด์ ์์ฑํ๋ ์ฝ๋ ๋ฒ์ ํด๊ฒฐํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์ผ์์ ์ผ๋ก stream์ผ๋ก ์ฌ์ฉํ๋ค.
์์ผ๋ก ํด๊ฒฐํด๋ณด๊ฑฐ๋, stream์ผ๋ก ์ฌ์ฉํ๋ฉด์ ๋จ์ ์ ์ค์ผ ์ ์๋ ๋ฐฉํฅ์ผ๋ก ๋ณ๊ฒฝ์ ํด๋ด์ผ๊ฒ ๋ค.