전체 글

· Spring
⬜ 섹션8 데이터 접근 기술 - 활용 방안◼️ 스프링 데이터 JPA 예제와 트레이드 오프중간에 JpaItemRepository가 어뎁터 역할을 해준다.ItemService가 사용하는 인터페이스(ItemRepository)를 그대로 유지할 수 있다.클라이언트인 ItemService 코드를 변경하지 않아도된다.하지만...전체 구조가 복잡하고 사용클래스도 많아졌다!!!위처럼 ItemService에서 직접 스프링데이터JPA 리포지토리를 직접참조할 수 있다.하지만 이경우 ItemService 코드를 변경해야 한다. 🟢 트레이드 오프안정성: DI, OCP를 지키기 위해 어댑터를 도입하고, 더 많은 코드를 유지한다.개발 편리성: 어댑터를 제거하고 구조를 단순하게 가져가지만, DI, OCP를 포기하고, ItemSer..
· Spring
[Spring] 스프링 DB 2편 - 데이터 접근 활용 기술 섹션6 데이터 접근 기술 - Querydsl⬜ 섹션6 데이터 접근 기술 - Querydsl💡 강의 플로우 요약기존방식문제점: JPA에서 JPQL로 쿼리작성,하지만 type-safe하지않음! type-safe하게 만들면 이용법 개복잡해짐...해결책: QueryDsl 등장! type-safe,컴파일에러,이용쉬움! JPQL로 변환되어 SQL 쿼리 생성!◼️ 기존방식 문제점query는 문자이므로, type-check 불가능하다. 즉, 실행하기 전까지 작동여부 확인 불가. 🧐만약 SQL이 클래스처럼 타입이 있고, 자바 코드로 작성할 수 있다면 type-safe! * JPA에서 Query 방법JPQL(HQL)장점: SQL QUERY와 비슷단점: typ..
· 일상기록
앉은자리에서 한번에 후루룩 다읽어버린 소설...!!!곳곳에 숨겨둔 은유가 많은 소설이었지만 사실 그걸 모두다 팔정도의 용기가 아직 내겐없어... 책을 읽은후 내가 펄롱이라면 저런 용기를 가질수있을까 생각해봤다.어른이 되어가며 늘 소시민으로 나를 감추고 살아가는 법을 배우는듯했다. 점점 외면하게 되는 사소한것들이 사실은 전혀 사소하지않은 나를 구성하는 일부이며,그런것들을 외면하는 것은 곧 나를 외면하는 일이기도 한듯하다. 어렵다. 이 책을 읽고 한동안 깊은 사색에 잠겼다.혼란스러웠다. 아일린처럼 사는것이 지극히 현실적이다.난 과연 어떤것을 지향하고 나의 신조는 무엇인가. 내가 받았던 도움과 사랑들.생각해보면 사소하듯 지나친 도움과 친절들이 아주많다. 정말 너무 힘들때,정말 한치의 기운도 나지않는때가있었다...
· 일상기록
때는 바야흐로 종강다음주...종강했으니 해외여행좀 다녀오라는 부모말에...급 하루전 숙소랑 비행기알아보고 캐리어도 안든채 훌렁 배낭여행을 떠나보았다..될대로되겠지라는 맘으루 갔지만! 생각보다 너무X100 행복했던 여행이었다...! 정말 즉흥적이라 늘 계획적인 칭구들을 졸졸 따라다녀보기만했지,내가직접 계획짜고 다녀보는 여행은 처음이었던만큼 더욱 새로웠다. 잊기전에 이 기억을 남겨야겠어.💛무사히 도쿄에 도착해 도시락을 먹으며 에노덴기차타보러 가마쿠라까지기차로 이동!이곳은 사실 전날 급검색으루 목적지 찾음 하하...! 슬램덩크 촬영지라는데 너무예쁘고,,나는 기차여행너무좋아하기땜에 당장 고!!!일본답게 아기자기 갬성 넘치는 풍경에 마음이 행복했다 ㅎ 전날 급결정한 여행준비로 잠을 얼마 못잤지만,,기차 풍경 구..
· Spring
[Spring] 스프링 DB 1편 - 데이터 접근 핵심 원리 스프링 DB 1편 - 데이터 접근 핵심 원리 섹션5,6 예외 & 스프링과 문제 해결 - 예외 처리, 반복⬜ 섹션5 예외 자바 예외 이해◼️ 체크 예외 활용기본적으로 언체크(런타임) 예외를 사용하자.예외를 잡아서 반드시 처리해야 하는 문제일 때만 체크 예외를 사용하자. 🟢 체크 예외 문제점복구 불가능한 예외: 대부분 예외는 복구가 불가능하다. 따라서 복구불가능한 예외는 오류 로그를 남기고, 스프링 ControllerAdvice를 사용해 깔끔히 공통으로 해결한다.의존 관계에 대한 문제: 체크 예외는 처리할 수 없으면 어쩔 수 없이 throws를 통해 던지는 예외를 필수로 선언해야 한다.이때 JDBC→JPA로 바뀐다면 예외도 바뀌기 때문에 예외 의..
· Java
○ 제네릭이 필요한 이유다양한 타입을 담는 박스가 필요하면 그때마다 각 박스 클래스를 새로 만들어야한다.public class BoxMain1 { public static void main(String[] args) { IntegerBox integerBox = new IntegerBox(); integerBox.set(10); //오토 박싱 Integer integer = integerBox.get(); System.out.println("integer = " + integer); StringBox stringBox = new StringBox(); stringBox.set("hello"); String str..
· Spring
[Spring] 스프링 DB 1편 - 데이터 접근 핵심 원리 섹션4 스프링과 문제 해결 - 트랜잭션◼️ 문제점들 🟢 순수한 서비스 계층가장 중요한 곳은 핵심 비즈니스 로직이 들어있는 서비스 계층이다. 비즈니스 로직은 최대한 변경없이 유지되어야 한다.서비스 계층을 특정기술에 종속적이지 않게 개발해야 한다. 하지만 트랜잭션을 적용한 MemberServiceV2를 보면, 핵심 비즈니스 로직과 JDBC 기술이 섞여 있어서 유지보수 하기 어렵다. public void accountTransfer(String fromId, String toId, int money) throws SQLException { Connection con = dataSource.getConnection(); // 트랜잭..
· Spring
[Spring] 스프링 DB 1편 - 데이터 접근 핵심 원리 섹션3 트랜잭션 이해◼️ 트랜잭션커밋(Commit): 모든 작업이 성공해서 DB에 정상 반영하는 것롤백(Rollback): 작업 중 하나라도 실패해서 거래 이전으로 되돌리는 것 🟢트랜잭션 ACID원자성(Atomicity) : 트랜잭션 내에서 실행한 작업들은 하나의 작업인 것처럼 모두 성공 or 모두 실패해야한다.일관성(Consistency) : DB에서 정한 무결성 제약 조건을 항상 만족해야 한다.격리성(Isolation) : 동시실행되는 트랜잭션들이 서로에게 영향을 미치지 않도록 격리한다. 예를 들어 동시에 같은 데이터 를 수정하지 못하도록 해야 한다. 격리성은 동시성과 관련된 성능 이슈로 인해 트랜잭션 격리 수준(Isolation leve..
· Spring
[Spring] 스프링 DB 1편 - 데이터 접근 핵심 원리 섹션2 커넥션풀과 데이터소스 이해◼️ 커넥션 풀 이해🟢DB 커넥션 획득 과정애플리케이션 로직은 DB 드라이버를 통해 커넥션을 조회DB 드라이버는 DB와 TCP/IP 커넥션을 연결.(이 과정에서 3 way handshake 같은 TCP/IP 연결 을 위한 네트워크 동작 발생.)DB 드라이버는 TCP/IP 커넥션이 연결되면 ID, PW와 기타 부가정보를 DB에 전달DB는 ID, PW를 통해 내부 인증을 완료하고, 내부에 DB 세션을 생성DB는 커넥션 생성이 완료되었다는 응답을 보낸다.DB 드라이버는 커넥션 객체를 생성해서 클라이언트에 반환😥커넥션을 새로 만드는 것은 과정도 복잡하고 시간이 많이 소모된다.😉이런 문제를 해결하기 위해 커넥션을 미..
https://www.acmicpc.net/problem/15649 개인적으로 백트래킹개념이 재귀이다보니까 이해하기가 헷갈렸다..OTL백트래킹에서 핵심은 재탐색,DFS 인것같다.제일 유명한 n과 m문제를 많이 곱씹었다. 나는 처음 아래와 같이 예시를 풀어봤는데(답출력부분은 따로구현x), 아래처럼 path.pop과 depth-=1를 따로해줄바에 재귀 함수에 넣어주어야 더 깔끔한 코드를 만든다는것을 알았다. 아래에서 처음 내 실수는 path[:] 복사본을 생성하지않고 path를 넣어준것이다.  Python에서 리스트는 가변 객체이다. 즉, 리스트를 다른 변수에 할당하거나 함수에 전달하면, 실제로는 그 리스트의 참조(주소)를 전달한다. 만약 ans.append(path)를 사용하면, ans 리스트에는 path..
고쩡이
고민보다 Go