「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システム開発に挑戦してみてください!