Java 28

지피지기 백전불태(부제 : JPA의 오해와 사실)

사내 팀 내 개발 문화를 도입하면서 공유한 내용입니다.  간단하게 어떤 개발문화를 도입했는지에 설명하자면 다음과 같습니다. - 팀원들 개인의 경험 공유 및 지식 나눔으로 매주 목요일 번갈아가며 진행- 발표자는 자유 주제로 팀원들과 소통- 무거운 주제도 괜찮지만 되도록 가벼운 주제로- 다른 개발의 영역이라도 자유롭게 참가 가능- 주 목적은 같이 성장하기 이미 여러 다른 회사들에서는 이러한 개발문화를 도입했을겁니다.이는 팀 내의 역량을 증진하고 더 나아가 발표를 하기 위해, 발표를 듣기 위해 자신의 지식을 점검하며 같이 성장하기에 주 목적이 있습니다   간단한 설명은 이쯤에서 끝내고 발표 준비한 내용을 공유도록 하겠습니다. 목차N+1 문제의 흔한 착각여러분은 Page와 Slice를 아시나요?DirtyChec..

스프링/JPA 2024.10.20

[1] 이해하기 힘든 이름

우리는 코딩을 처음 시작하면 변수명, 메서드명, 클래스 명 등등 여러가지 이름을 고민해서 짓기 마련입니다. 당연히 이름을 지을 때, 해당 기능이나 단위 등 명확하고 직관적인 이름을 짓고싶을 것입니다. 그러나 시간이 지나면 왜 이렇게 지었을까? 라는 의문이 들기도 하지만 우리는 그 순간에 최선을 다해서 네이밍을 했을 것입니다. 위에서 발생한 문제를 해결하기 위해 3가지의 리팩토링 기술을 전수해주고 있습니다 1. 함수 선언 변경하기 (Change Function Declaration) 함수 이름 변경, 메소드 이름 변경, 매개변수 추가,삭제, 시그니처 변경 당연히 좋은 이름을 가진 함수는 이름만 보더라도 이해가 가능할 것이다. 그럼 과연 좋은 이름을 찾아내는 방법이란 무엇인가? - 함수에 주석을 작성한 다음..

Language/Java 2024.01.22

@Mappings 사용하기

[ 바로가기 목차 ] 들어가기 알아보기 마무리 [ 들어가기 ] 여러 테이블 혹은 DB에서 데이터를 가져와서 원하는 작업을 하는 방법에는 여러가지가 있습니다. 가져온 데이터를 원하는 형식이나 여러 객체를 하나의 객체로 합치는 일은 매우 흔한 일입니다. 이때 이러한 매핑 작업을 직접 개발자가 하게 된다면 문제가 발생할 수 있습니다. - 코드의 중복 - 생산성 저하 - 실수로 인한 데이터 누락 - 복잡한 로직까지 추가된다면 코드 가독성 저하 이러한 문제를 해결하기 위해 스프링(Spring)에서는 라이브러리를 지원합니다. - Mapstruct - ModelMapper 맵 스트럭트(MapStruct) 와 모델 매퍼(ModelMapper)의 차이점을 간단하게 설명하자면 객체의 생성 방식에 조금의 차이를 가지고 있습..

스프링 2023.12.13

Java 8 vs Java 11 ?

우리가 프로젝트를 진행하다보면 여러 라이브러리와 언어의 버전과 관련된 선택을 해야하는 경우가 발생합니다. 누군가는 버전업되면 다 좋은거 아니야? 라고 생각할 수있지만, 개발자들은 이를 하나하나 따져보고 적절한 trade off를 통해서 사용하고자 하는 도구들의 버전을 선택해야 한다고 생각합니다. 이 글은 자바의 버전 선택과 관련된 내용을 담고있습니다. Java라는 언어를 사용하는 사람들은 자바가 객체지향 언어인 것도 알고있고, 이식성의 장점이나 메모리를 자동으로 관리해주는 장점 등을 알고있다. 오늘은 이러한 부분을 넘어선 자바 8과 자바 11 버전을 비교해서 학습한 내용을 정리하려고 한다. 자바의 버전 현재까지 자바는 19버전까지 출시되어 있으며 올해 3월 20 버전이 출시된다고 알려저있다. 자바는 각 ..

A-Z Query dsl 학습하기 그리고 이해하기

본 내용은 infrearn 김영한 님의 query dsl 강의를 수강 후 정리한 글입니다. 코드 위주의 설명보다는 해당 강의를 보고 얻게된 지식이나 인사이트와 관련된 글입니다. 또한 Query dsl에 관한 저의 느낀점과 학습한 점을 정리한 것이라 Query dsl 사용 관련 내용을 담고 있지는 않습니다.. 목차 Query dsl 들어가기 내가 학습한 Query dsl ( 의존성만 등록해봅시다 ) Query dsl 마무리 Query dsl 들어가기 네? query dsl이요? 그게 뭔가요? querydsl을 알게 된 것은 작년 이맘 때쯤이였다.. 졸업작품 프로젝트를 시작하고, 어떻게 데이터를 검색할까에 관한 물음의 답이 바로 Query dsl이였다. 기술적 의사결정을 내린 후 본격적으로 query dsl..

2번째 미니 프로젝트 ( Java - 객체 지향 프로그래밍 & 은행 서비스 )

0. 프로젝트 소개 1. 팀 소개 2. 체크리스트! 3. 어려웠던 점이나 느낀 점 4. Git 코드 공유 들어가기 0. 프로젝트 소개 호텔 프로젝트보다 조금 더 신선하고, 다양한 기능은 물론 조금 더 객체 지향 설계를 할 수 있을 것이라 생각해 은행 프로젝트를 선택했으며, 주어진 요구사항에 맞춰 간단하게 은행 서비스를 구현해보며 객체 지향을 이해하고, 커뮤니케이션 능력 향상을 위해서 미니 프로젝트를 진행했다. 1. 팀 소개 👲🏻 저희 팀 이름은 소림사입니다! 팀 이름이 소림사인 이유는 서로의 공통점을 찾다 파생된 소림사라는 단어에서 고수라는 단어를 떠올리면 중국의 소림사가 생각이 나 이 점에서 영감을 받아 “우리도 실력을 갈고닦아 고수가 되자”라는 의미에서 소림사를 팀 명으로 정하게 되었습니다. 팀원 소..

프로젝트 2023.01.11

[자바 웹 프로그래밍 - Next Step] - 테스트와 리팩토링

서비스를 개발하다 보면 우리는 구현한 기능 혹은 메소드를 테스트해야할 경우가 발생할텐데, 이는 개발자로서 중요한 순서이자 역량이다. 하지만 이를 접하지 않는다면 코드 구현력은 물론 더 큰 문제가 발생할 가능성이 높다. 그래서 테스트를 통해 내가 만든 기능들이 올바른 방향으로 흘러가는지에 관해 check 할 필요가 있는데, 이 과정 속에서 Test가 중요하다. 또한 내가 만든 메소드가 비효율적이라면 이는 추후 큰 비용의 발생을 야기할 수 있다 (내가 말하는 큰 비용이라하면 유지보수나, 사용되는 리소스를 의미한다.) 그래서 개발자 입장에선 불필요하거나, 책임에 맞지 않는 코드를 사용하는 것을 줄여야한다. 간단한 예제를 통해 문제점을 발견하고 직접 Test, refactoring까지  경험해 보았다. publ..

책 읽기 2022.12.27

[ 10분 테코톡 ] - Stream 그리고 For Loop

🤥개요 들어가기 일반적으로 우리는 데이터를 탐색하고자 할 때, 반복문을 사용할 것이다. 그러나 루프가 길어지고 주어진 조건식이 많아진다면 당연히 이 루프속 내용은 많아질 것이고, 가독성 또한 떨어지며 코드의 재사용도 힘든데 이러한 문제점을 해결하기 위해 Java 8 버전부터 Steam(스트림)이라는 개념을 지원해준다. 어떻게하면 우리는 이 Steam을 잘 활용할 수 있을까에 대한 고민을 담은 글이다.? 스트림을 왜 써야할까? 등 Stream의 내용을 학습하고, 내가 고민한 내용을 바탕으로 적용해보기 위해서 정리한 글이다. 본 글은 구글링 및 10분 테코톡 11강, 12강 Stream에 관련한 영상을 시청 후 정리한 내용이다. 본 내용에서 사용한 사진은 테코톡에서 발췌한 사진임을 명시한다. 본 글은 왜 이..

Day.27 자바 진영의 스프링

스프링은 자바진영의 웹 어플리케이션 제작 지원을 도와주는 프레임워크다. 과거에 스프링을 공부하고 써본적이 있어서 금일 진행한 내용이 어렵게 느껴지진 않았다. 과거에는 서블릿이나 jsp 이런 기술들을 사용해서 웹을 제작하고 배포했었더라면 스프링은 그 기술들을 확장적용시켜 어노테이션 기반의 기술이 탄생했고, 그 외에도 스프링에서 내부적으로 지원해주는 라이브러리와 프레임워크들이 많아서 편리하게 웹을 개발하고 디자인 할 수 있다. Spring MVC를 통해 모델과 뷰, 컨트롤러들을 분리시켜 편리하고 확장성있게 개발이 가능하다는 장점이 있다. 사용자는 Controller를 조작해서 model을 통해 데이터를 가지고 오고, 그 정보를 바탕으로 시각적 표현을 담당하는 view를 제어해 사용자에게 정보를 전달한다. 스..

자바는 어떻게 메모리를 사용할까요? (자바의 메모리 사용)

일반적으로 우리가 작성한 코드는 JVM에 의해 실행된다. 그럼 JVM 속에서 이 코드들은 어떻게 저장되고 어떻게 동작하는가? CS 지식에서 단골 메뉴이다. 자바를 사용한다면 기본적으로 자바가 어떻게 동작하는지를 알고있어야 한다. 또한 안정적으로 프로그램을 개발하려고 한다면 이 구조를 역시 빼놓을수가 없다. 프로그램이 메모리를 사용하는 방식은 아래와 같다. 객체 지향 프로그래밍에서는 이 데이터 저장 영역을 다시 3개의 영역으로 나눠서 사용하게 되는데, 이 영역이 우리가 잘아는 Static, Stack, Heap 영역이다. 코드를 통해 우리가 작성한 코드가 어떻게 데이터 저장 영역에 저장되는지 확인해보자. public class Start{ public static void main(String[] args..