JPA Repositoryインタフェース詳細1
JPA Repository Interface
Entity
JavaオブジェクトとDBテーブルに関連付けられているのはORMです.
ここでjavaオブジェクトをEntityと呼びます.
したがって、指向性要素を用いて、要素を簡単に表すことができる.
🤔 なぜエラーが発生したのでしょうか.
デフォルトでは、エンティティにプライマリ・キーが必要です.@Id
@GeneratedValue //autoincrement
private long id;
追加します.
これにより、User Entityが作成されます.
では、これらのオブジェクトをどのように格納し、どのようにクエリーしますか?
ページをめくることです.
Repository
以前に説明したSpring Data JPAのサポートです.Javaインタフェースを宣言し、Jpa RepositoryはJpaに関連する多くの機能をサポートすることができます.public interface UserRepoitory extends JpaRepository<User, Long> {
ではTESTの習慣を試してみましょう!!@SpringBootTest //SpringConext를 로딩하여 Test에 활용하겠다.
class UserRepoitoryTest {
@Autowired
private UserRepoitory userRepoitory;
@Test
void crud(){ // create, read, update, delete
userRepoitory.save(new User()); //User 생성하고 저장.
System.out.println(" >>> " + userRepoitory.findAll());
}
}
🤔 ではsaveやfindAllのような方法はどこから持ってきたのでしょうか。あとどのくらいありますか。
JpaRepository
// 조건x 테이블 전체값 가져오기, Test 쓰이지만 실제서비스에선 성능때문에 잘 사용하지 않음.
@Override
List<T> findAll();
// sort값을 즉 정렬 값 추가된 조회
@Override
List<T> findAll(Sort sort);
// Id값을 List로 받아서 In 구문으로 조회하여 여러가지 레코드를 조회
@Override
List<T> findAllById(Iterable<ID> ids);
// entity를 리터럴로 받아서 모두 저장
@Override
<S extends T> List<S> saveAll(Iterable<S> entities);
// 현재 JPA컨텍스트에 가지고 있는 DB값을 DB에 반영하도록 하는 메서드
void flush();
// 위와 비슷 저장하고바로반영
<S extends T> S saveAndFlush(S entity);
<S extends T> List<S> saveAllAndFlush(Iterable<S> entities);
// Entity를 리터러블(리스트상위인터페이스) 형식으로 받아서 한꺼번에 지운다.
default void deleteInBatch(Iterable<T> entities){deleteAllInBatch(entities);}
// 조건없이 해당 엔티티 즉 테이블을 통제로 지운다. 실제로 안씀.FindAll이랑 비슷
void deleteAllInBatch(Iterable<T> entities);
// 해당 ID값을 받아서 값을 조회한다.
T getOne(ID id);
T getById(ID id);
// 예시를 이용한 findAll도 제공한다.
<S extends T> List<S> findAll(Example<S> example);
// 예시 + 정렬 값을 이용한 findAll도 사용 가능하다.
<S extends T> List<S> findAll(Example<S> example, Sort sort);
PagingAndSortingRepository
//Pageable을 사용해 쉽게 페이징 하도록 하는 메서드.
Page<T> findAll(Pageable pageable);
CrudRepository
// 우리가 사용하는 대부분이 여기 있다.
// 엔티티에 대한 저장
<S extends T> S save(S entity);
// 리스트타입을 한번에 저장
<S extends T> Iterable<S> saveAll(Iterable<S> entities);
// Optional 타입으로 랩핑해서 Id값으로 객체를 찾는 것 findOne과 조금 다름.
Optional<T> findById(ID id);
// 해당객체의 존재 여부확인
boolean existsById(ID id);
Iterable<T> findAll();
Iterable<T> findAllById(Iterable<ID> ids);
// 전체 엔티티의 개수 확인. 페이징할때 유용
long count();
// id값을 엔티티를 인자로 받아서 삭제.
void deleteById(ID id);
void delete(T entity);
void deleteAllById(Iterable<? extends ID> ids);
void deleteAll(Iterable<? extends T> entities);
void deleteAll();
このように、いわゆる亀殻ライブラリを作成してJpaRepositoryを継承することで、上記の多くの機能を使用することができます.!!!😎😎😎
理解やおなじみのものは書きながら作りましょう!!!
Reference
この問題について(JPA Repositoryインタフェース詳細1), 我々は、より多くの情報をここで見つけました
https://velog.io/@stpn94/JPA-Repository-Interface-상세-1
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
@Id
@GeneratedValue //autoincrement
private long id;
public interface UserRepoitory extends JpaRepository<User, Long> {
ではTESTの習慣を試してみましょう!!@SpringBootTest //SpringConext를 로딩하여 Test에 활용하겠다.
class UserRepoitoryTest {
@Autowired
private UserRepoitory userRepoitory;
@Test
void crud(){ // create, read, update, delete
userRepoitory.save(new User()); //User 생성하고 저장.
System.out.println(" >>> " + userRepoitory.findAll());
}
}
🤔 ではsaveやfindAllのような方法はどこから持ってきたのでしょうか。あとどのくらいありますか。
JpaRepository
// 조건x 테이블 전체값 가져오기, Test 쓰이지만 실제서비스에선 성능때문에 잘 사용하지 않음.
@Override
List<T> findAll();
// sort값을 즉 정렬 값 추가된 조회
@Override
List<T> findAll(Sort sort);
// Id값을 List로 받아서 In 구문으로 조회하여 여러가지 레코드를 조회
@Override
List<T> findAllById(Iterable<ID> ids);
// entity를 리터럴로 받아서 모두 저장
@Override
<S extends T> List<S> saveAll(Iterable<S> entities);
// 현재 JPA컨텍스트에 가지고 있는 DB값을 DB에 반영하도록 하는 메서드
void flush();
// 위와 비슷 저장하고바로반영
<S extends T> S saveAndFlush(S entity);
<S extends T> List<S> saveAllAndFlush(Iterable<S> entities);
// Entity를 리터러블(리스트상위인터페이스) 형식으로 받아서 한꺼번에 지운다.
default void deleteInBatch(Iterable<T> entities){deleteAllInBatch(entities);}
// 조건없이 해당 엔티티 즉 테이블을 통제로 지운다. 실제로 안씀.FindAll이랑 비슷
void deleteAllInBatch(Iterable<T> entities);
// 해당 ID값을 받아서 값을 조회한다.
T getOne(ID id);
T getById(ID id);
// 예시를 이용한 findAll도 제공한다.
<S extends T> List<S> findAll(Example<S> example);
// 예시 + 정렬 값을 이용한 findAll도 사용 가능하다.
<S extends T> List<S> findAll(Example<S> example, Sort sort);
PagingAndSortingRepository
//Pageable을 사용해 쉽게 페이징 하도록 하는 메서드.
Page<T> findAll(Pageable pageable);
CrudRepository
// 우리가 사용하는 대부분이 여기 있다.
// 엔티티에 대한 저장
<S extends T> S save(S entity);
// 리스트타입을 한번에 저장
<S extends T> Iterable<S> saveAll(Iterable<S> entities);
// Optional 타입으로 랩핑해서 Id값으로 객체를 찾는 것 findOne과 조금 다름.
Optional<T> findById(ID id);
// 해당객체의 존재 여부확인
boolean existsById(ID id);
Iterable<T> findAll();
Iterable<T> findAllById(Iterable<ID> ids);
// 전체 엔티티의 개수 확인. 페이징할때 유용
long count();
// id값을 엔티티를 인자로 받아서 삭제.
void deleteById(ID id);
void delete(T entity);
void deleteAllById(Iterable<? extends ID> ids);
void deleteAll(Iterable<? extends T> entities);
void deleteAll();
このように、いわゆる亀殻ライブラリを作成してJpaRepositoryを継承することで、上記の多くの機能を使用することができます.!!!😎😎😎理解やおなじみのものは書きながら作りましょう!!!
Reference
この問題について(JPA Repositoryインタフェース詳細1), 我々は、より多くの情報をここで見つけました https://velog.io/@stpn94/JPA-Repository-Interface-상세-1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol