limit
๊ฑธ๊ธฐcreatedAt
์ปฌ๋ผ ๋ฐฐ์ฐ๊ธฐ@createdDate
Level 3์ ๊ฒ์๊ธ์ ์์ฑ ์๊ฐ์ ์ ์ฅํ๋ผ๋ ์๊ตฌ ์ฌํญ์ด ์ถ๊ฐ๋์๋ค.
๊ทธ๋์ createdTime ํ๋๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค.
@Column(name = "created_time", updatable = false)
private LocalDateTime createdTime;
updatable์ false๋ก ๋์ด ์์ ์ ๋ชปํ๊ฒ ๋ง์๊ณ , LocalDateTime.now()
๋ฅผ ํตํด์ ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ ์์ ์ ์ด๊ธฐํ๋ฅผ ํด์ฃผ์๋ค.
๊ทธ๋ฆฌ๊ณ ํ์ @createdDate
๋ฅผ ์๊ฒ ๋์๋๋ฐ, ์ด ์ ๋
ธํ
์ด์
์ ์ฌ์ฉํ๋ฉด ๋ฐ๋ก ์ด๊ธฐํ ํด์ค ํ์ ์์ด ์๋์ผ๋ก ์์ฑ ์๊ฐ์ด ์ ์ฅ๋๋ค.
@createdDate
๋ฅผ ์๊ฒ ๋๋ฉด์ ์์ฐ์ค๋ฝ๊ฒ Auditing์ด๋ผ๋ ๊ฐ๋
์ด ์๋ค๋ ๊ฒ๋ ์๊ฒ ๋์๊ณ , ์ด์ ๋ํด ๊ณต๋ถํ ๋ค์ ์ฝ๋๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ฆฌํฉํ ๋งํ ์์ ์ด๋ค.
@Getter
@MappedSuperClass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseTimeEntity {
@CreatedDate
@Column(updatable = false)
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime modifiedDate;
์์ง SpringDataJPA๊ฐ ์๋ JPQL์ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ ๋ ฌ ๊ธฐ๋ฅ์ jpql๋ก ์ง์ ์์ฑํ๋ค.
์ง์ ์์ฑํ String jpql = "select p from Post p";
์
jpql += " order by p.createdTime desc";
๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ์์ผ๋ก ์ ๋ ฌ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค.
๊ฒ์ ๊ธฐ๋ฅ๋ jpql์ ์ฌ์ฉํด์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค.
public List<Post> findAll(PostSearch postSearch) {
String jpql = "select p from Post p";
if (postSearch.getTitle() != null) {
jpql += " where p.title like :title";
}
jpql += " order by p.createdTime desc";
TypedQuery<Post> query = em.createQuery(jpql, Post.class);
if (postSearch.getTitle() != null) {
query.setParameter("title", "%" + postSearch.getTitle() + "%");
}
return query.setMaxResults(100).getResultList();
}
๊ฐ๋ตํ๊ฒ ์ค๋ช
ํ์๋ฉด, ์ฐ์ ์ปจํธ๋กค๋ฌ์์ @RequestParam
์ ํตํด ํค์๋๋ฅผ ๊ฐ์ ธ์จ ๋ค์ PostSearch ํด๋์ค์ title ํ๋์ ๊ฐ์ ์ฃผ์
ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋์ PostSearch์์ title์ ๊ฐ์ ธ์ setParameter()
๋ก ํ๋ผ๋ฏธํฐ ๋งคํ๊น์ง ํด์ฃผ์๋ค.
์ฒ์์๋ ์ฟผ๋ฆฌ์ limit์ ์ง์ ์์ฑํ์๋ค.
ํ์ง๋ง ์ด๋ ๊ฒ ๋ฌธ์์ด์ ์ง์ ์์ฑํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ฉด, ์คํ๊ฐ ๋ฐ์ํ์ ๋ ์ด๋์ ์๋ฌ๊ฐ ๋ฐ์ํ๋์ง ์ฐพ๊ธฐ๊ฐ ์ด๋ ต๋ค๋ ๋จ์ ์ด ์กด์ฌํ๋ค.
๋ฐ๋ผ์ setMaxResults()๋ฅผ ํตํด์ ๊ฐ์ ์ ํ์ ๊ฑฐ๋ ๋ฐฉ์์ผ๋ก ์์ ํ์๋ค.
์ด๋ ๊ฒ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด, ์คํ๊ฐ ๋ฐ์ํ์ ๋ IDE์์ ์ปดํ์ผ ์๋ฌ๋ฅผ ๋ฐ์์ํค๊ธฐ ๋๋ฌธ์ ์ด๋์ ์๋ฌ๊ฐ ๋ฐ์ํ๋์ง ์ฝ๊ฒ ์ฐพ์ ์ ์๊ฒ ๋๋ค.
"๊ฐ๋ฐ์์๊ฒ ๊ฐ์ฅ ์ข์ ์๋ฌ๋ ์ปดํ์ผ ์๋ฌ์ด๋ค."
jpql์ ์ง์ ์์ฑํ๋ฉด์ ๊ตฌํํ๋ค๊ฐ ์๋ฌ๊ฐ ๋ฐ์ํ์ ๋ ๋ฐ์ ์ง์ ์ ์ฐพ๋ ๊ฒ์ด ์ฝ์ง ์์๋ค.
SpringDataJPA๋ฅผ ์ฌ์ฉํ ์ฝ๋๋ฅผ ๋ดค๋๋ฐ, ํ์คํ ์ฝ๋๊ฐ ํจ์ฌ ๊ฐ๋จํด์ง๋๋ฐ๋ค๊ฐ ๊ฐ๋
์ฑ๊น์ง ์ข์์ง๋ค๋ ์ฅ์ ์ ๊นจ๋ซ๊ฒ ๋์๋ค.
SpringDataJPA์ ์์ฑ ์๊ฐ์ ๋ํ ๊ฐ๋ ์ ๋น ๋ฅธ ์์ผ ๋ด๋ก ํ์ตํ๊ณ , ๋ฆฌํฉํ ๋งํด์ผ๊ฒ ๋ค.