LoginSignup
2
2

More than 5 years have passed since last update.

[Java][Spring Boot] Customクラスを使用してデータベースアクセスする - NetBeansで始めるSpring Boot (7)

Last updated at Posted at 2016-11-11

Spring Bootでデータベースを使う記事を書きました。記事中で軽く触れたCustomクラスを作る方法です。

前提

こんなEntityとRepositoryインターフェースがあったとします。

User.java
@Entity
public class User {
  // いろいろ
}
UserRepository.java
public interface UserRepository extends CrudRepository<User> {
}

やること

ステップ1 - Customインターフェースを作成する

名前は必ずRepositoryインターフェース名 + 'Custom'にします。

UserRepositoryCustom.java
public interface UserRepositoryCustom {
  public List<User> findBySpec(String prop);
}

ステップ2 - Customインターフェースの実装を作成する

名前は必ずRepositoryインターフェース名 + 'Impl'にします。

UserRepositoryImpl.java
public class UserRepositoryImpl implements UserRepositoryCustom {
  public List<User> findBySpec(String prop) {
    // いろいろ
  }
}

ステップ3 - RepositoryインターフェースにCustomインターフェースを継承させる

UserRepository.java
public interface UserRepository extends
  CrudRepository<User>, UserRepositoryCustom {
}

Customインターフェースの実装について

EntityManagerを使う

@AutowiredJpaContextを取得します。

JpaContextから、EntiyManagerを取得します。

UserRepositoryImpl.java
  @Autowired
  private JpaContext context;

  public List<User> findBySpec(String prop) {
    final EntityManager em = context.GetEntityManagerByManagedType(User.class);

    // いろいろ
  }

Repositoryインターフェースを使う

普通に@Autowiredすると入ってきます。
よくできてますね。

UserRepositoryImpl.java
  @Autowired
  private UserRepository repository;
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2