๋น์ฆ๋์ค ์๊ตฌ์ฌํญ ์ ๋ฆฌ
- ๋ฐ์ดํฐ : ํ์ID, ์ด๋ฆ
- ๊ธฐ๋ฅ : ํ์ ๋ฑ๋ก, ์กฐํ
- ์์ง ๋ฐ์ดํฐ ์ ์ฅ์๊ฐ ์ ์ ๋์ง ์์(๊ฐ์์ ์๋๋ฆฌ์ค)
* ์ผ๋ฐ์ ์ธ ์น ์ดํ๋ฆฌ์ผ์ด์ ๊ณ์ธต ๊ตฌ์กฐ
์ปจํธ๋กค๋ฌ -> ์๋น์ค -> ๋ฆฌํฌ์งํ ๋ฆฌ -> ( DB )
\ | /
( ๋๋ฉ์ธ)
- ์ปจํธ๋กค๋ฌ : ์น MVC์ ์ปจํธ๋กค๋ฌ ์ญํ
- ์๋น์ค : ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง ๊ตฌํ
- ๋ฆฌํฌ์งํ ๋ฆฌ : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผ, ๋๋ฉ์ธ ๊ฐ์ฒด๋ฅผ DB์ ์ ์ฅํ๊ณ ๊ด๋ฆฌ
- ๋๋ฉ์ธ : ๋น์ฆ๋์ค ๋๋ฉ์ธ ๊ฐ์ฒด, ex) ํ์, ์ฃผ๋ฌธ, ์ฟ ํฐ ๋ฑ๋ฑ ์ฃผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ณ ๊ด๋ฆฌ๋จ
ํ์ ๋๋ฉ์ธ๊ณผ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ง๋ค๊ธฐ
* ํ์ ๊ฐ์ฒด
package hello.hello_spring.domain;
public class Member {
private Long id; // ์์คํ
์์ ์ง์ ํ๋ id
private String name; // ์ฌ์ฉ์๊ฐ ์
๋ ฅํ๋ ์ด๋ฆ
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
* ํ์ ๋ฆฌํฌ์งํ ๋ฆฌ ์ธํฐํ์ด์ค (์์ง DB๋ฅผ ์ค์ ํ์ง ์์๋ค๊ณ ๊ฐ์ ํ์, ์ธํฐํ์ด์ค๋ก ๊ตฌํ)
package hello.hello_spring.repository;
import hello.hello_spring.domain.Member;
import java.util.List;
import java.util.Optional;
public interface MemberRepository {
// 4๊ฐ์ง ๊ธฐ๋ฅ์ ์ ์ฅ์์ ์ ์ฅ
Member save(Member member);
Optional<Member> findById(Long id);
Optional<Member> findByName(String name);
List<Member> findAll();
}
* ํ์ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ๊ตฌํ์ฒด (์ค์ ๊ฐ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ์ฝ๋)
package hello.hello_spring.repository;
import hello.hello_spring.domain.Member;
import java.util.*;
public class MemoryMemberRepository implements MemberRepository{ //alt+Enter ๋๋ฌ์ ์๋์ผ๋ก ๋ฉ์๋ ๊ตฌํ
private static Map<Long, Member> store = new HashMap<>();
private static long sequence = 0L;
@Override
public Member save(Member member) {
member.setId(++sequence);
store.put(member.getId(), member);
return member;
}
@Override
public Optional<Member> findById(Long id) {
return Optional.ofNullable(store.get(id)); //null๊ฐ์ ๊ฐ์ง ์ ์์ผ๋ฏ๋ก
}
@Override
public Optional<Member> findByName(String name) {
return store.values().stream()
.filter(member -> member.getName().equals(name))
.findAny();
}
@Override
public List<Member> findAll() {
return new ArrayList<>(store.values());
}
//--------------------------------------------------------
// ํ
์คํธ์ผ์ด์ค๋ฅผ ์ํด ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ง์ฐ๋ ๋ฉ์๋ ์ถ๊ฐ
public void clearStore() {
store.clear();
}
}
'๋ฐฑ์๋(Back-End) ๊ฐ๋ฐ > SpringBoot' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SpringBoot] 3.3_ํ์ ์๋น์ค ๊ฐ๋ฐ ๋ฐ ํ ์คํธ (0) | 2025.02.25 |
---|---|
[SpringBoot] 3.2_ํ์ ๋ฆฌํฌ์งํ ๋ฆฌ ํ ์คํธ ์ผ์ด์ค ์์ฑ (0) | 2025.02.25 |
[SpringBoot] 2.3_API (@ResponseBody) (0) | 2025.02.25 |
[SpringBoot] 2.2_MVC์ ํ ํ๋ฆฟ ์์ง (0) | 2025.02.25 |
[SpringBoot] 2.1_์คํ๋ง ์น ๊ฐ๋ฐ ์ ์ ์ปจํ ์ธ (0) | 2025.02.24 |