본문 바로가기

728x90

전체 보기

(112)
[Spring과 DB] 5-2 Spring 에서의 예외 추상화 * Spring 에서의 예외 추상화 스프링에서는 데이터 접근 예외 계층을 제공해준다. 이는 Error Code 처럼 종속적이지 않다. 위를 보면 개발을 하면서 많이 봤던 Exception 들의 모습들을 확인할 수 있다 (DataIntegrity, NonTransient, Grammer Exception 등등). 데이터 접근 계층에서의 최상단 예외는 DataAccessException.class 이며, 모두 RuntimeException 인 것을 확인할 수 있다. 모든 데이터 계층 예외는 두가지로 분류한다. 1. Transient - 동일한 SQL 을 다시 시도했을 때 성공할 가능성이 어느정도 있음. 일시적인 Exception 이라는 뜻. 2. NonTransient - 같은 시도를 하면, 똑같은 예외가 ..
[Spring과 DB] 5-1 Spring 에서의 예외처리 지원 우선 Java 기본기 중 체크 Exception 과 언체크 Exception (Runtime Exception) 의 차이에 대해서는 인지한 상태로 내용에 들어간다. 체크 예외는 코드가 지저분해지는 문제도 있지만, 가장 큰 문제는 유지보수 관점에서 처리하지도 못할 Exception 들을 처리해주는 ControllerAdvice 단까지 끌고 올라간다는게 Spring 에서의 체크 Exception 사용의 문제였다. 하지만 JDBC 기술을 사용한다면, SQLException 은 당연히 발생할 수 밖에 없다. 다음을 보자. 다음은 트랜젝션 동기화를 지원해주기 위해 DataSourceUtils 를 사용한 Repository 이다. public class MemberRepositoryV3 { private final..
[문제기록] DataJpaTest 시 NoSuchBeanDefinitionException / UnsatisfiedDependencyException 새로운 프로젝트에서 Query 가 들어있는 Repository 단을 Test 해야 해서 진행을 해보았다. 일반 Repository 의 모습이라 다음 정도 수준이였다. public interface MemberRepository { Optional findByUsername(String username); } @Repository @RequiredArgsConstructor public class MemberJpaRepository implements MemberRepository{ private final EntityManager em; private final JPAQueryFactory queryFactory; ... @Override public Optional findByUsername(Strin..
[단위테스트] Mocking 을 사용한 단위테스트의 관점에 대하여 회사에서 단위 테스트를 하다가, SE 라는 부서 (개발을 하기보단 SW 인프라, 설계, TC 지원 등의 업무를 하는 곳) 에서 테스트에 대한 지적(?) 을 많이 받았다. 사실 따지고 보면 관례적인 것 vs 이론적인 것 느낌이 좀 있긴 했는데, 관점의 차이가 확실히 존재하는 것 같았다. 이번엔 그게 어떤 부분이였는지 살펴보자. Group 이라는 Entity, Member 라는 Entity 가 있고, GroupMember 라는 Entity 를 통해 N:N 관계를 맺고 있는 상황이다. 이 때, Group 의 필드 정보들을 수정하기 위한 요청을 보내주는 상황이다. Controller 는 생략하고, Business Logic 인 Service 부분을 살펴보자. public Group updateGroup(Grou..
[단위테스트] Spring Service 단을 테스트해보자 일반적인 Domain 에서 Entity 생성을 Test 해보기 위한 과정을 담아보자 (출처 하단). 간단한 예제를 실무에서 사용하는 방식과 최대한 엮어본 듯 했다. 참고로 Repository 단은 단순 Data Jpa 사용했고, 필요한 필드에 대해서 네임드 쿼리 생성되도록 해주었다. 우선 User 는 다음과 같다 1. User.java @Entity @Getter @NoArgsConstructor(access = AccessLevel.PRIVATE) public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String username; private String password; p..
[UML / OOP] Class 간 관계에 대하여 SW 설계에서 UML 을 공부하다보면 등장하는 5가지 Class 관계가 있다 (OOAP). 이 Class 관계도는 SW 를 설계할 때 어떤식으로 SW를 설계할지에 대해서 확실한 그림을 잡아주기 때문에 상당히 중요한 역할을 하고, 커뮤니케이션에서도 중요한 역할을 하는 것 같다. 개발 실무적인 영역으로만 학습을 많이 했다면 처음 들어보는 관계일 수도 있지만 절대 어려운 개념들은 아니니, 한 번 이해해보는 기회가 되면 좋을 것 같다. 이제 배울 내용은 SW를 구현하기 전 설계 단계에서 Class 간 관계를 설계해 놓을 때 많이 사용하고 표시해두는 관계이다. 실무적인 공부만 하다가 다음과 같은 정보를 많이 접하는 것 같았다. Class 들이 서로 의존한다 == Class 코드 안에 다른 Class 가 등장하여 ..
API vs Library .. (API 와 Library에 대해) 원래는 안헷갈린다 생각했으나 생각할수록 헷갈리는 이 녀석들에 대해서 한번 생각해보려 합니다. 약간 정확하게 뭘 설명한다기 보단, 제 생각을 처음부터 끝까지 쭉 정리해 놓은 글입니다 ..... API (Application Programming Interface) 라는 단어는 처음 보면 생각이 많아지는 단어입니다. 개발자들이 Application 을 Programming 할 때 사용할 수 있는 Interface 란 건지... Programmed 된 App 을 사용하고 싶을 때 사용하는 Interface 란 건지 ... .. 근데 Interface 라는건 구현체가 없다는 건지 ... 저는 무지성 개발을 많이 해본터라, 당장 물어본다면 API 는 두번째 생각이 맞는 것 같다는 생각이 강했습니다. 한 팀에서 F..
프로그래밍 언어의 종류에 대해 (스크립트? 컴파일러? 객체지향?) 개발쪽 일을 하다보면 정말 별의 별 언어를 다 듣는데, 최근에 새로 접한 내용이 있어서 이쪽에 대해 알아보다가 정리하고 싶어서 정리를 하게 됐습니다. 정말 쉬운 기본 내용일텐데, 저는 몰랐어서.... ㅠㅠ 한번 정리해보게 되었습니다. 참고로 많은 블로그들이 프로그래밍 언어 종류에 대한 글을 봤는데, 내가 원하는(?) 방향의 정리가 없었던 것 같습니다. 우선 위에서 말한 새로 접하게 된 내용은 다음과 같습니다. 파이썬은 스크립트언어이다 사실 이거 보고 당연하지.. 라고 하시는 분들은 안읽으셔도 됩니다! 하지만 그.. 그렇지? 아닌가..? 싶으신 분들은 한번 읽어보시면 도움이 되실 것 같습니다! 저는 후자였습니다. 정말 듣자마자 "뭔소리지?" 했습니다.... "파이썬은 객체지향 언어 아닌가??" 이렇게 해서..
[API 활용] Firebase Dynamic Link + Android 개발 - 개념 및 설정편 이번 포스트는 Firebase 에서 제공하는 Dynamic Link 에 대해서 포스팅을 하게 되었습니다. 모이밍 앱 팀에서 모임 초대 및 정산활동 요청 등을 보내기 위해 Kakao Template 을 사용하며, Template 에 Dynamic Link 를 실장하여 앱의 확장성을 넓히는 개발을 진행하게 되었어요. 이번 포스트는 모이밍이 출시된 Android 기반으로 Firebase 및 Kakao 오픈API를 사용하며, Firebase 및 Kakao SDK 세팅이 모두 완료되어있는 상태에서 포스팅을 시작하겠습니다. 해당 부분이 필요한 분들은 설명 잘 해주신 포스팅이 많으니 다른 포스트를 참고해 주세요! 먼저 이번 포스트를 쓰게 된 계기를 말씀드리면, Firebase Dynamic Link를 공부함에 있어서..
[운영체제 -6] Memory Management 지금까지 운영체제에 대해서 배운 것들은 Interrupt, Process의 작동 방식, Process 관리 및 IPC, CPU 스케줄링, 공유자원 동기화 등에 대해서 배웠다. 첫 포스트에서 잠깐 등장한 Memory 에 대해서 더 자세히 알아보자. 우선 기억을 해야할 것은 프로그램을 execute 하는 순간 Memory 에는 해당 프로세스에 대한 주소 공간 (Address Space)이 할당되고, 이 공간에 프로세스가 필요한 정보 및 지시 사항들을 저장하며 사용한다고 했다. Memory란 무엇이고, 그 안에서 어떤 일이 일어나는 걸까? Memory 일반적으로 운영체제 상 Memory 라고 말하면 주기억장치 (RAM)을 말하고, 이 포스트에서 다룰 내용도 RAM의 동작에 대해서 다룰 것이다. 첫 포스트에서 ..