では、Spring BootでDBからデータを取得してWeb APIのレスポンスとして返すサンプルを紹介します。実務でよく使う「ユーザー一覧」を返す例です。
サンプル構成
- Userエンティティ(DBのテーブルに対応するクラス)
- UserRepository(Spring Data JPAでDBアクセス)
- UserController(APIエンドポイント)
1. Userエンティティ
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
@Entity
public class User {
@Id
private Long id;
private String name;
private int age;
// getter/setter
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
}
Java2. UserRepository
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
// JpaRepositoryが基本的なCRUDを提供してくれる
}
Java3. UserController
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class UserController {
private final UserRepository userRepository;
// コンストラクタインジェクション
public UserController(UserRepository userRepository) {
this.userRepository = userRepository;
}
@GetMapping("/users")
public List<User> getUsers() {
// DBから全件取得して返す
return userRepository.findAll();
}
}
Java4. 実行結果(例)
GET http://localhost:8080/users
レスポンス(JSON形式):
[
{"id":1,"name":"Yuki","age":25},
{"id":2,"name":"Ren","age":30},
{"id":3,"name":"Aoi","age":22}
]
JSON実務ポイント
- Spring Data JPA を使うと、SQLを書かずにDBからデータを取得できる。
findAll()はテーブルの全件を返す。- 実務では
findByNameやfindByAgeGreaterThanのようなメソッドを追加して、条件付き検索を行うことが多い。 - DB接続設定は
application.propertiesに記述する(例: MySQL)。
spring.datasource.url=jdbc:mysql://localhost:3306/sampledb
spring.datasource.username=root
spring.datasource.password=pass
spring.jpa.hibernate.ddl-auto=update
まとめ
- エンティティでテーブルを表現
- リポジトリでDBアクセス
- コントローラでAPIとして返す
- Spring Bootが自動でJSONに変換してくれるので、特別な処理は不要
