LoginSignup
0
0

More than 1 year has passed since last update.

SpringDataJPAお試し

Posted at

JPA

Java標準のORM(Object-Relational Mapping)。

Spring Data JPA

データストアに対するアクセスを抽象化したライブラリであるSpring Dataのサブプロジェクトであり、JPAを更に便利にした機能をもち、コードの書きやすさ、管理がしやすくなる。

メリット

  • SQLを記載しないで、DBとオブジェクトを連携できる。【JPA】
  • DBを扱う上で重要となる排他制御についてサポートされている【JPA】
  • JPAの機能を使用したデータベースアクセスのソースコードの書きやすさや管理のしやすさを実現【Spring Data JPA】

使用してみた

Hibernate(JPAの実装の1つ、SpringでJPAを利用する場合、HibernateがJPAのデフォルト実装として選択される。)を活用し、データアクセスを実装する。

  • java Object
@Entity(name="m_item")
public class Item{

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private long ItemId;
  private String itemName;
  private String itemCategory;
}

@Entity :Entityクラスを示し、name属性に実際に対応するテーブル名を指定する。

@Id:キー値(ID)となる項目に指定する。

@GeneratedValue:ID生成方針を定義する。GeneratedType.IDENTITYは、キー値生成をDBの機能で行う。(MYSQLではauto_incrementに対応する)

  • インターフェース

インターフェースを定義するだけで、あらかじめ用意されたデータ操作を行うことができる。

@Respsitory
public interface ItemRepository extends CrudRepository<Item, Long>{

}

@Repository:DBアクセスを行うことを示す。

@CrudRepository:エンティティクラスと、IDを指定することで、CRUD機能を実装する。

Interfaceクラスだけを定義。実装クラスは不要。

  • Serviceクラス
@Service
public class ItemService{
  @Autowired
  private ItemRepository itemRepositoty;
  
  public list<Item> getAllItems(){
    List<item> allItems = new ArrayList<>();
    itemRepository.findAll().forEach(allItems::add);
    
    return allItems;
  }
}

@Serviceクラスで@Repository付与のインターフェースクラスを@Autowiredをつけてそのまま利用する。

CrudRepositotyで使用できるメソッドを利用。

  • save : 指定したエンティティを登録する。
  • findById(id) : キー値を指定すると、指定されたエンティティを検索する。
  • findAll : 対応するテーブルの全件を検索する。
  • deleteById(id) : 指定されたキー値のデータを削除する。
0
0
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
0
0