From 4f63233473d6d5d368d078fdecf52672ca3ca563 Mon Sep 17 00:00:00 2001 From: sebeeeen Date: Tue, 1 Oct 2024 02:15:25 +0900 Subject: [PATCH 1/6] first commit --- src/main/java/doit/jpastudy2/Jpastudy2Application.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/doit/jpastudy2/Jpastudy2Application.java b/src/main/java/doit/jpastudy2/Jpastudy2Application.java index c7f3a31..f8fb792 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) { + System.out.println("hello world!"); SpringApplication.run(Jpastudy2Application.class, args); } From 3aa7cdb3135a68c9a96a89b1880490cd8f242825 Mon Sep 17 00:00:00 2001 From: sebeeeen Date: Wed, 2 Oct 2024 02:24:31 +0900 Subject: [PATCH 2/6] first commit --- .../doit/jpastudy2/Jpastudy2Application.java | 1 - .../doit/jpastudy2/repository/Category.java | 33 ------ .../doit/jpastudy2/repository/School.java | 36 ++++++ ...yRepository.java => SchoolRepository.java} | 8 +- src/main/resources/application.properties | 2 +- .../repository/CategoryRepositoryTest.java | 108 ------------------ .../repository/SchoolRepositoryTest.java | 84 ++++++++++++++ 7 files changed, 125 insertions(+), 147 deletions(-) delete mode 100644 src/main/java/doit/jpastudy2/repository/Category.java create mode 100644 src/main/java/doit/jpastudy2/repository/School.java rename src/main/java/doit/jpastudy2/repository/{CategoryRepository.java => SchoolRepository.java} (61%) delete mode 100644 src/test/java/doit/jpastudy2/repository/CategoryRepositoryTest.java create mode 100644 src/test/java/doit/jpastudy2/repository/SchoolRepositoryTest.java diff --git a/src/main/java/doit/jpastudy2/Jpastudy2Application.java b/src/main/java/doit/jpastudy2/Jpastudy2Application.java index f8fb792..c7f3a31 100644 --- a/src/main/java/doit/jpastudy2/Jpastudy2Application.java +++ b/src/main/java/doit/jpastudy2/Jpastudy2Application.java @@ -7,7 +7,6 @@ public class Jpastudy2Application { public static void main(String[] args) { - System.out.println("hello world!"); 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 deleted file mode 100644 index 4da9720..0000000 --- a/src/main/java/doit/jpastudy2/repository/Category.java +++ /dev/null @@ -1,33 +0,0 @@ -package doit.jpastudy2.repository; - -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; - -@Entity -@NoArgsConstructor -@Getter -public class Category { - - @Id // PK임을 나타낸다. - @GeneratedValue(strategy = GenerationType.AUTO) // 자동 생성되는 값임을 나타낸다. - @Column(name = "category_id") // 컬럼명을 지정한다. - private Long id; - - // @Column(name = "type")이 생략된 경우 필드명이 컬럼명이 된다. snake_case로 변환된다. - private String type; - - // @Column(name = "description")이 생략된 경우 필드명이 컬럼명이 된다. - private String description; - - @Builder // 빌더 패턴을 사용할 수 있게 한다. - public Category(String description, String type) { - this.description = description; - this.type = type; - } -} diff --git a/src/main/java/doit/jpastudy2/repository/School.java b/src/main/java/doit/jpastudy2/repository/School.java new file mode 100644 index 0000000..daf7737 --- /dev/null +++ b/src/main/java/doit/jpastudy2/repository/School.java @@ -0,0 +1,36 @@ +package doit.jpastudy2.repository; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@NoArgsConstructor +@Getter +public class School { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + @Column(name = "School_id") + private Long id; + + @Column(name = "School_name") + private String schoolName; + + @Column(name = "Total_students") + private int totalStudents; + + @Column(name = "Average_grade") + private double averageGrade; + + @Builder + public School(String schoolName, int totalStudents, double averageGrade) { + this.schoolName = schoolName; + this.totalStudents = totalStudents; + this.averageGrade = averageGrade; + } +} \ No newline at end of file diff --git a/src/main/java/doit/jpastudy2/repository/CategoryRepository.java b/src/main/java/doit/jpastudy2/repository/SchoolRepository.java similarity index 61% rename from src/main/java/doit/jpastudy2/repository/CategoryRepository.java rename to src/main/java/doit/jpastudy2/repository/SchoolRepository.java index 69d32d4..1ca8e56 100644 --- a/src/main/java/doit/jpastudy2/repository/CategoryRepository.java +++ b/src/main/java/doit/jpastudy2/repository/SchoolRepository.java @@ -2,7 +2,7 @@ import org.springframework.data.jpa.repository.JpaRepository; -public interface CategoryRepository extends JpaRepository { +public interface SchoolRepository extends JpaRepository { // 쿼리 메소드 패턴은 다음과 같다. // [ ] = Optional @@ -10,8 +10,8 @@ public interface CategoryRepository extends JpaRepository { // find + [ ] + By + (조건) // select * from Category - Category findByDescription(String description); - + School findBySchoolName(String schoolName); // select * from Category where type = ? and description = ? - Category findByTypeAndDescription(String type, String description); + School findBySchoolNameAndTotalStudents(String schoolName, int totalStudents); + } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 13ba32e..adf68dd 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1 @@ -spring.application.name=jpastudy2 +spring.application.name=jpastudy2 \ No newline at end of file diff --git a/src/test/java/doit/jpastudy2/repository/CategoryRepositoryTest.java b/src/test/java/doit/jpastudy2/repository/CategoryRepositoryTest.java deleted file mode 100644 index e271dd6..0000000 --- a/src/test/java/doit/jpastudy2/repository/CategoryRepositoryTest.java +++ /dev/null @@ -1,108 +0,0 @@ -package doit.jpastudy2.repository; - -import static org.junit.jupiter.api.Assertions.*; - -import java.util.List; -import org.assertj.core.api.Assertions; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.transaction.annotation.Transactional; - -@Transactional // 테스트 케이스에 이 어노테이션이 있으면, 테스트가 끝나면 롤백을 해준다. ( 데이터베이스 초기화 ) -@SpringBootTest // 스프링 컨테이너를 이용한 테스트 -class CategoryRepositoryTest { - - @Autowired // 스프링이 관리하는 빈을 주입받는다. - private CategoryRepository categoryRepository; - - @DisplayName("save 테스트") - @Test - void test() { - // Given - Category category1 = Category.builder() - .type("양식") - .description("데이트") - .build(); - - Category category2 = Category.builder() - .type("한식") - .description("한국인의 정") - .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("데이트") - .build(); - - Category category2 = Category.builder() - .type("한식") - .description("한국인의 정") - .build(); - - categoryRepository.save(category1); - categoryRepository.save(category2); - - // When - Category result1 = categoryRepository.findByDescription("철가방"); - Category result2 = categoryRepository.findByDescription("데이트"); - - // Then - Assertions.assertThat(result1).isNull(); - Assertions.assertThat(result2).isNotNull(); - Assertions.assertThat(result2.getType()).isEqualTo("양식"); - } - - @DisplayName("description과 type을 이용한 조회") - @Test - void findByTypeAndDescription() { - // Given - Category category1 = Category.builder() - .type("양식") - .description("데이트") - .build(); - - Category category2 = Category.builder() - .type("한식") - .description("한국인의 정") - .build(); - - Category category3 = Category.builder() - .type("중식") - .description("철가방") - .build(); - - Category category4 = Category.builder() - .type("미식") - .description("축구ㅋㅋ") - .build(); - - categoryRepository.saveAll(List.of(category1, category2, category3, category4)); - - // When - Category result1 = categoryRepository.findByTypeAndDescription("양식", "데이트"); - Category result2 = categoryRepository.findByTypeAndDescription("중식", "데이트"); // null - Category result3 = categoryRepository.findByTypeAndDescription("미식", "축구ㅋㅋ"); - - // Then - Assertions.assertThat(result1.getType()).isEqualTo("양식"); - Assertions.assertThat(result2).isNull(); - Assertions.assertThat(result3.getDescription()).isEqualTo("축구ㅋㅋ"); - } -} \ No newline at end of file diff --git a/src/test/java/doit/jpastudy2/repository/SchoolRepositoryTest.java b/src/test/java/doit/jpastudy2/repository/SchoolRepositoryTest.java new file mode 100644 index 0000000..a48f6c1 --- /dev/null +++ b/src/test/java/doit/jpastudy2/repository/SchoolRepositoryTest.java @@ -0,0 +1,84 @@ +package doit.jpastudy2.repository; + +import java.util.List; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.transaction.annotation.Transactional; + + +@Transactional +@SpringBootTest +class SchoolRepositoryTest { + + @Autowired + private SchoolRepository schoolRepository; + + @DisplayName("save 테스트") + @Test + void test() { + // Given + School school = School.builder() + .schoolName("아주대학교") + .totalStudents(13884) + .averageGrade(4.3) + .build(); + + // When + schoolRepository.save(school); + + // Then + Assertions.assertThat(school).isNotNull(); + Assertions.assertThat(school.getSchoolName()).isEqualTo("아주대학교"); + Assertions.assertThat(school.getTotalStudents()).isEqualTo(13884); + } + + @DisplayName("SchoolName을 이용한 찾기") + @Test + void testFindBySchoolName() { + // Given + School school = School.builder() + .schoolName("아주대학교") + .totalStudents(13884) + .averageGrade(4.3) + .build(); + + schoolRepository.save(school); + + // When + School result = schoolRepository.findBySchoolName("아주대학교"); + + // Then + Assertions.assertThat(result).isNotNull(); + Assertions.assertThat(result.getSchoolName()).isEqualTo("아주대학교"); + Assertions.assertThat(result.getTotalStudents()).isEqualTo(13884); + } + + @DisplayName("SchoolName과 TotalStudent를 이용한 찾기") + @Test + void testFindBySchoolNameAndTotalStudents() { + // Given + School school1 = School.builder() + .schoolName("아주대학교") + .totalStudents(13884) + .averageGrade(4.3) + .build(); + School school2 = School.builder() + .schoolName("서울대학교") + .totalStudents(35000) + .averageGrade(4.0) + .build(); + schoolRepository.saveAll(List.of(school1, school2)); + + // When + School result1 = schoolRepository.findBySchoolNameAndTotalStudents("아주대학교", 13884); + School result2 = schoolRepository.findBySchoolNameAndTotalStudents("서울대학교", 35000); + + // Then + Assertions.assertThat(result1).isNotNull(); + Assertions.assertThat(result2.getSchoolName()).isEqualTo("서울대학교"); + Assertions.assertThat(result2.getTotalStudents()).isEqualTo(35000); + } +} \ No newline at end of file From 849ac22f1868630e92a9930b64443033b9655312 Mon Sep 17 00:00:00 2001 From: sebeeeen Date: Wed, 2 Oct 2024 10:50:04 +0900 Subject: [PATCH 3/6] git test --- src/main/java/doit/jpastudy2/repository/SchoolRepository.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/doit/jpastudy2/repository/SchoolRepository.java b/src/main/java/doit/jpastudy2/repository/SchoolRepository.java index 1ca8e56..269c777 100644 --- a/src/main/java/doit/jpastudy2/repository/SchoolRepository.java +++ b/src/main/java/doit/jpastudy2/repository/SchoolRepository.java @@ -9,7 +9,6 @@ public interface SchoolRepository extends JpaRepository { // ( ) = 조건 // find + [ ] + By + (조건) - // select * from Category School findBySchoolName(String schoolName); // select * from Category where type = ? and description = ? School findBySchoolNameAndTotalStudents(String schoolName, int totalStudents); From f575b653cfcb56256002d11bebddbaaad765ac97 Mon Sep 17 00:00:00 2001 From: sebeeeen Date: Wed, 2 Oct 2024 11:18:27 +0900 Subject: [PATCH 4/6] git test --- .../java/doit/jpastudy2/repository/SchoolRepositoryTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/doit/jpastudy2/repository/SchoolRepositoryTest.java b/src/test/java/doit/jpastudy2/repository/SchoolRepositoryTest.java index a48f6c1..b9a67c7 100644 --- a/src/test/java/doit/jpastudy2/repository/SchoolRepositoryTest.java +++ b/src/test/java/doit/jpastudy2/repository/SchoolRepositoryTest.java @@ -72,7 +72,7 @@ void testFindBySchoolNameAndTotalStudents() { .build(); schoolRepository.saveAll(List.of(school1, school2)); - // When + // When~ School result1 = schoolRepository.findBySchoolNameAndTotalStudents("아주대학교", 13884); School result2 = schoolRepository.findBySchoolNameAndTotalStudents("서울대학교", 35000); From be3a76c4756bc358b7ee075669e5f3e3e0dc9e3a Mon Sep 17 00:00:00 2001 From: sebeeeen Date: Wed, 2 Oct 2024 11:28:06 +0900 Subject: [PATCH 5/6] =?UTF-8?q?=EA=B6=8C=EC=84=B8=EB=B9=88=201=EC=A3=BC?= =?UTF-8?q?=EC=B0=A8=20=EA=B3=BC=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/doit/jpastudy2/repository/SchoolRepositoryTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/doit/jpastudy2/repository/SchoolRepositoryTest.java b/src/test/java/doit/jpastudy2/repository/SchoolRepositoryTest.java index b9a67c7..a48f6c1 100644 --- a/src/test/java/doit/jpastudy2/repository/SchoolRepositoryTest.java +++ b/src/test/java/doit/jpastudy2/repository/SchoolRepositoryTest.java @@ -72,7 +72,7 @@ void testFindBySchoolNameAndTotalStudents() { .build(); schoolRepository.saveAll(List.of(school1, school2)); - // When~ + // When School result1 = schoolRepository.findBySchoolNameAndTotalStudents("아주대학교", 13884); School result2 = schoolRepository.findBySchoolNameAndTotalStudents("서울대학교", 35000); From 719139546319922814ee8f6c9ecd16e5c3470565 Mon Sep 17 00:00:00 2001 From: sebeeeen Date: Wed, 2 Oct 2024 11:35:39 +0900 Subject: [PATCH 6/6] =?UTF-8?q?=EA=B6=8C=EC=84=B8=EB=B9=88=201=EC=A3=BC?= =?UTF-8?q?=EC=B0=A8=20=EA=B3=BC=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/doit/jpastudy2/repository/SchoolRepositoryTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/doit/jpastudy2/repository/SchoolRepositoryTest.java b/src/test/java/doit/jpastudy2/repository/SchoolRepositoryTest.java index a48f6c1..23f7124 100644 --- a/src/test/java/doit/jpastudy2/repository/SchoolRepositoryTest.java +++ b/src/test/java/doit/jpastudy2/repository/SchoolRepositoryTest.java @@ -76,7 +76,7 @@ void testFindBySchoolNameAndTotalStudents() { School result1 = schoolRepository.findBySchoolNameAndTotalStudents("아주대학교", 13884); School result2 = schoolRepository.findBySchoolNameAndTotalStudents("서울대학교", 35000); - // Then + // Then. Assertions.assertThat(result1).isNotNull(); Assertions.assertThat(result2.getSchoolName()).isEqualTo("서울대학교"); Assertions.assertThat(result2.getTotalStudents()).isEqualTo(35000);