์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ์๊ณ ๋ฆฌ์ฆ
- ๊ทธ๋ฆฌ๋
- matlab
- ์นด์นด์ค
- ToyProject
- spring
- python
- Java
- ๋ฐฑ์ค
- ์นด์นด์ค๊ธฐ์ถ
- ๋งคํธ๋ฉ
- Crawling
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ด์งํ์
- ์นํฌ๋กค๋ง
- ์ผ์ฑ๊ธฐ์ถ
- ์์์ฒ๋ฆฌ
- ํฌ๋กค๋ง
- ํ์ด์ฌ
- BFS
- OS
- JPA
- ์ด์์ฒด์
- ํด์
- API
- ํด์๋ฒ
- ๋จ์ํ ์คํธ
- ์ ๋ ๋์
- webcrawling
- selenium
DevKim
[refactor] ๊ฒ์๊ธ๊ณผ ๋๊ธ ์ฐ๊ด๊ด๊ณ ๋งคํ ๊ฐ์ ํ๊ธฐ ๋ณธ๋ฌธ
[refactor] ๊ฒ์๊ธ๊ณผ ๋๊ธ ์ฐ๊ด๊ด๊ณ ๋งคํ ๊ฐ์ ํ๊ธฐ
on_doing 2021. 7. 16. 02:17๐ ๊ฒ์๊ธ,๋๊ธ ์ฐ๊ด๊ด๊ณ ๋งคํ ๊ฐ์ ๐
์ง๋ ๋ฒ์ ์ฐ์ต์ผ์ ๊ตฌํํ๋ ๊ฒ์ํ ํ์ด์ง๋ฅผ ๊ฐ์ ํด๋ณด๋ ค๊ณ ํ๋ค.
๋ง์ฝ ํ๋์ ํ์ด์ง์์ ๋ชจ๋ ๊ฒ ๋ค ์งํ์ด๋์๋ค๋ฉด, ํฐ ๋ฌธ์ ๋ ์๋์๊ฒ ์ง๋ง
Multi page์ ๊ฒ์ํ์ด๊ธฐ ๋๋ฌธ์ ํ๋ฉด์ ๋์ด๊ฐ ๋,
ํด๋น ๊ธ์ id๊ฐ์ ์ด๋ป๊ฒ ๋๊ฒจ๋ฐ์ ์ ์์์ง ๊ณ ๋ฏผ์ด ์ฐธ ๋ง์ด ๋๋ค.
์์ฆ์ SPA ๋ฐฉ์์ ๋ง์ด ์ฌ์ฉํ๋ค์ง๋ง,
๊ทธ๋ ๋ค๊ณ ํด์ ์ด๊ฑธ ๊ทธ๋ฅ ๋ฌด์ํ๊ณ ๋์ด๊ฐ๋ฒ๋ฆฌ๊ธฐ์ ์ฐ์ฐํ๊ธฐ๋ํด์ ์ฐ์ฐํ๋ ๋ถ๋ถ์ ํด๊ฒฐํด๋ณด๋ ค๊ณ ํ๋ค.
๐ 1. ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ
URL ํ์ฝํด์ id๊ฐ ์ป์ด์ค๊ธฐ + FK ์ญํ ์ ํ ์์์ Id๊ฐ์ ์ฒ์๋ถํฐ Column์ ๋ฃ์ด๋ฒ๋ฆฌ๊ธฐ
๋จ์ํ์ง๋ง ์ฌ๋๋ค์ด ๊ฐ์ฅ ๋ง์ด ์ฐ๋ ๋ฐฉ๋ฒ์ธ ๊ฒ ๊ฐ๋ค.
(JPA ์ฐ๊ด๊ด๊ณ ๋งคํ์ ์ฌ์ฉํ์ง ์์ ๊ฒ๊ณผ ๊ฐ๋ค.)
์๋ฅผ๋ค์ด, boardDetail?id=1 ์ผ๋ก url์ด ๋์ด์จ๋ค๋ฉด,
Js์ location.search๋ฅผ ์ฌ์ฉํ์ฌ =์ ๊ธฐ์ค์ผ๋ก ํ์ฝํ์ฌ id๊ฐ์ ๊ฐ์ ธ์จ๋ค.
id = location.search.split('=')[1]
๊ทธ id๊ฐ์ ๊ฒ์๊ธ์ id ์ปฌ๋ผ ๊ฐ์ผ๋ก setter๋ฅผ ์ฌ์ฉํด์ ๋ฃ์ด์ค๋ค.
์ผ๋จ ๋ฐ๋ก id๊ฐ์ Entity์ ์ถ๊ฐํด์คฌ๋ค๋๊ฒ ๋ง์์ ๋ค์ง ์์๊ณ ,setter๋ก ๋ฃ์ด์คฌ๋ค๋ ๊ฒ๋ ์ข์ง ์์ ๋ฐฉ๋ฒ์ด๊ณ ,
๋ฌด์๋ณด๋ค url ํ์ฝํ๋๊ฑด.. ๋๋ฌด ๋ฉ์ด ์๋ค..ใ
๐ 2. ๋๋ฒ์งธ ๋ฐฉ๋ฒ
URL๋ก id ํ์ฝํด์ id๊ฐ ๊ฐ์ ธ์ค๊ธฐ + ๋๊ธ ์กฐํ์ id๊ฐ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์์ ํ๋์ฉ ๊บผ๋ด์ set์ผ๋ก ์ฐ๊ด๊ด๊ณ ๋งคํํด์ฃผ๊ธฐ
/** * ๋๊ธ ์กฐํ */ @GetMapping("api/comment") public List<Comment> findComments(@RequestParam(value = "article_id") Long article_id, @AuthenticationPrincipal UserDetailsImpl userDetails) { List<Comment> commentList = commentRepository.findAllByArticle_idOrderByCreatedAtDesc(article_id); for (Comment comment : commentList) { comment.setNowUser(userDetails.getUsername()); } return commentList; }
์ง๊ธ ์ฝ๋ ๋ณด๋๊น ์์ด๋ ๊ฒ ํ์ง ๋ชจ๋ฅด๊ฒ ๋ค..
์กธ๋ฉด์ ์ฝ๋ ์งฐ๋..? ์ ์ ์ฐจ๋ฆฌ๊ณ ์ฝ๋ ์ง์!!!
๐ 3. ๋ง์ง๋ง ๋ฐฉ๋ฒ
ํ์ฌ, ์ด ๋ฐฉ๋ฒ์ผ๋ก ์ฝ๋๋ฅผ ๊ฐ์ ํ๋ค.
0. ๊ธฐ๋ณธ ์ธํ โ
- ๊ฒ์๊ธ๊ณผ ๋๊ธ์ 1:N ๋จ๋ฐฉํฅ ์ฐ๊ด๊ด๊ณ๋ก ๋งคํ
- ์์์ฑ ์ ์ด๋ฅผ ์ ์ฉํ์ฌ ๊ฒ์๊ธ์ด ์ญ์ ๋ ๋ ๋๊ธ๋ ๋ชจ๋ ์ญ์ ๋๊ฒํจ
@ManyToOne @JoinColumn private HoneyPost honeyPost;
@OneToMany(cascade = CascadeType.ALL) private List<HoneyComment> honeyComments;
1. id๊ฐ์ ๋ณด๋ด์ฃผ๋ ์๊ธฐ โ
- ๊ฒ์๊ธ ์์ธ ์กฐํ ํ์ด์ง๋ก ๋์ด๊ฐ ๋ model์ ๋ด์์ ํจ๊ป ๋ณด๋ด์ค๋ค.
@GetMapping("honey/detail/{id}") public String honeyDetail(@PathVariable Long id, Model model) { model.addAttribute("ParentId",id); model.addAttribute("honeyDetail",honeyService.findOne(id)); return "honey/honey-detail"; }
2. view์์ ๋ฐ์ ๋ โ
mustache๋ฅผ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์{{TargetId}}๋ก ๊ฐ๋จํ๊ฒ id๊ฐ ๋ฐ์ ์ ์๋ค.
<button type="button" class="btn btn-sm btn-primary" onclick="saveComment({{ParentId}})">๋ฑ๋ก</button>
3. ์ ์ฅ์์, api์ id๊ฐ ๋ด์์ ๋ณด๋ด๊ธฐ โ
$.ajax({ type: 'POST', url: `/api/honeyc/${ParentId}`, contentType: 'application/json; charset=utf-8', data: JSON.stringify(data) }).done(function (success) { console.log(success) alert('๋๊ธ์ด ๋ฑ๋ก๋์์ต๋๋ค.'); window.location.reload(); }).fail(function (error) { console.log(error) alert(JSON.stringify(error)); });
4. ์ ์๋ฏธํ ๋ฉ์๋๋ฅผ ์์ฑํ์ฌ ๋๊ธ๊ณผ ๊ธ(post) ์ค์ โ
//์์ฑ public void saveComment(Long targetId,HoneyCommentApiDto commentApiDto) { //์ฐ๊ด๋ ๊ฒ์๊ธ HoneyPost honeyPost = honeyRepository.findById(targetId).orElseThrow( () -> new IllegalArgumentException("ํด๋น ์์ด๋๊ฐ ์กด์ฌํ์ง ์์ต๋๋ค.") ); HoneyComment comment = commentRepository.save(commentApiDto.toEntity()); comment.changePost(honeyPost); }
public void changePost(HoneyPost honeyPost) { this.honeyPost=honeyPost; }
DB์๋ FK๊ฐ์ด ์ ๋งคํ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
'Spring Boot' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Test Code] ๋จ์ ํ ์คํธ -Service layer & BDDMockito (0) | 2021.07.20 |
---|---|
[Test Code] ๋จ์ ํ ์คํธ - Mockito & @MockMvcTest (0) | 2021.07.14 |
[์ฑ๋ฅ ์ต์ ํ] ์ง์ฐ๋ก๋ฉ๊ณผ ์กฐํ ์ฑ๋ฅ : XToOne (0) | 2021.07.13 |
@Valid ์ฌ์ฉํ์ฌ @RequestBody ๊ฐ์ฒด ๊ฒ์ฆํ๊ธฐ (0) | 2021.07.13 |
[์คํ๋ง with AWS] git clone ํ ๋ฐฐํฌ ์คํฌ๋ฆฝํธ ๋ง๋ค๊ธฐ (0) | 2021.07.13 |