전체 글 188

[10분 테코톡] - @JDK Dynamic Proxy & CGLIB

🤥개요 우리는 Entity를 조회할 때 연관 관계를 이용하는데, 비즈니스 로직에 의해 사용될 때도 있고, 아닐 때도 있다. 그래서 맺어진 정보들이 필요가 없을 경우가 있는데, 이럴 경우를 대비해서 JPA 내부에선 필요 없는 DB 조회를 줄이면서 성능을 최적화 하는데, 이러한 문제를 해결하기 위해 DB 조회를 지연하는 방법을 제공한다. 이 것을 지연 로딩이라고 한다. 지연 로딩 (LAZY) = 가짜 객체를 이용해 DB 조회를 지연시키는 것. 즉시 로딩(EAGER) = 연관된 엔티티를 조인해서 다 가지고 오는 것. 이 지연로딩 기능을 사용하려면 DB 조회를 지원할 수 있는 가짜 객체가 필요한데, 이를 프록시 (Proxy) 객체라고 한다. 프록시의 출발은 여기에서 시작한다.. 🤔목차 프록시란?🧐 프록시를 왜 ..

스프링 2022.12.22

[10분 테코톡] - @Transactional

🤥개요 트랜잭션에 대한 이해를 바탕으로 왜 이 트랜잭션이라는 개념이 중요한지를 알게되고 더 나아가 활용의 범주까지 지식의 스펙트럼을 넓히며 면접 및 취업을 대비하기 위해 [10분 테코톡]을 시청 후 본 내용을 정리하고 내 것으로 만들기 위해 작성한 내용입니다. 들어가기 우리는 사용자가 제공한 데이터를 잘 전달받고, 저장해서 이 데이터를 기반으로 서비스를 운영한다. 그럼 과연 이 동작들이 어떻게? 어떠한 방식으로? 왜? 등 여러한 궁금증이 생길 수 있는데 그 속에는 트랜잭션이라는 무서운 놈이 숨어있다. 🤔목차 트랜잭션이란? 🧐 트랜잭션의 성질과 특징 💪 선언적 트랜잭션과 프로그래밍 트랜잭션 😶 마무리 😃 1). 트랜잭션이란? 🧐 트랜잭션은 요청한 작업이 진행되는 일련의 단위이다. 예를들어 내가 요청한 작업..

스프링 2022.12.21

6주차 -WIL 2022.12.12 ~ 12.18

FACTS(사실, 객관) : 이번 일주일 동안 있었던 일, 내가 한 일 개인 프로젝트 제출 -> 간단한 crud 구현 -> Restful Api 설계 -> JWT 토큰 적용 모든 코드에는 이유가 있듯이, 어떻게 하면 코드를 더 잘설계할 수 있을까? 위치에 맞는 코드를 작성하고, 이유있는 코드를 작성할 것, FEELINGS(느낌, 주관) : 나의 감정적인 반응, 느낌 잘 모르겠다.. 로직짜는건 어렵지않지만, 더 효율적으로, 이유에 맞는 코드를 작성함에 있어서, 아직은 조금 인사이트가 부족하다고 느꼈다. FINDINGS(배운 것) : 그 상황으로부터 내가 배운 것, 얻은 것 JPA와 JDBC 그리고 DI, IoC (https://jipang9-greedy-pot.tistory.com/117) @Lombok ..

WIL(Week I Learned) 2022.12.19

Day.34 + 35 고민, 그리고 의미 있는 데이터란?

프로젝트를 진행하면서 과연 의미있는 데이터란? 에 관한 물음을 수없이 던진 이틀이었다. 해당 미니 프로젝트에서 요구하는 바가 있었지만, 왜 ? 라는 질문을 많이 해보았다. 물론 나름의 뜻있는 이유가 있었겠지만, 백엔드 입장에서는 과연 그 데이터들이 의미가 있는 데이터일까? 에 깊은 사색에 잠겼다. 그래서 나름 혜안을 얻고자 튜터님들과 주변 사람들에게 물어봤고 한 의견으로 귀결할 수 있었다. 자세히 내가 고민하고, 내 생각들을 적은 글은 아래있다. 2022.12.16 - [기술면접 관련 및 참고하기] - 나의 고찰 1 - 백엔드 입장에서 보는 유의미한 데이터란?? (봉투패턴) 나의 고찰 1 - 백엔드 입장에서 보는 유의미한 데이터란?? (봉투패턴) 웹에선 HTTP 통신 프로토콜을 이용해 서버와 클라이언트 ..

나의 고찰 1 - 백엔드 입장에서 보는 유의미한 데이터란?? (봉투패턴)

웹에선 HTTP 통신 프로토콜을 이용해 서버와 클라이언트 사이에서 통신을 한다. 그 프로토콜등을 이용해 우리는 원하는 데이터를 전달받을 수 있는데, 이러한 과정 속에서 궁금한 점이 생겼다. 우리는 그저 프론트에서 요청하는 데이터를 정확하게 전달해주면 백엔드는 그 역할이 끝났다고 생각한다. 원하는 데이터에 대한 로직을 검증하고 수행하는 역할은 백엔드에서 진행하고, 그 결과에 맞춰 프론트가 요청하는 데이터를 전달해주면 된다. 그럼 프론트 입장에서는 프론트로 전달되는 데이터들은 유의미한 데이터이며, 유의미해야만 한다고 생각이 들었다. 기존에 미니 프로젝트나 명세가 있으면 요구하는 데이터를 전달하면 되는데, 만약 그것이 없다면 어떤 데이터를 전달해야할까? 백엔드는 결국 요청에 대한 응답을 진행하는 거니까? 이 ..

Day.33 어노테이션

@ 어노테이션 공부를 하다 어노테이션에 관한 이해도를 높이고자 내가 찾고자 하는 어노테이션에 대해 공부를 하고, 더 나아가 어노테이션이 무엇인지, 어떤 종류들이 있는지 등을 직접 찾아보고 정리하며 어노테이션 기반을 이해하는 하루를 보냈다. 2022.12.14 - [스프링] - Spring- Lombok의 이해와 @Annotation (계속 추가합니다.) 특히 생성자 관련해서 조금 이해가 안되는 부분들을 직접 공식 문서를 참고하며 이해하도록 노력했으며, 무분별하게 어노테이션을 사용하는 것이 아니라 적재적소에 맞는 어노테이션을 사용하도록 노력해야겠다. https://projectlombok.org/features/constructor @NoArgsConstructor..

Spring- Lombok의 이해와 @Annotation (계속 추가합니다.)

자바진영의 어떤 서비스를 다루다보면 우리는 편하게 @Annotation을 접할 수 있을 것이다. 이 어노테이션은 각 프레임워크나 라이브러리가 지원해주는 다양한 기능들을 내포하고 있다. 물론 무조건 사용하라는 법은 없지만 아무래도 이미 개발된 내용의 기능들을 가져다 사용하면 코드의 가독성도 증가하고 해당 로직을 작성하는데 소모되는 에너지를 줄일 수 있을 것이다. (직접 어노테이션을 만들어서 사용도 가능하다.) 이 글은 해당 어노테이션이 어떤 기능을 제공하는지를 학습하면서, 그 과정속에서 얻게된 정보들을 정리하는 글 입니다. 1. Annotation - @을 이용한 주석, 코드에 주석을 달아 특별한 의미를 부여한 것 - 컴파일러가 특정 오류를 억제하도록 지시하는 것과 같이 프로그램 코드의 일부가 아닌 프로그..

스프링 2022.12.14

5주차 WIL 2022.12.05 ~ 12.11

FACTS(사실, 객관) : 이번 일주일 동안 있었던 일, 내가 한 일 Spring 시작 -> 강의 부실 개인 프로젝트 제출 -> 간단한 crud 구현 -> Restful Api 설계 이유있는 코드 작성 FEELINGS(느낌, 주관) : 나의 감정적인 반응, 느낌 스프링 강의를 어떻게 활용할 것인가에 대한 focus 내용이 부실한데... 답은 인프런인가? FINDINGS(배운 것) : 그 상황으로부터 내가 배운 것, 얻은 것 JPA와 영속성 컨텍스트 (복습) (https://jipang9-greedy-pot.tistory.com/114),(https://jipang9-greedy-pot.tistory.com/113) 좋은 commit message (https://jipang9-greedy-pot.tis..

WIL(Week I Learned) 2022.12.14

Day.32 JDBC -> JPA까지 확장 -> 그 속에서 DI, IoC

제공받은 강의에서 JDBC를 시작으로 JPA까지 연결하는 부분을 직접 따라하며 만약 JPA가 없었더라면? 이라는 환경을 직접 느끼게 되었다. 이러한 과정 속에서 의존성 주입 (DI)를 학습하게 되었다. DI (Dependency Injection) 의존성 주입 혹은 의존관계 주입이라고 불리는 DI는 Dependency Injection의 약어로, Spring이 다른 프레임워크와 차별화 된 의존 관계의 주입 기능으로, 객체를 직접 생성하는 것이 아니라 외부에서 생성한 후 주입시키는 방식을 말한다. (의존 관계를 Bean 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것) Q. 그럼 Spring DI 컨테이너란? spring DI 컨테이너가 관리하는 객체를 bean (빈) 이라고 하며, 이 bean (빈) ..

Day.31 프로그래머스 - Lv.0알고리즘 2문제

항상 알고리즘을 매일 풀어야지 하면서 가끔 풀게 된다... 알고리즘보다 다른 공부를 더 하는데, 알고리즘을 통해 코드 구현력을 높이기로 했던 나의 다짐은 어디로.... 오늘 미뤄왔던 알고리즘 2문제를 해결했다. 오늘 해결한 문제는 다음과 같다 프로그래머스 - Lv.0 캐릭터의 좌표 https://school.programmers.co.kr/learn/courses/30/lessons/120861 프로그래머스 - Lv.0 영어가 싫어요 https://school.programmers.co.kr/learn/courses/30/lessons/120894 두 문제 다 뭔가 문제가 어렵게 느껴지진 않았는데, 어떻게 접근하면 좋을까에 대한 고민을 정말 많이 했다. 영어가 싫어요 문제를 어떻게 접근할까에 대한 생각을..