
// campusId๊ฐ 5๋ณด๋ค ์์ ์บ ํผ์ค๋ค ์ฐพ๊ธฐ
@Query("SELECT c.campusNameKo, c.thumbnailUrl FROM CampusEntity c WHERE c.id < 5")
List<Object[]> findCampusList();
์์ repository ์ฝ๋์ ๋ํ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑ์ค์ด๋ค.
@BeforeEach
void setUp() {
campusRepositoryV2.save(new CampusEntity(1, "๊ฐ์ข", "url1"));
campusRepositoryV2.save(new CampusEntity(2, "์น ์", "url2"));
campusRepositoryV2.save(new CampusEntity(5, "๋ด๋", "url3")); // id๊ฐ 5๋ผ์ ํํฐ๋ง ๋์ ์๋
}
@Test
@DisplayName("campusId < 5 ์บ ํผ์ค ์ฐพ๊ธฐ")
public void checkCampusList_campusIdLessThan5() {
// given - ์์ ๋ฐ์ดํฐ
List<Object[]> campusList = new ArrayList<>();
campusList.add(new Object[]{"๊ฐ์ข", "url1"});
campusList.add(new Object[]{"์น ์", "url2"});
// when
List<Object[]> result = campusRepositoryV2.findCampusList();
// then
assertThat(result).hasSize(2);
assertThat(result).usingRecursiveComparison().isEqualTo(campusList);
}
์์ ๊ฐ์ด ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ์๋ค.
campusId ๊ฐ์ด 5๋ณด๋ค ์์ ๋ฐ์ดํฐ๋ง ์ฐพ์์ค๋ ๊ฒ์ด ๋ชฉ์ ์ด์๋๋ฐ, campusID ๊ฐ 5์ธ ๋ฐ์ดํฐ๋ฅผ ์๊พธ๋ง ํฌํจํ์ฌ ์์๋ฐ์ดํฐ์ ๋ฌ๋ผ ํ
์คํธ๊ฐ ์คํจํ์๋ค.
๊ฐ์ฒด๋ฅผ ๋น๊ตํ๋ ํจ์๊ฐ ์๋ชป๋์๋ ๊ณ์ ์ค๋ฅ๋ฅผ ์ฐพ๊ณ ์์๋๋ฐ,
์๋ฌด๋๋ id < 5 ๋ผ๋ ์กฐ๊ฑด์ ์ ์ธ์ํ์ง ๋ชปํ๊ฑฐ๋ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋๋ฐ ์ค๋ฅ๊ฐ ์๋ ๊ฒ ๊ฐ์๋ค.
์ค๋ฅ์ ์์ธ์ ๋ฐ๋ก Entity ํด๋์ค์ ์์๋ค.
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
id ํ๋๊ฐ์ GeneratedValue ์ด๋
ธํ
์ด์
์ ์ค์ ํ ๊ฒ์ด ๋ฌธ์ ์๋ค.
CampusEntity ํด๋์ค์์ @GeneratedValue๊ฐ ์ ์ฉ๋์ด ์๋ค๋ฉด, save(new CampusEntity(1L, ...))๋ฅผ ์ฌ์ฉํ ๋๋ ID๊ฐ ์๋ ์์ฑ๋ ์ ์๋ค๋ ๊ฒ์ด๋ค.
ID ์๋ ์ฆ๊ฐ๋ฅผ ํผํ๊ณ ๋ช ํํ๊ฒ ์ค์ ํ๊ธฐ
๐๐ผ ์ง์ ID๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์ ์งํ๋ ค๋ฉด GenerationType.IDENTITY๋ฅผ ์ ๊ฑฐํด์ผ ํ๋ค.
์ ๊ฑฐํ๋ ํ
์คํธ๋ ์ฑ๊ณตํ์๋คโ
@GeneratedValue๋ JPA์์ ๊ธฐ๋ณธ ํค(@Id) ๊ฐ์ ์๋์ผ๋ก ์์ฑํ ๋ ์ฌ์ฉํ๋ ์ด๋ ธํ ์ด์ ์ด๋ค.
์ฆ, ์๋ก์ด ์ํฐํฐ๊ฐ ์ ์ฅ๋ ๋ ๊ฐ๋ฐ์๊ฐ ์ง์ ID๋ฅผ ์ง์ ํ์ง ์์๋ ์๋์ผ๋ก ๊ณ ์ ํ ๊ฐ์ด ํ ๋น๋๋ค.
| ์ ๋ต | ์ค๋ช |
|---|---|
| IDENTITY | ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋์ผ๋ก ์ฆ๊ฐ์ํค๋ ID ์ฌ์ฉ (ex: AUTO_INCREMENT in MySQL) |
| SEQUENCE | ๋ฐ์ดํฐ๋ฒ ์ด์ค์ Sequence ๊ฐ์ฒด ์ฌ์ฉ (ex: @SequenceGenerator ํ์) |
| TABLE | ๋ณ๋์ ํ ์ด๋ธ์ ์์ฑํ์ฌ ID ๊ด๋ฆฌ |
| AUTO (๊ธฐ๋ณธ๊ฐ) | DB์ ๋ง๊ฒ ์๋ ์ ํ (MySQL์ด๋ฉด IDENTITY, Oracle์ด๋ฉด SEQUENCE ๋ฑ) |