diff --git a/src/main/java/com/example/demo/TestController.java b/src/main/java/com/example/demo/TestController.java
new file mode 100644
index 0000000000000000000000000000000000000000..7b7fd4e44735a2a778a4f21402e2a791a83d13a8
--- /dev/null
+++ b/src/main/java/com/example/demo/TestController.java
@@ -0,0 +1,20 @@
+package com.example.demo;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class TestController {
+
+    @GetMapping(value = "/test")
+    public UserDto test(){
+
+        UserDto dto = new UserDto();
+        dto.setAge(17);
+        dto.setName("Jane");
+
+        return dto;
+
+    }
+    
+}
diff --git a/src/main/java/com/example/demo/UserDto.java b/src/main/java/com/example/demo/UserDto.java
new file mode 100644
index 0000000000000000000000000000000000000000..985e316a35d988245330d6290c5f11664ac95365
--- /dev/null
+++ b/src/main/java/com/example/demo/UserDto.java
@@ -0,0 +1,12 @@
+package com.example.demo;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+@Getter @Setter
+@ToString
+public class UserDto {
+    private String name;
+    private Integer age;
+}
diff --git a/src/main/java/com/example/demo/constant/ItemSellStatus.java b/src/main/java/com/example/demo/constant/ItemSellStatus.java
new file mode 100644
index 0000000000000000000000000000000000000000..4e2e5b22bc47a704367fa626c2d0f33501b57eb9
--- /dev/null
+++ b/src/main/java/com/example/demo/constant/ItemSellStatus.java
@@ -0,0 +1,5 @@
+package com.example.demo.constant;
+
+public enum ItemSellStatus {
+    SELL, SOLD_OUT
+}
diff --git a/src/main/java/com/example/demo/entity/Item.java b/src/main/java/com/example/demo/entity/Item.java
new file mode 100644
index 0000000000000000000000000000000000000000..fd928ec40568d3d97a5c70f385787b33ffd12496
--- /dev/null
+++ b/src/main/java/com/example/demo/entity/Item.java
@@ -0,0 +1,46 @@
+package com.example.demo.entity;
+
+import com.example.demo.constant.ItemSellStatus;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.time.LocalDateTime;
+
+import javax.persistence.*;
+
+import org.springframework.stereotype.Component;
+
+
+@Table(name="item")
+@Getter
+@Setter
+@ToString
+@Entity //테이블과 맵핑 되는 객체
+public class Item {
+
+    @Id
+    @Column(name="item_id")
+    @GeneratedValue(strategy = GenerationType.AUTO) //숫자 자동 증가
+    private Long id;
+
+    @Column(nullable = false, length= 50) //값이 있어야됨
+    private String itemNm;
+
+    @Column(name="price", nullable = false)
+    private int price;
+
+    @Column(nullable = false)
+    private int stockNumber;
+
+    @Lob
+    @Column(nullable = false)
+    private String itemDetail;
+
+    @Enumerated(EnumType.STRING)
+    private ItemSellStatus itemSellStatus;
+    
+    private LocalDateTime regTime;
+    private LocalDateTime updateTime;
+}
diff --git a/src/main/java/com/example/demo/repository/ItemRepository.java b/src/main/java/com/example/demo/repository/ItemRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..eb04281e543f0e8a281643c555eab5cc9a2ba03f
--- /dev/null
+++ b/src/main/java/com/example/demo/repository/ItemRepository.java
@@ -0,0 +1,18 @@
+package com.example.demo.repository;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.repository.NoRepositoryBean;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+
+import java.util.List;
+
+import com.example.demo.entity.Item;
+
+// @NoRepositoryBean
+public interface ItemRepository extends JpaRepository<Item, Long>{
+    List<Item> findByItemNm(String itemNm);
+    List<Item> findByItemNmOrItemDetail(String itemNm, String itemDetail);
+    List<Item> findByPriceLessThan(Integer price);
+    List<Item> findByPriceLessThanOrderByPriceDesc(Integer price);
+}
diff --git a/src/main/resources/application-test.properties b/src/main/resources/application-test.properties
new file mode 100644
index 0000000000000000000000000000000000000000..890ffb26b8654a1be92bdd574e9e3af81f2c4361
--- /dev/null
+++ b/src/main/resources/application-test.properties
@@ -0,0 +1,9 @@
+spring.datasource.driver-class-name=org.h2.Driver
+spring.datasource.url=jdbc:h2:mem:test
+spring.datasource.username=sa
+spring.datasource.password=
+
+spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
+
+spring.jpa.hibernate.ddl-auto=create
+spring.jpa.properties.hibernate.show_sql = true
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index b4e1011bdb9d0abe20b93edb028c885db4f1fd29..20b99e33443ac2f8726c69cfa1ea53ee4d487b55 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1,2 +1,24 @@
 spring.application.name=demo
-server.port = 3000
\ No newline at end of file
+server.port = 3000
+spring.jpa.hibernate.ddl-auto=update
+spring.jpa.show-sql=true
+
+spring.datasource.url=jdbc:mysql://localhost:3306/shop?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+
+spring.datasource.username=root
+spring.datasource.password=web1
+
+# spring.datasource.driver-class-name=org.h2.Driver
+# spring.datasource.url=jdbc:h2:mem:test
+# spring.datasource.username=sa
+# spring.datasource.password=
+
+# spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
+
+# spring.jpa.hibernate.ddl-auto=create
+
+spring.jpa.properties.hibernate.show_sql = true
+spring.jpa.properties.hibernate.connection.autocommit = true
+spring.jpa.properties.hibernate.format_sql = true
+logging.level.org.hibernate.type.descriptor.sql = trace
diff --git a/src/test/java/com/example/demo/repository/ItemRepositoryTest.java b/src/test/java/com/example/demo/repository/ItemRepositoryTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..d082a18c8556d2c3608415391ee97bf3eb53db81
--- /dev/null
+++ b/src/test/java/com/example/demo/repository/ItemRepositoryTest.java
@@ -0,0 +1,82 @@
+package com.example.demo.repository;
+
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.TestPropertySource;
+import com.example.demo.entity.Item;
+import com.example.demo.entity.QItem;
+import org.junit.jupiter.api.DisplayName;
+import java.time.LocalDateTime;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.junit.runner.RunWith;
+import com.example.demo.constant.ItemSellStatus;
+import java.util.List;
+import com.querydsl.jpa.impl.JPAQueryFactory;
+import com.querydsl.jpa.impl.JPAQuery;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+@SpringBootTest
+@TestPropertySource(locations="classpath:application-test.properties")
+@RunWith( SpringJUnit4ClassRunner.class )
+public class ItemRepositoryTest {
+
+    @Autowired
+    ItemRepository itemRepository;
+
+    public void createItemList(){
+
+        for(int i=1; i <=10; i++){
+            Item item = new Item();
+            item.setItemNm(("테스트 상품") + i);
+            item.setPrice(10000 + i);
+            item.setItemDetail("테스트 상품 상세 설명" + i);
+            item.setItemSellStatus(ItemSellStatus.SELL);
+            item.setStockNumber(100);
+            item.setRegTime(LocalDateTime.now());
+            item.setUpdateTime(LocalDateTime.now());
+            Item savedItem = itemRepository.save(item);
+        }
+    }
+    @Test
+    @DisplayName("상품명 조회 테스트")
+    public void findByItemNmTest(){
+        this.createItemList();
+        List<Item> itemList = itemRepository.findByItemNm("테스트 상품1");
+        for(Item item : itemList){
+            System.out.println(item.toString());
+        }
+    }
+    @Test
+    @DisplayName("상품명, 상품상세 설명 OR 테스트")
+    public void findByItemNmOrItemDetailTest(){
+        this.createItemList();
+        List<Item> itemList = itemRepository.findByItemNmOrItemDetail("테스트 상품1", "테스트 상품 상세 설명5");
+        for(Item item : itemList){
+            System.out.println(item.toString());
+        }
+
+    }
+    @Test
+    @DisplayName("가격 LessThan 테스트")
+    public void findByPriceLessThanTest(){
+        this.createItemList();
+        List<Item> itemList = itemRepository.findByPriceLessThan(10005);
+        for(Item item: itemList){
+            System.out.println(item.toString());
+        }
+    }
+    @Test
+    @DisplayName("가격 내람차순 조회 테스트")
+    public void findByPriceLessThanOrderByPriceDesc(){
+        this.createItemList();
+        List<Item> itemList =  itemRepository.findByPriceLessThanOrderByPriceDesc(10005);
+        for(Item item: itemList){
+            System.out.println(item.toString());
+        }
+    }
+ 
+}
+