본문 바로가기

분류 전체보기76

[프로그래머스 SQL] Lv1 Python 개발자 찾기 회사 내부 프로젝트에서는 ORM을 사용하여 쿼리를 직접적으로 작성할 일이 거의 없었는데 새로 맡은 프로젝트에서는 쿼리문을 작성해야 하는 상황이 많아져서, SQL에 대한 공부의 필요성을 느껴 글을 작성했습니다. 문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/276013 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 설명DEVELOPER_INFOS 테이블은 개발자들의 프로그래밍 스킬 정보를 담은 테이블입니다. DEVELOPER_INFOS 테이블 구조는 다음과 같으며, ID, FIRST_.. 2024. 8. 3.
[JPA] QueryDSL에서 SQL Replace 함수 사용하기 QueryDSL을 작성하다 보면 종종 SQL Function을 사용해야 할 상황이 생긴다.필자도 DB에 저장된 휴대폰번호를 동적쿼리로 조회하기 위해 replace 함수를 사용해야 했는데 이를 알아보고자 글을 작성했다. SELECT *FROM EmployeeWHERE REPLACE(phone, '-', '') LIKE %var%MySQL에서 replace를 사용한 예시(이해하기 쉽게 동적 쿼리문을 임의로 작성했습니다) String search = "123"; // 검색할 문자열 (123 부분은 동적으로 들어오는 상황)QEmployee employee = QEmployee.employee;// replace 함수를 포함한 StringTemplate 생성StringTemplate phoneTemplate = .. 2024. 7. 21.
[MySQL] LIMIT / OFFSET 쿼리(페이징처리) 회사 프로젝트 PHP 코드를 JPA로 마이그레이션 하는 작업 중 페이징 처리가 필요하게 되어, 이를 공부하기 위해 작성한 글입니다. LIMIT결과 중에 처음부터 설정 개수만큼 가져온다(몇 번째부터 몇 개 가져올지 정할 수도 있다)SELECT * FROM 테이블명 LIMIT 10; -- 처음부터 10개 출력 (1~10)SELECT * FROM 테이블명 LIMIT 30,20; -- 30번째 후부터 20개 출력 (31-50)OFFSET어디서부터 가져올지를 정한다(LIMIT 가져올 개수 OFFSET 시작행)※ LIMIT을 사용하지 않고 OFFSET만을 단독으로 사용할 수 없다SELECT * FROM 테이블명 LIMIT 10 OFFSET 5; -- 6번째 행부터 15번 째행까지 출력 (6 ~ 15)-- 아래 쿼리.. 2024. 7. 7.
[QueryDSL] 중급 문법 (프로젝션, 동적 쿼리) JPA를 쓰다보면 엔티티를 그대로 가져오는 대신, 데이터 전송 객체(DTO)에 담아서 가져오는 경우가 많다.이런 방식은 필요한 데이터만 가져와, 불필요한 엔티티 참조를 줄일 수 있어 성능 최적화와 유지보수에 유리하다.QueryDSL에서도 프로젝션을 사용하여 결과를 DTO, 튜플 형태로 반환받을 수 있는데, 이를 통해 다양한 방법으로 데이터를 처리할 수 있다.이번 글에서는 QueryDSL을 활용한 프로젝션과 동적 쿼리에 대해 중점적으로 다뤄보겠다. 프로젝션QueryDSL을 이용해 Entity 전체를 가져오는 것이 아니라 조회 대상을 지정해 원하는 값만 조회하는 것을 말한다. 프로젝션과 결과 반환 - 기본 먼저 MemberDto는 아래와 같다.@NoArgsConstructor@Datapublic class .. 2024. 6. 20.
[QueryDSL] 동적 쿼리 게시물 조회 기능 구현 (기본문법) 요즘 회사 과제로 필터가 적용된 조회 기능을 구현하고 있다.이를 위해 동적 쿼리를 사용한 게시물 조회 기능을 만들고자 QueryDSL을 사용해보려고 한다.개인공부를 위해 작성한 글로 이 글에서는 JPQL과 QueryDSL을 비교하며 기본적인 문법부터 알아보겠습니다. JPQL과 QueryDSL 비교먼저, JPQL을 사용하여 username으로 데이터를 조회하는 예제를 보겠습니다.@Testvoid startJPQL() { Member findMember = em.createQuery("select m from Member m where m.username = :username", Member.class) .setParameter("username", "member.. 2024. 6. 16.
[Git] LF will be replaced by CRLF in 에러 해결방법 GitBash에서 git add 명령어를 사용하다 평소에 안 뜨던 에러메세지가 발생하여 해결방법을 남기고자 글을 작성했습니다.  번역) 경고 : xxx.java에서 LF는CRLF로 대체됩니다. 파일의 줄 끝 문자가 LF(Line Feed)에서 CRLF(Carriage Return Line Feed)로 변경될 것이라는 것을 의미. 에러 메세지가 뜨는 이유Git은 파일의 줄 끝 문자를 관리하는 방식에 따라 LF와 CRLF를 구분한다고 한다.일반적으로 Linux와 macOS에서는 줄 끝 문자를 LF(\n)를 사용하고, Windows에서는 CRLF(\r\n)을 사용한다.Windows에서 작업한 파일을 Unix계열 시스템에서 작업하는 다른 팀원이 수정하게 되면 줄 끝 문자가 혼합되어 불필요한 변경 사항이 발생할 .. 2024. 6. 16.