인덱스를 타지 않는 쿼리1. function or operation querySELECT * FROM employee WHERE UPPER(name) = 'AHN'; SELECT * FROM employee WHERE YEAR(worked_at) = 2023; SELECT * FROM employee WHERE age + 1 = 100; 인덱스 컬럼에 함수 또는 연산을 수행하는 경우 데이터베이스는 인덱스를 사용하지 못합니다. 이유:인덱스는 Key의 순서대로 정렬되어 있습니다.이를 함수나 연산을 통해 인덱스에 변환을 수행하면, 기존 인덱스와의 순서가 불일치하는 문제가 생겨 인덱스를 통해 탐색을 하지 못합니다. 2. Like문 검색에서 와일드카드의 위치SELECT * FROM employee WHERE na..
왜 지름길은 깨진 창문과 같을까?깨진 창문 이론어떤 것이 멈춘 것처럼 보이고, 망가져 보이고, 관리되지 않는다고 여겨지면 인간의 뇌는 이를 더 멈추고, 망가뜨리고, 관리하지 안 해도 된다고 생각하게 된다. (Philp Zimbardo)망가진 자동차와 안 망가진 자동차를 주차해두고 실험해 본 결과 사람들은 망가져 있는 자동차를 더 망가트리거나 부품들을 도난했다. 반대로 안 망가진 자동차를 그대로 유지가 되는 결과가 있었다. 하지만, 안 망가진 자동차의 창문을 깨트리고 다시 실험을 했을 때, 바로 망가져버리는 결과가 있었습니다. → 이러한 실험 결과를 통해 알 수 있는 점은 사람은 심리적으로 망가져 있는 것을 보면 아닌 것에 비해 더 막 다루어도 된다고 생각하는 경향이 있다. 코드 작업과 깨진 창문과의 관계..
유스케이스 역할 살펴보기입력을 받는다.비즈니스 규칙을 검증한다.모델 상태를 조작한다.출력을 반환한다.유스케이스는 인커밍 어댑터로부터 입력을 받습니다.이 단계는 “입력 유효성 검증”을 하는 것이 아니라, Controller에서 받은 입력값을 유스케이스 서비스에 맞게 매핑하여 전달합니다. (SendMoneyRequest → SendMoneyCommand) 유스케이스는 비즈니스 규칙을 검증할 책임이 있으며, 비즈니스 규칙을 충족하면 유스케이스는 입력을 기반으로 모델의 상태를 변형합니다.일반적으로 도메인 객체의 상태를 바꾸고, 영속성 어댑터를 통해 구현된 포트로 이 상태를 전달하여 데이터베이스의 값을 변경하거나 저장합니다. (하나의 유스케이스는 여러 개의 아웃고잉 어댑터를 호출할 수 있습니다.)아웃고인 어댑터에..
스프링 부트를 기반으로 테스트 코드 작성 시 자주 등장하는 테스트 어노테이션의 사용 상황과 기능에 대해 정리하고자 합니다. @SpringBootTest 어노테이션Annotation that can be specified on a test class that runs Spring Boot Based tests. @SpringBootTest 어노테이션은 스프링 부트 기반 테스트 시에 사용하는 어노테이션이다. 다음과 같은 기능과 특징을 가지고 있습니다. 1. Uses SpringBootContextLoader as the default ContextLoader when no specific @ContextConfiguration(loader=...) is defined. 💬 특정 @ContextConfigu..