@Transactional 잘 사용해보기 @Transactional 을 사용하고는 있지만.. 잘 모르고 저스트 그냥 사용하고 있다 보니 간단하게라도 탐구를 해볼 필요성을 느끼게 되었다. 그래서.. 오늘도 어김없이 탐정놀이를 해보려고 한다. 🔍🤠🔎 . 시작하기에 앞서, 트랜잭션 구성은 @Configuration, XML 기반 설정 말고도 애노테이션 기반으로 설정할 수 있다. 주로 애노테이션 기반으로 많이 사용되는 것 같다. 애노테이션 방식은 선언적 트랜잭션이라고 불리고, 선언 시 트랜잭션 기능이 적용된 프록시 객체가 생성된다. . @Transactional으로 생성된 프록시 객체는 @Transactional이 적용된 메소드가 호출될 경우, PlatformTransactionManager를 사용하여 트랜잭션..
Java PlayGround NEXTSTEP 자바 플레이그라운드 with TDD, 클린 코드에서 새롭게 배우고 깨닫게 된 내용들을 기록한 글입니다. . Part01. 단위테스트, TDD . 시작 소트웍스 앤솔러지에서 말하는 객체 지향 프로그래밍을 잘하기 위한 9가지 원칙 한 메서드에서 오직 한 단계의 들여쓰기만 허용하자 else 예약어를 사용하지 말자. 모든 원시 값과 문자열을 포장하자. 한 줄에 점을 하나만 찍자. 축약과 같이 줄여 사용하지 말자. 모든 엔티티를 작게 유지하자. 3개 이상의 인스턴스 변수를 가진 클래스를 쓰지 말자. 일급 컬렉션을 사용하자. getter/setter/프로퍼티를 사용하지 말자. 단위 테스트 JUnit는 프로덕션 코드를 편리하게 테스트할 수 있도록 도와준다. JUnit 5...
JUnit 5 Parameterized Tests Guide to JUnit 5 Parameterized Tests를 통해 Parameterized Test를 학습하며 정리한 글입니다. . 테스트 코드는 만들었는데 여러 값으로 테스트를 해보고 싶은 적이 있지 않은가?! 😯 코드가 중복되는 건 싫은데.. . 그렇다면 Parameterized Test를 사용해볼 때이다.🕵 Parameterized Test는 서로 다른 인수로 동일한 테스트를 여러 번 실행해볼 수 있는 유용한 기능이다. 일반 테스트와 다른 점은 @ParameterizedTest를 사용하는 것과 @ValueSource에 인수를 정의해주는 것뿐! Dependencies pom.xml org.junit.jupiter junit-jupiter-par..
Java Code Conventions 코드를 작성하면서 대부분 이런 고민을 해보았을 것이다. "여기를 띄어 써야 깔끔할까?", "여기는 줄 바꿈을 해야 깔끔할까?" 등등.. 맞춤법이 틀린 것 처럼 코드가 찝찝하게 느껴진 적이 있지 않은가!! . 그렇다면.. 코우드 컨붼션(Code Conventions)이 필요한 때이다. ✏✏✏ . Google Java Style Guide 를 읽어보면서 참고할만한 내용만 간략하게 정리해 보았다. 캠퍼스 핵데이 Java 코딩 컨벤션 도 참고해보면 좋을 듯하다. . 추가로 Code Convention에 참고가 될만한 Clean Code 내용들을 간략하게 남겨보았다. Source File 모든 소스 파일은 UTF-8로 인코딩하기 Unix는 새 줄 문자를 LF(Line Fee..
Introduction to AssertJ dependencies dependencies { testImplementation "org.junit.jupiter:junit-jupiter" testImplementation "org.assertj:assertj-core" } single static import를 통해 test class를 쉽게 추가할 수 있다. import static org.assertj.core.api.Assertions.*; 참고로, assertThat() 메서드만으로는 아무것도 증명할 수 없다. 증명의 대상을 설정하는 정도로 생각하면 좋을 것 같다. assertThat(anything); Object isEqualTo() 메서드는 객체의 참조를 비교한다. 따라서, 객체의 필드를 비..
[NoSQL] MongoDB 탐구하기 회사에서 MongoDB를 사용하는 프로젝트가 있다. 사실 저장, 수정, 조회, 삭제 api 활용이 전부인지라.. 그냥.. 사용하고 있었다. It's just... 😲 😨 😱 . 지금은 MongoDB를 효율적으로 사용하기 위해 몽고와 친해져야 할 때이다.🤭 🍬 🍭을 챙겨서 몽고의 마음을 사로잡아보자. . 참고로, MongoDB와 이제 막 친해지기 위한 단계로 깊은 내용은 담지 않았다...😢 깊은 내용은 몽고와 더 친해지면 준비할 예정이다.🧐 . 참고로, kciter 님의 MongoDB 이해하기 글이 많은 도움이 되었다. kciter 님 글과 MongoDB Manual을 참고하여 간략하게 정리해보았고, 자세한 설명은 각 링크를 참고해보면 좋을 것 같다. NoSQL Not..
Message Queue (Apach Kafka) A long~ time ago 는 아니고, 사알짝 머언 옛날부터.. 🐅 많은 기업에서 Message Queue 를 아주 활발하게 사용했다고 하는데.. Message Queue가 뭣인지 한번 탐구해 보려고 한다. 🕵 다들 돋보기 들고 따라와 보시게! 🤠🔎 . 참고로, 다양한 Message Queue 중 높은 처리량과 좋은 성능을 지닌 Kafka 중심의 설명이 될 것 같다.🧐 최범균님의 kafka 조금 아는 척하기 영상이 정말 많은 도움이 되었다. 메시지 지향 미들 웨어(Message Oriented Middleware: MOM)는 비동기 메시지를 사용하는 다른 응용 프로그램 사이에서의 데이터 송수신을 의미 MOM을 구현한 시스템이 메시지 큐(Message ..
JPA 양방향 관계 Entity 저장하기 인간은 습관의 동물이다. 습관에는 대부분 좋은 습관이 많지만 그중에 나쁜 습관도 있다. 그것은 바로.. 원리를 모르고 개발하는 습관이다. 😯 . '요로케할 때 이렇게 했었으니까, 이렇게 해야지~!' 는 더 이상 통하지 않는다.. 사이드 프로젝트를 하며 깨닫는 부분이 많다. . 습관처럼 몸에 익어버린 방법들이 갑자기 뇌 정지가 오며 멈춰버렸을 때, 머릿속이 하얘지고 말았다. 적어도 왜 이렇게 개발했었는지 원리를 알았더라면, 이럴 일은 없었을텐데.. 정말 기본적인 것들 앞에서 갑자기 띠용🙄 할 때가 있다. (최근에 습관성 타이핑으로 노트북 비밀번호 까먹은 거는 진짜 비밀..🤫) . 본론으로, JPA 양방향 관계 Entity를 저장해보자. Situatio..