본문 바로가기

전체 글147

JdbcTemplate를 사용하는 이유 결론 JbdcTemplate 장점 코드 중복 감소 및 재사용성 증가 추가 및 확장이 쉬움 1. 기존 JDBC의 사용 드라이버로딩 → DB연결 → SQL 작성/전송 → 자원해제 Connection 연결 쿼리 작성 후 PreparedStatement 실행 결과 처리 (resultSet) Connection 닫기 2. JdbcTemplate 사용 JdbcTemplate에 드라이버 로딩, DB연결, 자원해제 기능을 맡긴다 → 개발자는 SQL작성/전송에 집중할 수 있다! jdbcTemplate.query(인자, 인자); jdbcTemplate.query(인자, 인자) jdbcTemplate의 빈 등록 3. DataSource란? JDBC 명세의 일부분이며 일반화된 연결 팩토리 DB와 관계된 Connection정보.. 2022. 5. 8.
[Spring] DTO의 사용 범위 DTO란 계층간 데이터 교환을 위해 사용하는 객체 God Class에 대한 용어 정리 크기가 커야 god class인 것은 아니다. 여러 Layer에 걸쳐 사용되거나, 2개 이상의 책임을 가진다면 이는 god class이다. 1. Domain과 DTO를 분리해야 하는 이유 하나의 거대한 범용 class를 여러 Layer에 걸쳐 사용하게 된다. 특정 상황에서 특정 값만이 존재하는 필드 member 정보를 가져오지 않고 card 정보만 가져요는 쿼리가 별도로 존재한다. 하지만, member 필드까지 참고해야 한다. 시스템에 항상 완벽하게 초기화 된 상태의 객체만 존재하기 어렵다. 초기화되는 시점과 사용되는 시점이 필드군마다 제각각이기에 유지보수가 어렵다. 다른 도메인 책임까지 넘보게 된다. 2. 해결책) g.. 2022. 5. 7.
[Java] @Transaction(readOnly=true)을 사용하면 성능이 향상되는 이유 결론 엔티티를 읽기 전용으로 조회하면, 변경감지를 위한 스냅샷을 유지하지 않아도 되고, 영속성 컨텍스트를 플러시하지 않아도 돼 성능을 최적화 할 수 있다. 사용방법 트랜잭션을 읽기 전용 모드로 설정할 수 있다 @Transaction(readOnly=true) 성능 향상 이유 1. 스칼라 타입(단일데이터)으로 조회 (엔티티로 조회하지 않음) 영속성 컨텍스트가 결과를 관리하지 않는다. 엔티티로 조회한다면? 영속성 컨텍스트에 관리됨 영속성 컨텍스트 : 엔티티를 영구 저장하는 환경. 어플리케이션과 DB 사이에서 객체를 보관하는 가상의 DB역할. 영속성 컨텍스트는 변경 감지를 위해서 스냅샷 인스턴스를 보관한다. (많은 메모리 사용) 2. 읽기 전용 쿼리 힌트 사용 org.hibernate.readOnly 사용 읽.. 2022. 5. 7.
IntelliJ 디버깅 해보기 배경 금요일 게더에 현직 개발자께서 오셔서 특강을 해주셨다. 많은 명언들과 꿀팁들도 들을 수 있는 좋은 기회였다. 개발자는 스포츠선수와 직장인 사이에 있다! 스포츠선수가 선수만 뛴다고 실력이 느는가? 아니다. 개인연습 및 훈련이 필요하다. 개발자도 마찬가지이다. 회사에서 협업만 하다보면 뒤처질 때가 분명히 온다. 모르는 부분이 있다면 개인학습이 꼭 필요하며, 추가적인 학습도 꾸준히 되어야 할 것이다. 신입개발자 절반 이상이 디버깅을 하지 않는다. 대부분 출력문을 이용해 검증한다. 여러 말씀을 듣는 와중 매우 뜨끔하였다. 나또한, 대부분 검증을 출력으로 진행했기 때문이었다. 디버깅이 필요한 이유와 사용방법을 정리해보고자 한다! 디버깅 1. 디버깅이란? 개발 단계 중 발생하는 시스템의 논리적인 오류나 버그를.. 2022. 5. 6.
SpringBoot에 원하는 오류페이지로 설정하기 SpringBoot에 존재하지 않는 API 요청에 응답하는 커스터마이징 설정하기!! 1. 원치않는 오류페이지 스프링부트의 기본페이지 1. 배경 @ControllerAdvice 적절한 에러 페이지를 응답해야 한다는 생각에 추가적으로 코드를 분석하기 시작했다. SQL 오류의 경우, 오류의 정보가 클라이언트에 노출된다! SQL Injection 공격으로 개인정보 유출사고 클라이언트에게 에러메시지 정보를 모두 공개할 필요가 없다 2. 설정방법 resources - application.properties spring.mvc.throw-exception-if-no-handler-found=true spring.web.resources.add-mappings=false 예외 핸들러를 찾지 못할경우, 예외를 던진다... 2022. 5. 6.
[Kotlin] 문법 정리 - 2 피드백 1. init 자바 : 검증 → 값 넣기 코틀린 : 값 넣기 → 검증(init) 2. require / check : 에러발생 자동적으로 내부에 오류발생시킨다 require : IllegalArgumentException check : IllegalStateException 3. stream을 사용하지말자 : collection API 사용하자 내부 객체 it 사용하자 distinct 등 여러가지 기능 사용가능 4. 입력과 출력 출력 : println 입력 : readln 5. 재귀함수에 대한 처리 재귀함수 사용시 스택 오버플로우 문제가 발생할 수 있다. tailrec fun 을 사용하면 컴파일러가 재귀가 아닌 반복문 형태로 변환해주어 이를 해결할 수 있다. 6. switch - when 반복 형.. 2022. 5. 4.