diff --git a/src/main/java/doit/jpastudy2/Jpastudy2Application.java b/src/main/java/doit/jpastudy2/Jpastudy2Application.java index c7f3a31..fd28fd1 100644 --- a/src/main/java/doit/jpastudy2/Jpastudy2Application.java +++ b/src/main/java/doit/jpastudy2/Jpastudy2Application.java @@ -7,6 +7,7 @@ public class Jpastudy2Application { public static void main(String[] args) { + SpringApplication.run(Jpastudy2Application.class, args); } diff --git a/src/main/java/doit/jpastudy2/repository/Category.java b/src/main/java/doit/jpastudy2/repository/Category.java index 4da9720..8d7fee6 100644 --- a/src/main/java/doit/jpastudy2/repository/Category.java +++ b/src/main/java/doit/jpastudy2/repository/Category.java @@ -15,19 +15,24 @@ public class Category { @Id // PK임을 나타낸다. - @GeneratedValue(strategy = GenerationType.AUTO) // 자동 생성되는 값임을 나타낸다. - @Column(name = "category_id") // 컬럼명을 지정한다. - private Long id; + //@GeneratedValue(strategy = GenerationType.AUTO) // 자동 생성되는 값임을 나타낸다. + @Column(name = "exercise") // 컬럼명을 지정한다. + private String exercise; // @Column(name = "type")이 생략된 경우 필드명이 컬럼명이 된다. snake_case로 변환된다. - private String type; + private String time; // @Column(name = "description")이 생략된 경우 필드명이 컬럼명이 된다. - private String description; + private String cORw; + + + private String place; @Builder // 빌더 패턴을 사용할 수 있게 한다. - public Category(String description, String type) { - this.description = description; - this.type = type; + public Category(String exercise, String time, String cORw, String place) { + this.exercise = exercise; + this.time = time; + this.cORw = cORw; + this.place = place; } } diff --git a/src/main/java/doit/jpastudy2/repository/Category1.java b/src/main/java/doit/jpastudy2/repository/Category1.java new file mode 100644 index 0000000..920f85d --- /dev/null +++ b/src/main/java/doit/jpastudy2/repository/Category1.java @@ -0,0 +1,35 @@ +package doit.jpastudy2.repository; + +import jakarta.persistence.*; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@NoArgsConstructor +@Getter +public class Category1 { + + @Id // PK임을 나타낸다. + //@GeneratedValue(strategy = GenerationType.AUTO) // 자동 생성되는 값임을 나타낸다. + @Column(name = "exercise") // 컬럼명을 지정한다. + private String exercise; + + // @Column(name = "type")이 생략된 경우 필드명이 컬럼명이 된다. snake_case로 변환된다. + private String gold; + + // @Column(name = "description")이 생략된 경우 필드명이 컬럼명이 된다. + private String silver; + + + private String bronze; + + @Builder + + public Category1(String exercise, String gold, String silver, String bronze) { + this.exercise = exercise; + this.gold = gold; + this.silver = silver; + this.bronze = bronze; + } +} diff --git a/src/main/java/doit/jpastudy2/repository/CategoryRepository.java b/src/main/java/doit/jpastudy2/repository/CategoryRepository.java index 69d32d4..8dfdacb 100644 --- a/src/main/java/doit/jpastudy2/repository/CategoryRepository.java +++ b/src/main/java/doit/jpastudy2/repository/CategoryRepository.java @@ -10,8 +10,8 @@ public interface CategoryRepository extends JpaRepository { // find + [ ] + By + (조건) // select * from Category - Category findByDescription(String description); + // Category findByDescription(String description); // select * from Category where type = ? and description = ? - Category findByTypeAndDescription(String type, String description); + // Category findByTypeAndDescription(String type, String description); } diff --git a/src/main/java/doit/jpastudy2/repository/CategoryRepository1.java b/src/main/java/doit/jpastudy2/repository/CategoryRepository1.java new file mode 100644 index 0000000..965e0c4 --- /dev/null +++ b/src/main/java/doit/jpastudy2/repository/CategoryRepository1.java @@ -0,0 +1,17 @@ +package doit.jpastudy2.repository; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface CategoryRepository1 extends JpaRepository { + + // 쿼리 메소드 패턴은 다음과 같다. + // [ ] = Optional + // ( ) = 조건 + // find + [ ] + By + (조건) + + // select * from Category1 + // Category1 findByDescription(String description); + + // select * from Category where type = ? and description = ? + // Category findByTypeAndDescription(String type, String description); +} diff --git a/src/test/java/doit/jpastudy2/repository/CategoryRepositoryTest.java b/src/test/java/doit/jpastudy2/repository/CategoryRepositoryTest.java index e271dd6..640f91f 100644 --- a/src/test/java/doit/jpastudy2/repository/CategoryRepositoryTest.java +++ b/src/test/java/doit/jpastudy2/repository/CategoryRepositoryTest.java @@ -22,87 +22,91 @@ class CategoryRepositoryTest { void test() { // Given Category category1 = Category.builder() - .type("양식") - .description("데이트") + .exercise("수영") + .time("30분") + .cORw("유산소") + .place("수영장") .build(); Category category2 = Category.builder() - .type("한식") - .description("한국인의 정") + .exercise("탁구") + .time("30분") + .cORw("유산소") + .place("탁구장") .build(); - // When - categoryRepository.save(category1); - categoryRepository.save(category2); - - // Then - List categories = categoryRepository.findAll(); - Assertions.assertThat(categories).hasSize(2); - Assertions.assertThat(categories.get(0).getType()).isEqualTo("양식"); - Assertions.assertThat(categories.get(0).getDescription()).isEqualTo("데이트"); - } - - @DisplayName("Description을 이용한 조회") - @Test - void findByDescription() { - // Given - Category category1 = Category.builder() - .type("양식") - .description("데이트") + Category category3 = Category.builder() + .exercise("볼링") + .time("20분") + .cORw("근력") + .place("볼링장") .build(); - Category category2 = Category.builder() - .type("한식") - .description("한국인의 정") + Category category4 = Category.builder() + .exercise("클라이밍") + .time("60분") + .cORw("근력") + .place("클라이밍장") .build(); + // When categoryRepository.save(category1); categoryRepository.save(category2); - - // When - Category result1 = categoryRepository.findByDescription("철가방"); - Category result2 = categoryRepository.findByDescription("데이트"); + categoryRepository.save(category3); + categoryRepository.save(category4); // Then - Assertions.assertThat(result1).isNull(); - Assertions.assertThat(result2).isNotNull(); - Assertions.assertThat(result2.getType()).isEqualTo("양식"); + List categories = categoryRepository.findAll(); + Assertions.assertThat(categories).hasSize(2); + Assertions.assertThat(categories.get(0).getPlace()).isEqualTo("탁구장"); + Assertions.assertThat(categories.get(0).getCORw()).isEqualTo("근력"); } - @DisplayName("description과 type을 이용한 조회") + @DisplayName("유산소/근력을 이용한 조회") @Test - void findByTypeAndDescription() { + void findByCORw() { // Given Category category1 = Category.builder() - .type("양식") - .description("데이트") + .exercise("수영") + .time("30분") + .cORw("유산소") + .place("수영장") .build(); Category category2 = Category.builder() - .type("한식") - .description("한국인의 정") + .exercise("탁구") + .time("30분") + .cORw("유산소") + .place("탁구장") .build(); Category category3 = Category.builder() - .type("중식") - .description("철가방") + .exercise("볼링") + .time("20분") + .cORw("근력") + .place("볼링장") .build(); Category category4 = Category.builder() - .type("미식") - .description("축구ㅋㅋ") + .exercise("클라이밍") + .time("1시간") + .cORw("근력") + .place("클라이밍장") .build(); - categoryRepository.saveAll(List.of(category1, category2, category3, category4)); + // When + categoryRepository.save(category1); + categoryRepository.save(category2); + categoryRepository.save(category3); + categoryRepository.save(category4); // When - Category result1 = categoryRepository.findByTypeAndDescription("양식", "데이트"); - Category result2 = categoryRepository.findByTypeAndDescription("중식", "데이트"); // null - Category result3 = categoryRepository.findByTypeAndDescription("미식", "축구ㅋㅋ"); + Category result1 = categoryRepository.findByCORw("근력"); + Category result2 = categoryRepository.findByCORw("유산소"); // Then - Assertions.assertThat(result1.getType()).isEqualTo("양식"); - Assertions.assertThat(result2).isNull(); - Assertions.assertThat(result3.getDescription()).isEqualTo("축구ㅋㅋ"); + Assertions.assertThat(result1).isNull(); + Assertions.assertThat(result2).isNotNull(); + Assertions.assertThat(result1.getPlace()).isEqualTo("수영장"); } } \ No newline at end of file