전체 글54 Mock이란? + Mockito,Spy,InjectMocks Mock이란? Mock은 한글로 “모의, 가짜의”라는 뜻으로 테스트할 때 필요한 실제 객체와 동일한 모의 객체를 만들어 테스트의 효용성을 높이기 위해 사용된다. @Service public class StudentService { public Student getStudent() { // DB에서 Student 테이블 조회 (부하가 많이 걸리는 작업) } } 위처럼 DB에서 Student 테이블을 읽어 Student 객체를 리턴하는 메소드를 테스트하고 싶은데 매번 테스트할 때마다 DB를 읽어오는 것이 부하가 많이 걸리고, 시간도 많이 걸린다면 번거로워 질 것이다. 그래서 Student를 DB에서 읽어오지 않고 가짜 객체 즉, mock을 만들어서 DB에 있는 테이블 접근을 최소화할 수 있다. mock으로 .. 2023. 5. 13. 트랜잭션(Transaction)이란? + Spring transactional 트랜잭션 데이터베이스의 상태를 변화시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 수행되어야할 일련의 연산을 의미한다. 여기서 데이터베이스의 상태를 변화시킨다의 의미는 질의어(SQL:SELECT, INSERT, DELETE, UPDATE)를 이용하여 데이터베이스에 접근하는 것을 의미한다. 트랜잭션은 작업의 완전성을 보장해준다. 즉, 논리적인 작업 셋을 모두 완벽하게 처리하거나 또는 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 만들어주는 기능이다. 은행에서 돈을 이체하는 작업을 예시로 들자면 1. A은행에서 B은행으로 돈을 계좌 이체하려고 함 2. 송금 중 알 수 없는 오류로 A은행에서 돈은 빠져나갔지만 B은행의 계좌에는 입금되지 않는 경우... 2023. 5. 1. swagger란? + swagger annotation Swagger Swagger는 웹 서비스 명세를 문서화 해주는 오픈 소스 소프트웨어 프레임워크이다. 즉 웹 서비스가 어떤 로직을 수행하고, 이 로직을 수행하기 위해서는 어떤 값을 요청하며, 이에 따른 응답값은 무엇인지 정리해서 문서화해주는 프로젝트이다. 보통 웹 어플리케이션을 개발할 때 프론트와 백엔드로 팀을 나누어서 개발을 하는데, 이 때, 백엔드 팀이 만든 서비스를 swagger로 문서화해서 프론트 팀으로 넘겨 로직의 이해도를 높이고, 소통한다. swagger를 사용하면 개발과정 속에서 계속 변경되는 명세 문서를 알아서 주기적으로 업데이트해주기 때문에 번거로움을 없애고, 시간을 절약할 수 있다. springboot 3.0.0 이상부터는 springfox가 아닌 springdoc-openapi-ui 라.. 2023. 4. 10. JWT, OAuth란 ? + 구조, 예시 서론 프로젝트 중 회원가입 및 로그인 구현을 맡게되어서 JWT와 OAuth에 대해 알아보게 되었다. OAuth OAuth(Open Authentication 또는 Open Authorizaion)는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다. OAuth의 기본 핵심은 인증 과정을 제 3자에게 위임하는 것이다. 따라서 제 3자의 인증 정보를 내 서비스에서 이용한다고 볼 수 있다. 여기서 제 3자는 카카오, 구글, 네이버 등이 있다. OAuth가 사용되기 전에는 외부 사이트와 인증 기반의 데이터를 연동할 때 인증 방식의 표준이 없었기 때문에, 기존의 .. 2023. 3. 30. 람다(Lambda),스트림(Stream)이란? 람다(Lambda) 자바8부터 '람다식(Lambda Expression)이 지원되면서 자바는 완전히 새로운 언어처럼 보이기 시작했다. 제네릭이 자바를 크게 변화시킨 것처럼 람다 또한 자바를 어마어마하게 변화시켰다. 람다의 등장으로 자바는 객체지향 언어의 특징과 함께 함수형 언어의 특성을 갖추게 되었다. 람다식을 이용하면 코드가 간결해지고, 지연 연산 등을 통해서 성능 향상을 도모할 수 있지만, 반면 모든 요소들을 순회하는 경우에는 성능이 떨어질 수도 있고, 코드를 분석하기 어려워진다는 단점도 있다. 람다 이전의 코드 //MaxNumber Interface public interface MaxNumber { int getMaxNumber(int x, int y); } //MaxNumber Interface.. 2023. 3. 20. DAO,DTO,VO 란? + DTO와 VO의 차이점, 다루는 이유 서론 사이드 프로젝트를 하던 중, DTO를 왜쓰게 되나? 가 궁금해져서 이를 알아보게 되었다. 결론부터 말하면 DTO를 쓰는 이유는 직접적인 DB와 연계가 되는 Entity를 최대한 노출을 안시키기 위해서 이다. 지금부터 DAO, DTO, VO에 대해 알아보려한다. DAO(Data Access Object) DAO는 실제로 데이터베이스(DB)의 data에 접근하기 위한 객체이다. Database 접근을 위한 로직과 비지니스 로직을 분리하기 위해 사용한다. DB에 접근하여 data를 삽입, 삭제, 조회, 수정 등 CRUD 기능을 수행한다. Service와 DB를 연결하는 연결고리 역할을 한다. Repository package가 DAO이다. 예제 1. Sping Data JPA public interfac.. 2023. 3. 13. 이전 1 ··· 3 4 5 6 7 8 9 다음