- Spring Core 마스터하기 1starryeyeSpring Core 기본기 개인학습 필기본 업로드 스프링의 핵심 기술을 정리하였다. 대략적인 설명 기술 //SpringCore1 스프링의 전반적인 활용도 //SpringCore2 스프링 빈, 스프링 컨테이너, 컴포넌트 스캔, 의존관계 자동 주입, 빈 생명주기 콜백, 빈 스코프,
- 2022-07-20 02:36:52
- DTO는 어느 패키지에 존재해야 할까?starryeyeDTO란 Data Transfer Object의 약자로 데이터 전송 객체이다. 데이터를 layer간 전달하는 용도로 사용된다. 참고로 VO라고 Value Object가 있는데 값자체를 표현 하기 위한 용도이다.. 값이 불변이다는 것이 특징이다. 값만 같다면 같은 객체라는 것이 보장되어야 하므로 hashcode, equals 메서드를 오버라이딩 하여 구현해주자. 본론으로 돌아와서.. DTO는 어느 패키지에 위치 시켜야 할까에 대해 알아보자. 위 그림은 일반적인 웹어플리케이션의 Contoller에서 Repository 까지의 계층을 나타낸다. 각 계층간 데이터를 전달하기 위한 DTO들이 보인다. Controller는 Service에 의존적이고.. Service는 Repository에 의존적이다. 일반적으로 ..
- 2022-07-17 02:37:13
- JDBC 10starryeye지금까지 내용으로는.. service 계층의 순수함이 유지 하게 되었고.. repository 계층에서는.. JDBC를 사용하기에.. 다른 메서드 임에도.. 동일한 반복코드가 많다.. 이를 해결해보자. 반복코드 1. 커넥션 조회, 커넥션 동기화 2. preparedStatement 생성 및 파라미터 바인딩 3. 쿼리 실행 4. 결과 바인딩 5. 예외 발생 시, 스프링 예외 변환기 실행 6. 리소스 종료 템플릿 콜백 패턴으로 해결 JdbcTemplate JdbcTemplate을 사용하면.. 위 반복코드가 대부분 사라지며, 커넥션 동기화, 스프링 예외 변환기도 자동으로 실행 해준다. 기본적으로 SQL Mapper 방식이다.
- 2022-07-16 01:58:28
- JDBC 9starryeye직전 포스팅에서 repository layer에 특정 DB에 종속적인 코드가 들어가 버렸다. e.getErrorCode() == 23505 해당 코드는 H2 한정이다.. 지금까지 특정 DB에 따른 코드 분리는 필요 없었지만.. DataSource가 라이브러리에 등록된 DB 드라이버, DB접근 URL 및 부가정보(이름, 비밀번호 등)로 알아서 커넥션 획득해줬기 때문.. 예외처리 때문에 코드 분리를 하거나.. 코드가 지저분해질 위기에 처했다. 해결.. 스프링은 이미 모든 DB에러 상황에 맞는 예외를 만들어 놨으며.. -> 스프링 데이터 접근 예외(DataAccessException) 계층 DB에 따른 error code들을 매핑하여, 동일한 원인일 경우 일관된 예외로 변환 가능하다. -> 스프링 예외 변환기..
- 2022-07-16 01:51:25
- JDBC 8starryeye복구가 가능한 예외는 어떻게 처리하면 좋을까.. 예를 들어서.. 키값이 중복이라 DB에서 예외를 던지는 경우를 생각해보자.. 개발자는 이를 애플리케이션 로직상 해결할 수 있다. (기존 키값에서 +1 정도로 해결하는 사양일 경우) DB에서는 SQLException을 발생시키고 던진다. 개발자는 중복 키에 의한 예외인 것을.. e.getErrorCode() 로 알 수 있다. 중복 키 처리에 대한 로직은 서비스 계층에 들어가야 하는데... 이를 처리하는 조건문을 위해 서비스 계층에 SQLException을 던지면 .. 또.. OCP 위반이다. 아래 방법을 참고 하자. repository에서 해결해보자.. repository 구현체 코드 중 일부이다. DB에서 발생된 SQLException 예외 중, 중복 ke..
- 2022-07-16 00:41:33
- JDBC 7starryeyehttps://starryeye.tistory.com/52 [Java 정리] 예외 Java의 예외에 대해 알아보자. java의 예외도 객체이다. 따라서 상속 구조를 가지며, 계층이 존재한다. Java 예외 계층 Throwable 최상위 예외이며 Object를 상속 받고있다. 개발자는 Throwable 예외를 catch starryeye.tistory.com 위 포스팅을 읽고 시작하자.. 지금까지의 포스팅에서 repository 구현체 layer 에서 사용할 DB를 연동하고.. 의존성을 가지는 것으로 볼 수 있다. 다음 두가지 문제에 대해 포스팅 하겠다. 1. 복구 불가능한 예외 2. 의존 관계에 대한 문제 복구 불가능한 예외 DB에서 발생하는 대부분의 예외는 처리가 불가능하다. SQLException을 ..
- 2022-07-16 00:11:56
- [Java 정리] Exception, ErrorstarryeyeJava의 예외에 대해 알아보자. java의 예외도 객체이다. 따라서 상속 구조를 가지며, 계층이 존재한다. Java 예외 계층 Throwable 최상위 예외이며 Object를 상속 받고있다. 개발자는 Throwable 예외를 catch로 잡으려고 하면 안된다. -> 최상위 예외를 잡으면 그 하위 예외도 같이 잡힌다. -> 아래의 Error 예외도 같이 잡히기 때문이다. Error 언체크 예외이다. 애플리케이션에서 복구 불가능한 시스템 예외이다. 따라서 개발자는 Error 예외를 catch로 잡으려고 하면 안된다. Exception 체크 예외이다. Exception 예외와 하위 예외는 "컴파일러가 체크"하는 체크 예외이다. (아래의 RuntimeException은 컴파일러가 잡지 않는다.) Runtime..
- 2022-07-15 23:34:34
- [C++] move와 copystarryeyeC++ 11의 개념이다. 해당 개념 포스팅은 시간적 여유가 생긴다면.. 추후 진행할 예정이다.. 포스팅 할 개념 깊은 복사와 얕은 복사 rvalue, lvalue 와 그에 따른 복사 생성자, 이동 생성자 와 복사 할당 연산자, 이동 할당 연산자 std::move std::vector의 push_back, emplace_back 함수 좋은 포스팅 https://docs.microsoft.com/ko-kr/cpp/cpp/move-constructors-and-move-assignment-operators-cpp?view=msvc-170 https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=jidon333&logNo=60211056131
- 2022-07-15 20:04:46
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)