본문으로 건너뛰기
코드룸CODE ROOMTENMO ↗

기술 블로그

웹과 앱을 만들며 남긴 기록 447편입니다.

MyBatis Insert 구문에서 resultType이 사용되지 않는 이유

누군가에게는 당연한 이야기겠지만, Java를 처음 접한 누군가에게.. 왜 MyBatis의 resultType은 Select 구문에서만 사용할까요? MyBatis에서 resultType 은 주로 select 구문에서 사용됩니다. 이는 select 구문이 데이터베이스로부터...

Next.js와 MongoDB로 손쉽게 구현하는 Pagination

※ 이 게시글은 Category가 FrontEnd로 설정되어 있지만, 실제로는 BackEnd 관련 내용도 포함하고 있습니다. FrontEnd 지식만으로는 이해하기 어려울 수 있으므로, 간단한 BackEnd 코드에 대한 이해가 필요합니다. 데이터가 많아질수록 모든 데이터...

Java Service 계층: 비즈니스 로직을 관리하는 핵심 컴포넌트

Java Service 계층 은 애플리케이션의 비즈니스 로직을 처리하는 중요한 계층입니다. 이 계층은 데이터 접근 계층(DAO)과 프레젠테이션 계층(Controller) 사이의 중간 역할을 하며, 비즈니스 로직을 캡슐화하고 재사용성을 높이는 핵심적인 역할을 합니다. 주...

Java DAO로 데이터베이스 접근 최적화하기!

Java DAO (Data Access Object) 제대로 활용하기 DAO(Data Access Object)는 데이터베이스와의 상호작용을 담당하는 객체로, 데이터베이스 작업을 추상화하여 비즈니스 로직과 데이터 접근 로직을 분리하는 역할을 합니다. DAO 패턴을 사용...

Java VO와 Lombok으로 개발 속도 높이기!

Java VO(Value Object) 제대로 이해하기 Java에서 VO(Value Object)는 특정 엔티티를 나타내기 위해 주로 사용되는 클래스입니다. VO는 데이터베이스의 레코드를 객체로 매핑하기 위한 데이터 구조체로, 주로 데이터를 전달하거나 저장하는 데 사용...

'Back to Top' 버튼 구현하기, 사용자 경험을 극대화하는 간단한 방법

웹 페이지가 길어질수록 사용자가 스크롤을 많이 해야 하는 경우가 생깁니다. 이때, 페이지의 맨 위로 쉽게 이동할 수 있는 "Back to Top" 버튼 을 제공하면 사용자 경험을 크게 향상시킬 수 있습니다. "Back to Top" 버튼의 필요성 편리함 : 사용자들이 ...

MyBatis에서 발생하는 Bad SQL Grammar 에러 해결: 세미콜론(;) 문제 확인하기

SQL 문법에 문제가 있을 때 발생하는데, 특히 세미콜론(;) 사용과 관련된 문제로 자주 발생합니다. 1. bad SQL grammar 오류란? MyBatis에서 bad SQL grammar 오류는 SQL 문이 잘못되었을 때 발생합니다. 이는 SQL 문법 오류로 인해 ...

Next.js에서 Route Handler와 Server Actions의 차이점

Next.js를 사용하면서 데이터 페칭을 할 때, "Route Handlers"와 "Server Actions"라는 두 가지 주요 방법이 있습니다. 이 두 가지는 각각의 목적과 사용 사례가 다릅니다. 주요 차이점 공개 여부 : Route Handlers는 외부에서 AP...

Do-While 문에 대해 알아보자

do-while 문은 코드 블록을 최소 한 번 실행한 후 조건을 검사하는 제어 흐름 문입니다. 이 반복문은 조건이 거짓이라도 코드 블록을 최소 한 번 실행해야 할 때 유용합니다. 문법) do { // 실행할 코드 } while (조건); 주요 특징 보장된 실행 : 조건...

Next.js 14 가장 기본적인 Metadata 설정

Next.js를 사용하면 SEO 최적화라는 얘기가 나옵니다. SSR을 통한 SEO 최적화도 맞지만, 공유성을 높이기 위해서는 Metadata 관리에 대해서도 빠질 수 없습니다. Next.js Metadata란? Metadata는 Next.js에서만 사용하는 게 아닙니다...

@RequestMapping과 @GetMapping, @PostMapping의 차이

@RequestMapping 정의: @RequestMapping 어노테이션은 Spring Framework의 초기 버전에서 제공된 기능으로, HTTP 요청을 특정 핸들러 메소드에 매핑하는 데 사용됩니다. 이 어노테이션은 다양한 HTTP 메소드를 처리할 수 있는 속성을 ...

robots.txt와 robots.ts의 차이

결론 robots.txt 와 robots.ts 의 선택은 웹사이트의 특정 요구 사항과 기술 스택에 따라 다릅니다. 정적 사이트 나 간단한 크롤링 규칙을 가진 사이트의 경우, robots.txt 가 가장 쉽고 효과적인 방법입니다. 동적 사이트 에서 다양한 크롤링 규칙을 ...

Docker Images, Containers, Volumes 이해하기

Docker를 처음 사용하는 경우, Containers, Images, Volumes와 같은 개념을 이해하는 것이 매우 중요합니다. 이 세 가지 구성 요소는 Docker의 기본 요소이며 각각의 역할이 매우 구체적입니다. 1. Docker Images (도커 이미지) D...

Next.js에서 Metadata 크롤링 거부 방법

웹 크롤링은 데이터를 수집하고 분석하는 중요한 도구지만, 모든 웹사이트가 크롤링을 허용하는 것은 아닙니다. 특히 민감한 정보나 개인 데이터를 보호하기 위해 일부 웹사이트는 메타데이터에 대한 접근을 제한해야 할 필요가 있습니다. 메타데이터 크롤링은 웹페이지의 메타데이터,...

React 'use client'와 'use server'에 대해서 Canary

Next.js뿐 아니라, React 19 에서 도입된 서버 Component와 Client Component를 구분하기 위한 지시어입니다. 서버 또는 클라이언트에서만 실행되어야 하는 걸 명시적으로 알릴 수 있기 때문에, 성능 최적화와 명확한 코드 구조를 달성할 수 있습...

PostgreSQL에서 사용자 계정과 데이터베이스 생성하기

PostgreSQL은 강력하고 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 데이터베이스를 효율적으로 관리하기 위해서는 적절한 사용자와 권한 설정이 필수적입니다. PostgreSQL에서 새로운 사용자와 데이터베이스를 생성하고, 사용자에게 권한을 부여하...

isComposing 속성을 이용하여 입력 중 상태 감지하기

키보드 입력은 웹과 앱 개발에서 흔히 볼 수 있는 사용자 상호작용 중 하나입니다. 사용자가 입력을 완료했는지 아니면 여전히 작성 중인지를 판단하는 것은 사용자 경험을 향상시키는 데 중요한 역할을 합니다. isComposing 속성을 활용하면 사용자의 입력 상태를 감지할...

Optional Chaining 가이드

Optional Chaining ?. 은 JavaScript에서 중첩된 객체의 프로퍼티에 안전하게 접근할 수 있게 해주는 연산자입니다. 이 기능을 사용하면, 프로퍼티가 존재하지 않을 때 에러를 방지하며 코드의 안정성을 높일 수 있습니다. Optional Chaining...

Java 일반적인 폴더 구조

src/ └── main/ └── java/ └── com/ └── example/ └── myproject/ ├── controller/ # HTTP 요청을 처리 ├── repository/ # 데이터베이스 접근 로직 ├── service/ # 비즈니스 로직 ├── ...

프로그래머스 문자열 묶기 JavaScript

문자열 배열 strArr 이 주어집니다. strArr 의 원소들을 길이가 같은 문자열들끼리 그룹으로 묶었을 때 가장 개수가 많은 그룹의 크기를 return 하는 solution 함수를 완성해 주세요. for...of를 통해 배열을 순회합니다. temp[length] =...