🫠
Springサービス層の基本: アノテーションとメソッド一覧
サービス層で使用されるアノテーション
@Service
サービスクラスをSpringコンテナにサービスとして登録します。ビジネスロジックを実装するために使用されます。
例:
@Service
public class MyService {
// ビジネスロジックの実装
}
@Autowired
Springの依存性注入機能を使用して、他のBeanを自動的にインジェクションします。
例:
@Autowired
private MyRepository myRepository;
@Transactional
メソッドまたはクラスにトランザクション管理を適用します。トランザクションはデータベース操作の一貫性を保つために使用されます。
例:
@Transactional
public void performTransaction() {
// トランザクション内で実行する処理
}
@Qualifier
複数のBeanが存在する場合に、どのBeanをインジェクションするかを指定します。
例:
@Autowired
@Qualifier("specificBean")
private MyService myService;
サービス層でよく使用されるメソッド
CRUD操作に関連するメソッド
create
新しいエンティティを作成するメソッド。
public MyEntity create(MyEntity entity) {
return myRepository.save(entity);
}
read
エンティティを読み取るメソッド。主にIDで検索する。
public MyEntity read(Long id) {
return myRepository.findById(id).orElseThrow(() -> new EntityNotFoundException("Entity not found"));
}
update
既存のエンティティを更新するメソッド。
public MyEntity update(Long id, MyEntity updatedEntity) {
MyEntity existingEntity = myRepository.findById(id).orElseThrow(() -> new EntityNotFoundException("Entity not found"));
// エンティティのプロパティを更新
return myRepository.save(existingEntity);
}
delete
エンティティを削除するメソッド。
public void delete(Long id) {
myRepository.deleteById(id);
}
loadUserByUsername
Spring Securityで使用される、ユーザー名を基にユーザーの詳細情報を取得するメソッド。
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
User user = userRepository.findByUsername(username)
.orElseThrow(() -> new UsernameNotFoundException("User not found"));
return new org.springframework.security.core.userdetails.User(
user.getUsername(), user.getPassword(), Collections.singletonList(new SimpleGrantedAuthority("USER")));
}
findAll
全てのエンティティを取得するメソッド。
public List<MyEntity> findAll() {
return myRepository.findAll();
}
findBy
特定の条件に基づいてエンティティを検索するメソッド。Spring Data JPAを使用する場合にカスタムクエリを定義。
public List<MyEntity> findByStatus(String status) {
return myRepository.findByStatus(status);
}
【参考】
Discussion