【Java×Spring Boot】Eコマースサイトのバックエンドを完全自作!実用API×在庫管理も丸わかり

プログラミング

「Eコマースの仕組みをJavaで実装したい」
「バックエンドの全体像がよくわからない」
そんな悩みを持つ方は多いのではないでしょうか?

この記事では、JavaとSpring Bootを使ってEコマースサイトのバックエンドを構築する方法を解説します。

商品登録・注文・在庫管理・支払い処理などの基本的な機能を実際にコードで作りながら学べる構成です。

初学者でも段階的に実装できるよう、丁寧にコードと設計を説明しています。


Eコマースのバックエンドとは?

商品・注文・在庫・決済を管理する中枢です

結論:バックエンドは「データ管理と処理の要」です。

Eコマースサイトの裏側では、以下のような情報を管理しています:

  • 商品情報の登録・更新・削除
  • ユーザーからの注文受付と記録
  • 在庫数の変動管理
  • 決済・注文ステータスの更新

このような処理を、JavaとSpring Bootを使って実装していきます。


プロジェクト構成と初期設定

Spring Bootで効率よく構築しましょう

結論:Spring Initializrでひな形を生成し、MySQLを接続します。

Spring Initializrで以下の依存関係を選択します:

  • Spring Web
  • Spring Data JPA
  • MySQL Driver

application.propertiesの設定例:

1
2
3
4
spring.datasource.url=jdbc:mysql://localhost:3306/ecommerce
spring.datasource.username=root
spring.datasource.password=password
spring.jpa.hibernate.ddl-auto=update

MySQL側で以下のコマンドを実行しておきましょう:

1
CREATE DATABASE ecommerce;

商品エンティティと登録機能

商品の登録・一覧表示を実装します

結論:Productエンティティを定義し、CRUD機能を作ります。

Product.java

1
2
3
4
5
6
7
8
9
10
11
12
import jakarta.persistence.*;
 
@Entity
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Long id;
 
    public String name;
    public int price;
    public int stock;
}

ProductRepository.java

1
2
3
import org.springframework.data.jpa.repository.JpaRepository;
 
public interface ProductRepository extends JpaRepository<Product, Long> {}

ProductController.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import org.springframework.web.bind.annotation.*;
import java.util.*;
 
@RestController
@RequestMapping("/products")
public class ProductController {
    private final ProductRepository repo;
 
    public ProductController(ProductRepository repo) {
        this.repo = repo;
    }
 
    @GetMapping
    public List<Product> list() {
        return repo.findAll();
    }
 
    @PostMapping
    public Product add(@RequestBody Product p) {
        return repo.save(p);
    }
}

注文処理の設計と実装

注文と同時に在庫を減らす機能を作ります

結論:注文保存と在庫の更新を一連の処理で行います。

Order.java

1
2
3
4
5
6
7
8
9
10
11
import jakarta.persistence.*;
 
@Entity
public class Order {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Long id;
 
    public Long productId;
    public int quantity;
}

OrderRepository.java

1
2
3
import org.springframework.data.jpa.repository.JpaRepository;
 
public interface OrderRepository extends JpaRepository<Order, Long> {}

OrderController.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import org.springframework.web.bind.annotation.*;
 
@RestController
@RequestMapping("/orders")
public class OrderController {
    private final OrderRepository orderRepo;
    private final ProductRepository productRepo;
 
    public OrderController(OrderRepository orderRepo, ProductRepository productRepo) {
        this.orderRepo = orderRepo;
        this.productRepo = productRepo;
    }
 
    @PostMapping
    public String placeOrder(@RequestBody Order order) {
        Product p = productRepo.findById(order.productId).orElseThrow();
        if (p.stock < order.quantity) return "在庫不足です";
 
        p.stock -= order.quantity;
        productRepo.save(p);
        orderRepo.save(order);
 
        return "注文完了";
    }
}

躓きやすいエラーと解決策

  • エラー:Table not found
    → 対策:spring.jpa.hibernate.ddl-auto=update を設定、DBにテーブルがない場合自動作成
  • エラー:NullPointerException on Repository
    → 対策:@Autowiredやコンストラクタインジェクションの記述漏れを確認
  • エラー:JSON parse error
    → 対策:POST時にContent-Type: application/jsonを設定

応用:支払い・ステータス・検索機能

以下の機能も追加可能です:

  • 支払い状態の管理(isPaidフラグ)
  • 商品名による検索(findByNameContaining
  • 注文一覧の取得
  • 日付・価格帯によるフィルタ

完成形コードの構成まとめ

1
2
3
4
5
6
7
8
src/
├─ Product.java
├─ ProductRepository.java
├─ ProductController.java
├─ Order.java
├─ OrderRepository.java
├─ OrderController.java
└─ application.properties

動作確認例:

  • 商品一覧:GET /products
  • 商品追加:POST /products
  • 注文:POST /orders

まとめ:Eコマースの中身が見えるようになる

この記事では、JavaとSpring Bootを使ったEコマースサイトのバックエンド構築方法を解説しました。

学べたこと:

  • 商品・注文の基本的なデータ設計
  • JPAを活用した簡潔なデータ操作
  • Spring BootでのAPI構築フロー
  • 実用的な在庫管理・注文処理

バックエンドの仕組みを自作してみることで、ECの裏側が明確に理解できるようになります。
ぜひ自分のアレンジを加えて、より高度なECシステム開発に挑戦してみてください!

タイトルとURLをコピーしました