diff --git a/pom.xml b/pom.xml
index 3fda6c5466faf2eeae6a33ee5b8b1f8a106cb94d..16a53ce9793a0f0802dcad5a5a1c2dd315af8035 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,7 +31,6 @@
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-test</artifactId>
-			<scope>test</scope>
 		</dependency>
 		
 		<dependency>
@@ -123,6 +122,30 @@
 			<version>3.0.1</version>
 		</dependency>
 
+		<dependency>
+			<groupId> com.querydsl</groupId>
+			<artifactId>querydsl-jpa</artifactId>
+			<version>5.0.0</version>
+		</dependency>
+
+		<dependency>
+			<groupId>com.querydsl</groupId>
+			<artifactId>querydsl-apt</artifactId>
+			<version>5.0.0</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.webjars</groupId>
+			<artifactId>jquery</artifactId>
+			<version>3.6.0</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.webjars</groupId>
+			<artifactId>bootstrap</artifactId>
+			<version>5.1.3</version>
+		</dependency>
+
 
 	</dependencies>
 
diff --git a/src/main/java/com/example/demo/DemoApplication.java b/src/main/java/com/example/demo/DemoApplication.java
index 7bce9f6938786b58323edbbc98dc06ad154cd372..6ba99fd46371719459682857b35d8ef5027838cc 100644
--- a/src/main/java/com/example/demo/DemoApplication.java
+++ b/src/main/java/com/example/demo/DemoApplication.java
@@ -1,16 +1,19 @@
 package com.example.demo;
+
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
+
 @RestController
 @SpringBootApplication
 public class DemoApplication {
-public static void main(String[] args) {
-SpringApplication.run(DemoApplication.class, args);
-}
-@GetMapping(value="/")
-public String HelloWorld(){
-return "Hello World";
-}
+    public static void main(String[] args) {
+        SpringApplication.run(DemoApplication.class, args);
+    }
+
+    // @GetMapping(value = "/")
+    // public String HelloWorld() {
+    //     return "Hello World";
+    // }
 }
\ No newline at end of file
diff --git a/src/main/java/com/example/demo/TestController.java b/src/main/java/com/example/demo/TestController.java
deleted file mode 100644
index 67f9eaf733ac84bbd94d7c60a6d32fb19cdc2aa8..0000000000000000000000000000000000000000
--- a/src/main/java/com/example/demo/TestController.java
+++ /dev/null
@@ -1,17 +0,0 @@
-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;
-    }
-}
\ No newline at end of file
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..5b7bae398b965e2cc69fbab3dce3ad95efebcd01
--- /dev/null
+++ b/src/main/java/com/example/demo/constant/ItemSellStatus.java
@@ -0,0 +1,7 @@
+package com.example.demo.constant;
+
+public enum ItemSellStatus {
+
+    SELL, SOLD_OUT
+}
+
diff --git a/src/main/java/com/example/demo/constant/Role.java b/src/main/java/com/example/demo/constant/Role.java
new file mode 100644
index 0000000000000000000000000000000000000000..bdabe17b1ffac140a5ea82b4f6aaceb6345f8d94
--- /dev/null
+++ b/src/main/java/com/example/demo/constant/Role.java
@@ -0,0 +1,6 @@
+package com.example.demo.constant;
+
+public enum Role {
+    
+    USER, ADMIN
+}
diff --git a/src/main/java/com/example/demo/controller/MemberController.java b/src/main/java/com/example/demo/controller/MemberController.java
new file mode 100644
index 0000000000000000000000000000000000000000..ab2c9c93babda49b47fe6d31dc0dc5bfe05b4984
--- /dev/null
+++ b/src/main/java/com/example/demo/controller/MemberController.java
@@ -0,0 +1,70 @@
+package com.example.demo.controller;
+
+import com.example.demo.service.MemberService;
+import com.example.demo.entity.Member;
+import com.example.demo.dto.MemberDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.repository.query.Param;
+import org.springframework.web.bind.annotation.*;
+import com.google.gson.JsonParser;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.example.demo.constant.Role;
+
+@RestController
+public class MemberController {
+    @Autowired
+    MemberService memberService;
+
+    public Member createMember() {
+        MemberDto memberDto = new MemberDto();
+        memberDto.setEmail("test@email.com");
+        memberDto.setName("홍길동");
+        memberDto.setAddress("서울시 마포구 합정동");
+        memberDto.setPassword("1234");
+        return Member.createMember(memberDto);
+    }
+
+    @RequestMapping(value = "/membertest", method = RequestMethod.GET)
+    public void membertest() {
+        Member member = createMember();
+        Member savedMember = memberService.saveMember(member);
+        System.out.println(member);
+        System.out.println(savedMember);
+    }
+
+    @RequestMapping(value = "/makeMember", method = RequestMethod.POST)
+    public String makeMember(@RequestBody String param) {
+
+        System.out.println(param);
+        JsonElement element = JsonParser.parseString(param);
+        JsonObject object = element.getAsJsonObject();
+
+        String id = object.get("id").getAsString();
+        System.out.println("id : " + id);
+
+        String email = object.get("email").getAsString();
+        System.out.println("email : " + email);
+
+        String address = object.get("address").getAsString();
+        System.out.println("address : " + address);
+
+        String name = object.get("name").getAsString();
+        System.out.println("name : " + name);
+
+        String password = object.get("password").getAsString();
+        System.out.println("password : " + password);
+
+        Member member = new Member();
+        member.setName(name);
+        member.setEmail(email);
+        member.setAddress(address);
+        member.setPassword(password);
+        member.setRole(Role.USER);
+        
+        memberService.saveMember(member);
+
+        return "OK";
+
+    }
+}
diff --git a/src/main/java/com/example/demo/controller/TestController.java b/src/main/java/com/example/demo/controller/TestController.java
new file mode 100644
index 0000000000000000000000000000000000000000..2a1728aa4bae921e340767097519e3b08b82bb94
--- /dev/null
+++ b/src/main/java/com/example/demo/controller/TestController.java
@@ -0,0 +1,61 @@
+package com.example.demo.controller;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+
+@RestController
+public class TestController {
+
+    @RequestMapping(value = "/test", method = RequestMethod.GET)
+    public String test(@RequestParam("id") String id) {
+
+        JsonObject obj = new JsonObject();
+        obj.addProperty("item_nm", "수제 햄버거");
+        obj.addProperty("item_detail", "소고시 패티와 토마토가 들어 있는 햄버거");
+        
+        
+        obj.addProperty("item_reg_date", "2022/04/22");
+        obj.addProperty("item_price", "4000");
+        
+        return obj.toString();
+    }
+
+    // @GetMapping(value = "/test")
+    // public UserDto test(){
+
+    // UserDto dto = new UserDto();
+    // dto.setAge(17);
+    // dto.setName("Jane");
+
+    // return dto;
+    // }
+
+    @RequestMapping(value = "/productlist", method = RequestMethod.GET)
+    public String productList(){
+        JsonObject obj1 = new JsonObject();
+        obj1.addProperty("item_nm", "수제 햄버거");
+        obj1.addProperty("item_detail", "소고기 패티와 토마토가 들어 있는 햄버거");
+        obj1.addProperty("item_reg_date", "2022/04/22");
+        obj1.addProperty("item_price", "4000");
+        JsonObject obj2 = new JsonObject();
+        obj2.addProperty("item_nm", "카레라이스");
+        obj2.addProperty("item_detail", "매운 3 분 카레라이스");
+        obj2.addProperty("item_reg_date", "2022/03/10");
+        obj2.addProperty("item_price", "8000");
+        JsonObject obj3 = new JsonObject();
+        obj3.addProperty("item_nm", "라면");
+        obj3.addProperty("item_detail", "소고기 라면");
+        obj3.addProperty("item_reg_date", "2021/09/10");
+        obj3.addProperty("item_price", "1500");
+        JsonArray infoArray = new JsonArray();
+        infoArray.add(obj1);
+        infoArray.add(obj2);
+        infoArray.add(obj3);
+        return infoArray.toString();
+        }
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/demo/UserDto.java b/src/main/java/com/example/demo/controller/UserDto.java
similarity index 80%
rename from src/main/java/com/example/demo/UserDto.java
rename to src/main/java/com/example/demo/controller/UserDto.java
index 6dceacda2818a8f5b832e76ec43cd920609b0988..40235c9572bbbb91d257f5e57a2f6331cee668b1 100644
--- a/src/main/java/com/example/demo/UserDto.java
+++ b/src/main/java/com/example/demo/controller/UserDto.java
@@ -1,4 +1,4 @@
-package com.example.demo;
+package com.example.demo.controller;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -10,4 +10,5 @@ import lombok.ToString;
 public class UserDto {
     private String name;
     private Integer age;
-}
\ No newline at end of file
+}
+
diff --git a/src/main/java/com/example/demo/dto/MemberDto.java b/src/main/java/com/example/demo/dto/MemberDto.java
new file mode 100644
index 0000000000000000000000000000000000000000..5441cd252f1fdc2fa57f730273a9cb93fd5b90e8
--- /dev/null
+++ b/src/main/java/com/example/demo/dto/MemberDto.java
@@ -0,0 +1,16 @@
+package com.example.demo.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+
+public class MemberDto {
+    
+    private String name;
+    private String email;
+    private String password;
+    private String address;
+
+}
\ No newline at end of file
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..0e4ee2b3defd47ea3bb482e30123a8e586e9a2e8
--- /dev/null
+++ b/src/main/java/com/example/demo/entity/Item.java
@@ -0,0 +1,41 @@
+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;
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/demo/entity/Member.java b/src/main/java/com/example/demo/entity/Member.java
new file mode 100644
index 0000000000000000000000000000000000000000..ca43ca35e3eb4bdb4d5412031ee2e561aec1e86a
--- /dev/null
+++ b/src/main/java/com/example/demo/entity/Member.java
@@ -0,0 +1,37 @@
+package com.example.demo.entity;
+
+import javax.persistence.*;
+import com.example.demo.dto.MemberDto;
+import com.example.demo.constant.Role;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+@Entity
+@Table(name = "member")
+@Getter
+@Setter
+@ToString
+public class Member {
+    @Id
+    @Column(name = "member_id")
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private Long id;
+    private String name;
+    @Column(unique = true)
+    private String email;
+    private String password;
+    private String address;
+    @Enumerated(EnumType.STRING)
+    private Role role;
+
+    public static Member createMember(MemberDto memberDto){
+    Member member = new Member();
+    member.setName(memberDto.getName());
+    member.setEmail((memberDto.getEmail()));
+    member.setAddress((memberDto.getAddress()));
+    member.setPassword(memberDto.getPassword());
+    member.setRole(Role.USER);
+    return member;
+    }
+}
\ No newline at end of file
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..171a97ab81bff85e0fc2fe4cd7c83ae825166d14
--- /dev/null
+++ b/src/main/java/com/example/demo/repository/ItemRepository.java
@@ -0,0 +1,17 @@
+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);
+    @Query("select i from Item i where i.itemDetail like %:itemDetail% order by i.price desc")
+    List<Item> findByItemDetail(@Param("itemDetail") String itemDetail);
+    
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/demo/repository/MemberRepository.java b/src/main/java/com/example/demo/repository/MemberRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..b7bf0129719050b1ca2bad4a21e46317bacbf06b
--- /dev/null
+++ b/src/main/java/com/example/demo/repository/MemberRepository.java
@@ -0,0 +1,7 @@
+package com.example.demo.repository;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import com.example.demo.entity.*;
+public interface MemberRepository extends JpaRepository<Member, Long>{
+Member findByEmail(String email);
+}
diff --git a/src/main/java/com/example/demo/service/MemberService.java b/src/main/java/com/example/demo/service/MemberService.java
new file mode 100644
index 0000000000000000000000000000000000000000..9ce3978e5fd0ed5a289cc903e9a7469715e41c13
--- /dev/null
+++ b/src/main/java/com/example/demo/service/MemberService.java
@@ -0,0 +1,32 @@
+package com.example.demo.service;
+
+import com.example.demo.entity.Member;
+import com.example.demo.repository.MemberRepository;
+import lombok.RequiredArgsConstructor;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+import javax.transaction.Transactional;
+
+@Service
+@Transactional
+@RequiredArgsConstructor
+public class MemberService {
+    private final MemberRepository memberRepository;
+
+    public Member saveMember(Member member) {
+        validateDuplicatetMember(member);
+        return memberRepository.save(member);
+    }
+
+    @Async
+    private boolean validateDuplicatetMember(Member member) {
+        synchronized (memberRepository) {
+            Member findMember = memberRepository.findByEmail(member.getEmail());
+            if (findMember != null) {
+                System.out.println("이미 가입된 회원입니다.");
+                return false;
+            }
+            return true;
+        }
+    }
+}
diff --git a/src/main/resources/application-test.properties b/src/main/resources/application-test.properties
new file mode 100644
index 0000000000000000000000000000000000000000..a269cca34f2d5daebbf203ef8cf945c498f9b9fe
--- /dev/null
+++ b/src/main/resources/application-test.properties
@@ -0,0 +1,6 @@
+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
\ No newline at end of file
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 8b137891791fe96927ad78e64b0aad7bded08bdc..890eeaac79613edc3acc25a8a48838d8b82871c4 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1 +1,17 @@
-
+server.port = 8098
+spring.jpa.hibernate.ddl-auto=update
+spring.jpa.show-sql=true
+spring.datasource.url=jdbc:mysql://210.107.196.163:40498/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=minkyungjae0524
+# 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/main/resources/static/index.html b/src/main/resources/static/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..b81b57b802c08dde03b57bf4bdb0a29a7bc0f8e1
--- /dev/null
+++ b/src/main/resources/static/index.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>Insert title here</title>
+        <link rel="stylesheet" 
+       href="/webjars/bootstrap/5.1.3/css/bootstrap.min.css">
+        <script src="/webjars/jquery/3.6.0/jquery.min.js"></script>
+        <script src="/webjars/popper.js/2.9.3/umd/popper.min.js"></script>
+        <script 
+       src="/webjars/bootstrap/5.1.3/js/bootstrap.min.js"></script>
+       </head>
+       <body>
+       <div class="container">
+        <table class="table table-hover">
+        <thead class="thead-dark">
+        <tr>
+        <th>codeId</th>
+        <th>code</th>
+        <th>codeNm</th>
+        <th>codeDc</th>
+        </tr>
+        </thead>
+        <tbody>
+        <tr>
+        <td>COM001</td>
+        <td>REG01</td>
+        <td>단일 게시판 이용 등록</td>
+        <td>단일 게시판 이용 등록</td>
+        </tr>
+        <tr>
+        <td>COM001</td>
+        <td>REG02</td>
+        <td>커뮤니티 등록</td>
+        <td>커뮤니티 등록</td>
+        </tr>
+        </tbody>
+        </table>
+       </div>
+       </body>
+       </html>
\ No newline at end of file
diff --git a/src/main/resources/static/product.html b/src/main/resources/static/product.html
new file mode 100644
index 0000000000000000000000000000000000000000..f2dbfd276d64f542b4e1b748a11411d3c8013a56
--- /dev/null
+++ b/src/main/resources/static/product.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <title>Product</title>
+ <link rel="stylesheet" 
+href="/webjars/bootstrap/5.1.3/css/bootstrap.min.css">
+ <script src="/webjars/jquery/3.6.0/jquery.min.js"></script>
+ <script 
+src="/webjars/popper.js/2.9.3/umd/popper.min.js"></script>
+ <script 
+src="/webjars/bootstrap/5.1.3/js/bootstrap.min.js"></script>
+ <script>
+ $(document).ready(function(){
+ $("button").click(function(){
+    $.ajax({
+ type: 'GET',
+ url: '/test?id=1',
+ success: function(data){
+ var obj = JSON.parse(data);
+ $('#item_nm span').text(obj.item_nm)
+ $('#item_detail span').text(obj.item_detail)
+ $('#item_reg_date span').text(obj.item_reg_date)
+ $('#item_price span').text(obj.item_price)
+ }
+ });
+ });
+ });
+ </script>
+</head>
+<body>
+ <h1>상품 데이터 출력 예제</h1>
+ <div id = "item_nm">상품명: <span></span></div>
+ <div id = "item_detail">상품 상세설명: <span></span></div>
+ <div id = "item_reg_date">상품 등록일: <span></span></div>
+ <div id = "item_price">삼품가격: <span></span></div>
+ <button>조회</button>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/resources/static/product_list.html b/src/main/resources/static/product_list.html
new file mode 100644
index 0000000000000000000000000000000000000000..117bd85c39910cf46aa03c9d48946a5e2ff23629
--- /dev/null
+++ b/src/main/resources/static/product_list.html
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <title>Product</title>
+ <link rel="stylesheet" 
+href="/webjars/bootstrap/5.1.3/css/bootstrap.min.css">
+ <script src="/webjars/jquery/3.6.0/jquery.min.js"></script>
+ <script 
+src="/webjars/popper.js/2.9.3/umd/popper.min.js"></script>
+ <script 
+src="/webjars/bootstrap/5.1.3/js/bootstrap.min.js"></script>
+ <script>
+ $(document).ready(function(){
+ $("button").click(function(){
+ $.ajax({
+ type: 'GET',
+ url: '/productlist',
+ success: function(data){
+ var array = JSON.parse(data);
+ for(i=0; i < array.length; i++){
+ var obj = array[i];
+html = '';
+html += '<tr>';
+ html += '<td>' + obj.item_nm + '</td>'
+ html += '<td>' + obj.item_detail + '</td>'
+html += '<td>' + obj.item_reg_date + '</td>'
+html += '<td>' + obj.item_price + '</td>'
+ html += '</tr>';
+ $("#tableBody").append(html);
+ }
+ }
+ });
+ });
+ });
+ </script>
+</head>
+<body>
+<h1>상품 데이터 목록 출력</h1>
+<button>조회</button>
+<table class="table table-hover">
+ <thead class="thead-dark">
+ <tr>
+ <th>상품이름</th>
+ <th>상품상세설명</th>
+ <th>상품등록일</th>
+ <th>상품가격</th>
+ </tr>
+ </thead>
+ <tbody id="tableBody">
+ </tbody>
+</table>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/test/java/com/example/demo/ItemRepositoryTest.java b/src/test/java/com/example/demo/ItemRepositoryTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..f0a984b6a55597f0fd803c71ec3f00995d3e4d9e
--- /dev/null
+++ b/src/test/java/com/example/demo/ItemRepositoryTest.java
@@ -0,0 +1,118 @@
+package com.example.demo;
+
+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.repository.ItemRepository;
+
+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;
+
+    @PersistenceContext
+    EntityManager em;
+
+    @Test
+    @DisplayName("��ǰ ���� �׽�Ʈ")
+    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());
+        }
+    }
+
+    @Test
+    @DisplayName("@Query�� �̿��� ��ǰ ��ȸ �׽�Ʈ")
+    public void findByItemDetailTest(){
+        this.createItemList();
+        List<Item> itemList = itemRepository.findByItemDetail("�׽�Ʈ ��ǰ �� ����");
+        for(Item item : itemList){
+            System.out.println(item.toString());
+        }
+    }
+
+    @Test
+    @DisplayName("Querydsl ��ȸ�׽�Ʈ1")
+    public void queryDslTest(){
+        this.createItemList();
+        JPAQueryFactory queryFactory = new JPAQueryFactory(em);
+        QItem qItem = QItem.item;
+        JPAQuery<Item> query = queryFactory.selectFrom(qItem)
+                .where(qItem.itemSellStatus.eq(ItemSellStatus.SELL))
+                .where(qItem.itemDetail.like("%" + "�׽�Ʈ ��ǰ �� ����" + "%"))
+                .orderBy(qItem.price.desc());
+
+        List<Item> itemList = query.fetch();
+
+        for(Item item : itemList){
+            System.out.println(item.toString());
+        }
+    }
+}
\ No newline at end of file