Skip to content

3.3. パッケージ構造

3.3.1. 標準レイヤー構造

機能別パッケージ(Feature Package)構造を基本とします。

com.tienipia.{サービス名}/
├── domain/
│   └── user/
│       ├── controller/
│       │   └── UserController.java
│       ├── service/
│       │   ├── UserService.java
│       │   └── UserServiceImpl.java
│       ├── repository/
│       │   └── UserRepository.java
│       └── dto/
│           ├── CreateUserRequest.java
│           └── UserResponse.java
├── global/
│   ├── config/
│   │   ├── SecurityConfig.java
│   │   └── WebConfig.java
│   ├── exception/
│   │   ├── GlobalExceptionHandler.java
│   │   ├── ErrorCode.java
│   │   └── ErrorResponse.java
│   └── common/
│       └── PageResponse.java
├── infra/
│   ├── external/
│   └── storage/
└── jooq/                          # jOOQ codegen 自動生成 (target/)
    └── tables/

3.3.2. パッケージ構造の原則

  • domain/: ビジネスドメインごとにサブパッケージを構成します。
  • global/: アプリケーション全体で共通して使用される設定、例外、ユーティリティを配置します。
  • infra/: 外部システム連携、ストレージ関連のインフラコードを配置します。
  • jooq/: jOOQ codegen が自動生成するパッケージです。target/generated-sources/ 配下に配置され、直接修正しません。
  • ドメイン間の直接参照は最小化し、必要な場合はインターフェースを通じて依存します。

TIENIPIA QUALIFIED STANDARD