Entity에서 일급 컬렉션을? 최근 프로젝트를 진행하던 중 두 Entity를 양방향으로 묶고, 로직을 추가하던 중에 @OneToMany 부분의 List를 가공해야 하는 일이 생겼습니다. 컬렉션을 가공할 일이 생기면 가장 먼저 떠오르는 것은 일급 컬렉션인데요. 지금까지 그럴 일이 없어서인지 한번도 엔티티 안에서 일급 컬렉션을 사용해 본 적이 없었다는 것을 깨달았습니다. 도메인 레이어를 풍성하게 상황은 다음과 같았습니다. @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity public class Orders extends BaseEntity { // ... @OneToMany(mappedBy = "orders", cascade = Casc..
시작의 설렘 프리코스 첫 기억은 간절한 마음으로 한 달이라는 시간을 보냈던 프리코스부터 시작한다. 1차 지원을 합격한 후 3월 말부터 4월 초까지 3주 간의 프리코스에 매진했다. 당시에 국비지원 학원을 다니고 있었는데, 원하던 교육 분위기와 달라 나에게 잘 맞지 않는 수업과 여러모로 힘들었던 팀 프로젝트는 테크코스가 아니면 안될 것 같다는 간절한 마음을 더욱 강하게 만들어주었다. 밥을 급히 먹고 나서도 10분 밖에 남지 않는 짧은 점심시간에 청계천을 매일 같이 산책했다. 산책하면서 끊임없이 되뇌었다. 테크코스..테크코스.. 주어진 미션에 나의 최대와 최선을 담아내기 위해 수십 번을 고민했다. 어떻게 하면 채점하시는 분들이 코드를 통해 나를 가감 없이 읽을 수 있을까? 지금 다시 찾아보니 매번 이메일로 제..
Table Of Contents 왜 나만 없어 TOC 블로그를 티스토리로 이전하고 나서, 마크다운 편집기 빼고 다 좋은데 다른 블로그들이 부러웠던 점은 바로 글 옆에 생기는 소제목 목차였습니다. 많은 분들과 마찬가지로, 작성의 편리함과 비교적 빠른 생산성 때문에 마크다운으로 글을 자주 작성하는 편인데요. 소제목들을 쭉 모아서 만든 글 목차는 휑한 블로그 사이드 바도 채워주고, 지금 사용자가 글의 어디쯤을 읽고 있는지, 얼마나 이 재미없는 글이 많이 남았는지 알려주는 좋은 기능이라 생각했습니다. 클릭하면 해당 위치로 글 이동도 손쉽게 할 수 있구요. 다른 블로그 플랫폼들을 보면, github.io에도 이런게 종종 보이고, velog에도 보이고, 세상 모두가 다 가지고 있는데 티스토리만 없는 겁니다. 찾다보..
이전 글 : [토비의 스프링] 6. AOP (1) 지금까지 해왔던 작업은 비즈니스 로직에 반복적으로 등장하는 트랜잭션 코드를 투명하게 분리해내는 것이었다. 투명하다는 것은 투명한 유리를 사이에 둔 것처럼, 부가기능을 적용한 후에도 기존 설계와 코드에는 영향을 주지 않고 메소드가 호출되는 과정에 다이내믹하게 참여해서 부가적인 기능을 제공해주도록 만들었다는 것이다. 자동 프록시 생성 자동 프록시 생성 빈 후처리기 투명한 부가기능을 적용하는 과정에서 발견됐던 거의 대부분의 문제는 제거했다. 타깃 코드는 깔끔하고, 부가기능은 한 번만 만들어 모든 타깃과 메소드에 재사용이 가능하고, 타깃의 적용 메소드를 선정하는 방식도 독립적으로 작성할 수 있도록 분리되어 있다. 하지만 아직 한 가지 해결할 과제가 남아 있다. ..
AOP AOP는 IoC/DI, 서비스 추상화와 더불어 스프링의 3대 기반기술의 하나다. AOP를 바르게 이용하려면 OOP를 대체하려고 하는 것처럼 보이는 AOP라는 이름 뒤에 감춰진, 그 필연적인 등장배경과 스프링이 그것을 도입한 이유, 그 적용을 통해 얻을 수 있는 장점이 무엇인지에 대한 충분한 이해가 필요하다. 스프링에 적용된 가장 인기 있는 AOP의 적용 대상은 바로 선언적 트랜잭션 기능이다. 트랜잭션 코드를 메소드로 분리 5장의 서비스 추상화 기법을 적용해 스프링이 제공하는 깔끔한 트랜잭션 인터페이스를 썼음에도, 비즈니스 로직이 주인이어야 할 메소드 안에 이름도 길고 무시무시하게 생긴 트랜잭션 코드가 더 많은 자리를 차지하고 있다. public void upgradeLevels() throws E..