@Repository
persistence layer๋ฅผ ๊ตฌํํ๋ ํด๋์ค์ ์ฌ์ฉ
โข
@Component์ ๋ง์ฐฌ๊ฐ์ง๋ก ํด๋น ํด๋์ค๋ฅผ ๋น์ผ๋ก ๋ฑ๋ก
โข
DAOํจํด์ ์ ์ฉํ ํด๋์ค์๋ ์ฌ์ฉ ๊ฐ๋ฅ
โข
persistence layer์์ ๋ฐ์ํ๋ ์์ธ๋ฅผ ์ก์์ DataAccessException์ผ๋ก ์ฒ๋ฆฌํด์ค
โข
Spring Data JPA๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, ์ง์ ์ฌ์ฉํ ์ผ์ ์๋ค๊ณ ๋ด๋ ๋ฌด๋ฐฉ
โข
JpaRepository ์ธํฐํ์ด์ค ๊ตฌํ์ฒด์ธ SimpleJpaRepository๋ฅผ ๋ณด๋ฉด @Repository ์ด๋
ธํ
์ด์
์ด ๋ถ์ด์์
Spring Data JPA ์ธํฐํ์ด์ค ์ข ๋ฅ
๋จ๊ณ๋ณ๋ก ํ์ํ ๊ธฐ๋ฅ๊น์ง๋ง ์ฌ์ฉ ๊ฐ๋ฅ
โข
Repository: ๊ธฐ๋ณธ repository ์ธํฐํ์ด์ค. ์ด๋ค ๋ฉ์๋๋ ์ ๊ณตํ์ง ์์
โข
CrudRepository: Repository + CRUD ๊ธฐ๋ฅ ์ ๊ณต
โข
PagingAndSortingRepository: CrudRepository + ํ์ด์ง, ์ ๋ ฌ ๊ธฐ๋ฅ ์ ๊ณต
โข
JpaRepository: PagingAndSortingRepository + Spring Data JPA repository ์ ์ฒด ๊ธฐ๋ฅ
Query Method
โข
์ธํฐํ์ด์ค์ ์์ฑํ ๋ฉ์๋ ์ด๋ฆ์ด ๊ณง ์ฟผ๋ฆฌ ํํ์ด ๋จ
โข
@Repository์์ ์ฌ์ฉํ๋ ์ฟผ๋ฆฌ ์์ฑํ ๋ ์ฐ๋ ๋ฉ์๋
//@Query์ ๋ฉ์๋ ๋ช
์ด ๋์ผํ ์ญํ ์ ํจ
//@Query("select e from event e where eventName = :eventName and eventStatus = :eventStatus")
List<Event> findByEventNameAndEventStatus(String eventName, EventStatus eventStatus)
Java
๋ณต์ฌ
โข
๋ค์ด๋๋ฏน ์ฟผ๋ฆฌ๋ฅผ ๋ง๋ค ์๋ ์์
๋ง์ฝ
eventName ๊ฐ์ด ์๋ค์ด์ค๋ฉด
select e.* from event e where event_name is null and event_status = **
์ด๋ฐ์์ผ๋ก ๋์ด์ ธ๋ฒ๋ฆผ
Java
๋ณต์ฌ
โข
join ๋ฑ ๋ณต์กํ ํํ์ ๋ถ๊ฐ
๋ช๊ฐ์ง ์ ๋ ธํ ์ด์ ๋ค
โข
@Param: ์ฟผ๋ฆฌ ๋ฉ์๋ ์
๋ ฅ ํ๋ผ๋ฏธํฐ์ ์ฌ์ฉํ์ฌ ์ ๋
ธํ
์ด์
๊ธฐ๋ฐ ํ๋ผ๋ฏธํฐ ๋ฐ์ธ๋ฉํ ๋ ์ฌ์ฉ
List<Event> findByEventNameAndEventStatus(@Param("eventName")String eventName, EventStatus eventStatus)
Java
๋ณต์ฌ
โข
@Query: ์ง์ JPQL์ ์์ฑํ๊ณ ์ถ์ ๋ ์ฌ์ฉ
โข
@NoRepositoryBean: ๋น์ผ๋ก ๋ฑ๋กํ๊ณ ์ถ์ง ์์ ์ธํฐํ์ด์ค๋ฅผ ์ง์ ํ ์ ์์
โฆ
ํน์ ์ฟผ๋ฆฌ ๋ฉ์๋๋ฅผ ๊ธฐ๋ณธ ๋ฉ์๋๋ก ์ง์ ํ๋ ๋ฐฉ์์ผ๋ก ์ด์ ๊ฐ๋ฅ
โฆ
ํน์ ๋ฉ์๋๋ฅผ ์ ํ์ ์ผ๋ก ์ฌ์ฉํ๊ฑฐ๋ api์ ๋
ธ์ถํ๊ณ ์ ํ ๋๋ ์ฌ์ฉํ๋ ํ
ํฌ๋
ex) readOnly Repository๋ฅผ ๋ง๋ค์ด๋ณด์
public interface EventReadOnlyRepository<T,ID> extends Repository<T, ID> {
Optional<T> findById(ID id);
List<T> findAll();
...
}
Java
๋ณต์ฌ