늦은 프로그래밍 이야기

221220 TIL (@OrderBy) 본문

내일배움캠프/TIL, WIL

221220 TIL (@OrderBy)

한정규 2022. 12. 21. 01:08

TIL

오늘 배운 내용 정리

Spring

 - 개인 과제를 어느정도 끝마치고 시간이 적당히 남아 스프링 관련 내용을 정리해보았다.

2022.12.21 - [내일배움캠프/Spring] - DI (의존성 주입)

 

DI (의존성 주입)

DI란? DI는 Dependency Injection의 줄임말 의존성 주입, 의존관계 주입 Dependency (의존관계) “A가 B를 의존한다”는 표현의 의미 의존대상 B가 변하면, 그것이 A에 영향을 미친다. 즉, B의 기능이 추가 또

jk891113.tistory.com

 

2022.12.21 - [내일배움캠프/Spring] - Annotation

 

Annotation

Annotation이란? 사전적 의미로 주석이라는 뜻. 자바에서는 코드 사이에 주석처럼 쓰여서 특별한 의미, 기능을 수행하도록 하는 기술. 프로그램에게 추가적인 정보를 제공해주는 메타데이터(meta dat

jk891113.tistory.com

 

 - 개인 과제를 하다가 막히는 부분이 있어서 어노테이션을 검색해서 고뇌의 시간은 길었지만, 비교적 간단하게 해결하였다.

@OrderBy

  • 데이터베이스의 ORDER BY 절을 사용해서 컬렉션을 정렬한다.
  • 순서용 컬럼을 매핑할 필요도 없고, @OrderBy는 모든 컬렉션에 사용할 수 있다.

다음과 같이 엔티티의 필드를 대상으로 오름차순과 내림차순을 지정하여 조회할 수 있다.

@Getter
@Entity
@NoArgsConstructor
public class Posting extends TimeStamped {
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Long id;

	@Column(nullable = false)
	private String title;

	@Column(nullable = false)
	private String contents;

	@ManyToOne
	@JoinColumn(nullable = false)
	private User user;

	@OrderBy(value = "modifiedAt desc")
	@JsonManagedReference
	@OneToMany(mappedBy = "posting")
	private List<Comment> commentList = new ArrayList<>();

[참고]

  • 하이버네이트는 Set에 @OrderBy를 적용해서 결과를 조회하면 순서를 유지하기 위해 HashSet 대신 LinkedHashSet을 내부에서 사용한다.

출처 : [JPA] @OrderBy - 리스트에 순서 지정하기

 

[JPA] @OrderBy - 리스트에 순서 지정하기

@OrderBy @OrderColumn이 데이터베이스에 순서용 컬럼을 매핑해서 관리했다면, @OrderBy는 데이터베이스의 ORDER BY 절을 사용해서 컬렉션을 정렬한다. 따라서 순서용 컬럼을 매핑할 필요도 없고, 또한 @Ord

ttl-blog.tistory.com


오늘 배운 것

 - 개인 과제를 하다가 Posting과 양방향 연관관계인 Comment의 조회 부분에서 Posting을 조회하면 같이 조회되게 되어 있어서 내림차순으로 정렬을 하는데에 어려움을 겪었다. 따로 떼어내서 조회도 해보고, 조회할 때 Repository에서 불러내서 Posting 아래에 붙여보기도 하고 했지만, 좀처럼 해결되지 않았고, 주변 수강생들이랑 같이 고민해보아도 해결이 되지 않으려는 찰나, 어노테이션을 검색해보았고 우연히 @OrderBy에 대해 보게 되면서 의외로 간단하게 해결할 수 있는 문제였다.

 

 - 개인 과제를 어느정도 마무리 짓고, 그동안 못했던 이론 정리를 해보았다. 이번에 어노테이션으로 고뇌는 길었지만, 해결은 쉽게 한 만큼 어노테이션에 대해 좀 더 자세하게 알고 싶어서 어노테이션에 대해 정리를 해보았다. 검색해보고 정리하면서 어노테이션을 직접 작성할 수 있는 것을 처음 알았고, Spring, Lombok, JPA 관련 대표적인 어노테이션들도 알게 되었다.

 

 - 어제 노션으로 정리하면 깔끔하게 잘 정리되고 찾아보기도 쉽다는 말을 들어서 오늘부터 노션으로 정리 해보았다. 블로그에도 정리글을 올리지만, 노션으로 정리하니 페이지 내에 페이지가 들어가고 연관성을 연결하기가 보다 쉬워서 정보를 찾아볼 때 좋을 것 같다는 생각이 들었고, 깔끔하게 정리가 가능해서 보다 재밌게 정리할 수 있었던 것 같다. 앞으로는 정리글을 작성할 때 블로그와 노션에 이중으로 작성해야 할 것이다.


'내일배움캠프 > TIL, WIL' 카테고리의 다른 글

221222 TIL  (0) 2022.12.23
221221 TIL  (0) 2022.12.22
221219 TIL (알고리즘, 개인과제)  (0) 2022.12.20
7주차 WIL  (0) 2022.12.18
221216 TIL  (0) 2022.12.16
Comments