전체 글 (15) 썸네일형 리스트형 QueryDSL이란? 이번 글에서는 저가 계속해서 공부 해봐야지, 알아봐야지 했다가 미루고 미뤘던 QueryDSL에 대해 이것은 무엇인지 또 어디서 사용되는 지 그리고 오랜만에 에러를 만나 어떻게 해결하려고 노력했는 지에 대해 작성해보겠습니다QueryDSL이란?QueryDSL이란 단어 그대로 쿼리 생성에 특화된 프레임워크를 의미합니다여기서 JPA에 대해 공부해보신 분들 또는 제 스크럼을 열심히 들으신 분들은 두 가지 의문점이 들 수 있습니다첫번째로는 ‘JPA가 자동으로 SQL 쿼리문을 생성해주는 것 아닌가?’맞습니다 JPA는 객체 지향적 언어 또는 어플리케이션과 관계형 DB 사이의 패러다임 불일치를 해결해 주는 프레임워크입니다 개발자는 객체지향관점으로 개발하고 JPA는 자동으로 SQL 쿼리문을 생성합니다 자동으로 SQL 쿼리.. feign 적용기 이번에 프로젝트를 진행하며 소셜 로그인 기능 구현이 필요했습니다. 소셜 로그인의 전체적인 플로우는 중점 내용이 아니기 때문에 자세히 언급하진 않겠지만 간단하게 말씀드리면 아래와 같이 진행됩니다. 서버는 프론트에서 요청을 받고 요청 값을 해당 소셜 로그인 서버에 보내 code 값과 token 값을 받아 다시 프런트에게 전달합니다 (사실 프론트에서 해당 소셜 로그인 서버에서 code 값을 받아 서버에게 전달해주면 code 값으로 다시 해당 소셜 로그인 서버와 통신해 token 값을 받아 프런트로 전달해주는 방법도 많이 사용합니다. 왜냐하면 callback url이 바로 프론트로 지정될 수 있기 때문입니다.)클라이언트 → 프론트 ↔ 서버 ↔ 해당 소셜 로그인 서버이런 플로우에서 서버가 생각해야할 부분은 “어떻.. 양방향 연관관계와 진행하면서 만난 문제점 이번에 프로젝트를 진행하면서 몇 가지 에러 사항에 부딪혔습니다. 오늘은 그 중 한 가지에 대해 작성하려고 하는데요.모두들 양방향 연관관계에 대해 잘 아시나요? 저는 이번에 양방향 연관관계를 사용해야하는 상황을 만났는데요. 처음 사용해보고 시간이 부족해서 인터넷에서 여러 블로그를 훑고 따라 사용해봤습니다. 그래서 사실 제대로 된 이해가 되지 않았는데요. 프로젝트가 끝난 지금 양방향 연관관계에 대해 제대로 공부해봤습니다! 그리고 저가 부딪혔던 에러 사항에 대해서도 다른 해결방안들을 조사해봤습니다. 이번 주는 양방향 연관관계에 대해 작성해보겠습니다!양방향 연관관계먼저 양방향 연관관계, 단방향 연관관계는 객체 단위에서 적용됩니다. 즉 데이터베이스의 관계와는 상관이 없습니다. 왜냐하면 데이터베이스 테이블은 외래 .. JPA란? JPA란?"JPA는 자바 진영의 ORM 기술 표준이다. JPA는 아래의 그림처럼 애플리케이션과 JDBC 사이에서 동작한다"그렇다면 ORM은 무엇일까? ORM은 객체와 관계형 데이터베이스를 매핑한다는 뜻이다. ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해준다. 여기서 패러다임의 불일치 문제에 관해서는 JPA 사용 이유 부분에서 확인해보자.과거 자바에서는 EJB(엔터프라이즈 자바 빈즈)라는 기술 표준을 만들었는데 그 안에는 엔티티 빈이라는 ORM 기술도 포함되어 있었다. 하지만 너무 복잡하고 기술 성숙도도 떨어져 이후에 나온 더 가볍고 실용적인 데다 기술 성숙도도 높은 하이버네이트라는 오픈소스 ORM 프레임워크에 밀렸다. 결국 EJB 3.0에서 하이버네이트를 기반으.. Controller 계층에 관한 테스트 먼저 Controller 계층에 관한 이야기를 해보겠다.Controller 계층에 관한 이야기를 하기 전에 spring에서는 계층을 왜 나누는 걸까? 코드의 구조화, 유지 보수성, 테스트 용이성, 확장성, 재사용성 등 많은 이유가 있지만 주된 이유는 계층 간의 분리를 통해 코드를 구조화 시켜 SOLID 원칙을 적용시킬 수 있음에 중점을 둔다.너무 허황된 이야기일 수 있고 와닿지 않을 수 있다. 그렇다면 좀 더 현실적으로 이야기 해보자. Controller와 Service 계층을 나누는 이유는 위의 이유도 있겠지만 다음과 같은 이유도 존재한다. Controller의 주된 역할은 입력과 출력 즉, 통신이다. client에게 데이터를 받고 service에게 전달 후 가공된 데이터를 응답하는 징검다리 역할을 한.. TDD란? TDD란?Test Driven Development의 약자로 ‘테스트 주도 개발’이라고 한다반복 테스트를 이용한 소프트웨어 반복론으로 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현애자일 방법론 중 하나인 eXtream Programming(XP)의 ‘Test-First’ 개념에 기반{ Red } 단계에서는 실패하는 테스트 코드를 먼저 작성한다.{ Green } 단계에서는 테스트 코드를 성공시키기 위한 최소한의 실제 코드를 작성한다.{ Blue } 단계에서는 중복 코드 제거, 일반화 등의 리팩토링을 수행한다.일반 개발 방식 vs TDD 개발 방식TDD 개발 방식테스트 코드 작성 후 통과한 코드만을 코드 개발함이러한 반복적인 단계가 진행되면서 코드의 버그가 줄고 소.. Junit5란? JUnit5란?자바 개발자가 가장 많이 사용하는 테스팅 프레임 워크자바 현직 개발자 중 93% Junit 사용, 그 중 51%는 Mockito 사용Platform : 테스트를 실행해주는 런처 제공, TestEngine API 제공Jupiter : TestEngine API의 구현체로 JUnit5를 제공Vintage : JUnit 4와 3을 지원하는 TestEngine 구현체JUnit5 시작하기스프링 부트 프로젝트 2.2버전 이상부터는 기본적으로 의존성 추가스프링 부트 프로젝트가 아닐경우 다음과 같은 의존성 추가 org.junit.jupiter junit-jupiter-engine 5.6.2 testJunit5가 제공하는 Annotations📌 @overriding 애노테이션 (annotation)애노테.. 이전 1 2 다음