본문 바로가기

전체 글204

[내일배움캠프] TIL : RawJPA 기본 쿼리 파일 만들기 (Query Mapper)Query Mapper를 사용하여 SQL 쿼리를 관리하여 코드의 가독성과 유지보수성을 높입니다.MyBatisJava 기반의 SQL Mapper Framwork로 객체 지향 프로그래밍 언어와 관계형 데이터베이스(SQL)을 쉽게 연결할 수 있도록 도와주는 ORM 도구입니다.MyBatis의 특징-. SQL Mapper FramworkSQL을 XML파일이나 어노테이션으로 정의하여 데이터베이스와 Java 객체를 쉽게 매핑합니다.-. 직접적인 SQL 제어개발자가 직접 SQL을 작성함으로써 SQL의 복잡한 로직을 제어하고 최적하할 수 있기 때문에 복잡한 쿼리 작업을 ORM 프레임워크보다 더 자유롭게 작성할 수 있습니다.-. XML Mapper와 annotationXML Ma.. 2024. 11. 14.
[내일배움캠프] 알고리즘 Daily Routine 64. 체육복 안녕하세요.64회차 과제 체육복입니다.문제점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다.다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다.학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다.예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다.체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다.전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 .. 2024. 11. 14.
[내일배움캠프] TIL : Transaction TransactionTransaction은 데이터베이스 관리에서 데이터의 일관성을 보장하기 위해 여러 데이터 작업들을 하나의 단위로 묶어서 처리하는 방법으로 성공 시 모든 작업이 수행되고 실패 시 모든 작업이 취소되어 원래의 상태로 돌아게 되어 데이터의 일관성, 안정성, 무결성을 유지할 수 있습니다.ACID1. Atomicity (원자성)-. 모든 작업이 완전히 수행되거나 아니면 전혀 수행되지 않아야 합니다.-. 트랜잭션 내의 모든 작업은 하나의 원자적 단위로 보고 하나라도 실패할 경우 모든 작업이 취소되어야 합니다.-. 예) 계좌 이체 작업 시 한 계좌에서 출금되어 다른 계좌로 입급되는 과정이 발생하는데 이 과정에서 하나의 작업이라도 실패할 경우 출금과 입금 작업 자체가 전부 취소되어야 합니다.2. C.. 2024. 11. 13.
[내일배움캠프] TIL : Projection Projection프로젝션은 JPA로 조회 시 원하는 컬럼을 가져오는 방법입니다.보통 Spring Data JPA에서 사용하는 방식과 QueryDSL에서 사용하는 방식으로 나뉩니다. 프로젝션은 데이터 최적화 및 간결한 데이터 구조를 제공해 성능 향상과 유지보수성에서 큰 장점이 있지만, 수정이 불가능한 읽기 전용 구조와 프로젝션 사용이 많아질수록 복잡해지는 쿼리 관리라는 단점이 있습니다. Base : Store.java@Entity@Table(name = "store")public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(length = 20, unique =.. 2024. 11. 13.
[내일배움캠프] SQL Daily Routine 64. 헤비 유저가 소유한 장소 안녕하세요.64회차 과제 헤비 유저가 소유한 장소입니다.문제 설명PLACES 테이블은 공간 임대 서비스에 등록된 공간의 정보를 담은 테이블입니다.PLACES 테이블의 구조는 다음과 같으며 ID, NAME, HOST_ID는 각각 공간의 아이디, 이름, 공간을 소유한 유저의 아이디를 나타냅니다. ID는 기본키입니다.문제이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부릅니다.헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 SQL문을 작성해주세요.풀이-- 조건-- id, name, host_id-- COUNT(host_id) >= 2-- id ascselect id, name, host_idfrom ( select id, name, host_id, cou.. 2024. 11. 13.
[내일배움캠프] 심화 과제 진행해보기 Lv. 1 플러스 주차 개인 과제를 진행하며 기록을 남겨보기 위해 글을 작성합니다.이번 과제는 레거시 코드를 리펙토링해보는 과제입니다.레거시 코드-. 레거시 코드는 개발된 지 오래되어서 최신 기술이나 표준과는 다소 맞지 않는 코드를 뜻합니다.레거시 코드를 리펙토링해보면-. 레거시 코드를 리펙토링 하기 위해서는 먼저 코드를 확실히 이해하고있어야 하기 때문에 리펙토링을 해보며 코드를 이해하고 분석하는 능력을 키울 수 있습니다.Lv 11. 코드 개선 퀴즈 - @Transaction의 이해할 일 저장 기능을 구현한 API(/todos)를 호출할 때, 아래와 같은 에러가 발생하고 있어요.jakarta.servlet.ServletException: Request processing failed: org.springframew.. 2024. 11. 13.
[내일배움캠프] H2 DB 안녕하세요.H2 데이터베이스H2 DB는 Server Mode, In-Memory Mode, Embedded Mode 3 가지 방식으로 사용할 수 있습니다.1. Server Mode직접 엔진을 설치하여 사용하는 방식으로 Application과 상관 없는 외부에서 DB엔진이 구동되어 DATA가 Application 외부에 저장되기 때문에 Application을 종료해도 DATA가 사라지지 않습니다.Server Mode는 현업에서 사용하는 모드로 컴퓨터에 DB엔진을 설치하고 엔진을 구동하여 사용하는 방식으로 Application과 DB가 분리되어 있기 때문에 여러 Application에서 동일한 DB를 사용하기에 적합합니다.2. In-Memory ModeApplication 내부의 엔진을 사용하는 방식으로 b.. 2024. 11. 12.
[내일배움캠프] 알고리즘 Daily Routine 63. 숫자 짝꿍 안녕하세요.63회차 과제 숫자 짝꿍입니다.문제두 정수 X, Y의 임의의 자리에서 공통으로 나타나는 정수 k(0 ≤ k ≤ 9)들을 이용하여 만들 수 있는 가장 큰 정수를 두 수의 짝꿍이라 합니다(단, 공통으로 나타나는 정수 중 서로 짝지을 수 있는 숫자만 사용합니다). X, Y의 짝꿍이 존재하지 않으면, 짝꿍은 -1입니다. X, Y의 짝꿍이 0으로만 구성되어 있다면, 짝꿍은 0입니다.0예를 들어, X = 3403이고 Y = 13203이라면, X와 Y의 짝꿍은 X와 Y에서 공통으로 나타나는 3, 0, 3으로 만들 수 있는 가장 큰 정수인 330입니다. 다른 예시로 X = 5525이고 Y = 1255이면 X와 Y의 짝꿍은 X와 Y에서 공통으로 나타나는 2, 5, 5로 만들 수 있는 가장 큰 정수인 552입니.. 2024. 11. 12.