필요한 MSSQL 저장 프로시저 (미리 생성되어 있어야 함):-- Stored Procedure for INSERTCREATE PROCEDURE sp_InsertProduct @Name NVARCHAR(50), @Price DECIMAL(18, 2), @Description NVARCHAR(MAX) = NULL, @Id INT OUTPUT -- 새로 생성된 ID를 반환하기 위함ASBEGIN INSERT INTO Products (Name, Price, Description) VALUES (@Name, @Price, @Description); SET @Id = SCOPE_IDENTITY(); -- IDENTITY 컬럼의 마지막 삽입 ID를 가져옵니다.END;GO-- S..
저장 프로시저 결과 매핑 전략키 없는 엔티티 타입 (Keyless Entity Type)으로 매핑 (권장):저장 프로시저의 결과가 BookTag 엔티티의 컬럼과 완전히 일치하지 않거나, 더 많은 조인된 정보(예: Book.Title, Tag.Name)를 포함하고 싶을 때 사용합니다.이 방법은 저장 프로시저의 결과를 읽기 전용으로 사용하며, 복잡한 쿼리나 보고서 출력에 매우 유용합니다.여기서는 키 없는 엔티티 타입을 사용하여 저장 프로시저 결과를 매핑하는 방법을 예제로 설명하겠습니다.예제: 저장 프로시저 결과 매핑시나리오: BookId, TagId뿐만 아니라 Book의 제목(Title), Tag의 이름(Name)까지 포함된 상세 정보를 가져오는 저장 프로시저를 만들고 싶습니다.1단계: MSSQL 저장 프로..
다대다 관계와 조인 테이블: 추가 컬럼의 의미간단하게 설명하자면, "조인 테이블에 추가적인 컬럼(예: CreatedDate)이 필요하다면 여전히 명시적인 조인 엔티티를 사용해야 합니다"라는 말은 이런 의미입니다.평범한 다대다 관계: EF Core 5.0+의 편리함EF Core 5.0 이상에서는 Book과 Tag처럼 서로 다대다 관계인 두 엔티티가 있을 때, 굳이 BookTag라는 중간 테이블(조인 테이블)을 C# 코드에서 직접 만들지 않아도 됩니다.// Book.cspublic class Book { public int Id { get; set; } public string Title { get; set; } public ICollection Tags { get; set; } }// Ta..
// Models/Author.csusing System.Collections.Generic;using System.ComponentModel.DataAnnotations; // Data Annotations도 함께 사용 가능namespace CoreMVC.Models{ public class Author { public int Id { get; set; } // 기본 키 [Required] [StringLength(100)] public string Name { get; set; } // 탐색 속성 (Navigation Property) // 이 저자가 쓴 도서들의 컬렉션 (일대다 관계의 '다' 부분) p..
1. 패키지 설치:Microsoft.EntityFrameworkCore.SqlServerMicrosoft.EntityFrameworkCore.Tools // visual studio -> 도구 -> NetGet 패키지 관리자 -> 패키지 관리자 콘솔Install-Package Microsoft.EntityFrameworkCore.SqlServerInstall-Package Microsoft.EntityFrameworkCore.Tools // Terminaldotnet add package Microsoft.EntityFrameworkCore.SqlServerdotnet add package Microsoft.EntityFrameworkCore.Tools 2. 데이터베이스 컨텍스트 생성:AppDbCon..
./gradlew bootRun 이란?./gradlew bootRun은 Gradle 프로젝트, 특히 Spring Boot 애플리케이션을 개발 모드에서 실행하는 가장 일반적인 명령어입니다.각 부분을 분해해서 설명해 드릴게요../gradlew (Gradle Wrapper)gradlew는 "Gradle Wrapper"의 약자입니다.역할: 이 스크립트는 해당 프로젝트에 필요한 특정 버전의 Gradle을 자동으로 다운로드하고 사용하게 해주는 역할을 합니다.장점:개발 환경에 Gradle이 설치되어 있지 않아도 프로젝트를 빌드하고 실행할 수 있습니다.팀원 모두가 동일한 Gradle 버전으로 작업하게 하여 빌드 환경의 일관성을 유지하고 "내 컴퓨터에서는 되는데 네 컴퓨터에서는 안돼" 같은 문제를 방지합니다..은 현재 ..

AI: RESTful API를 위한 구조를 설정하고, 필요한 패키지 구조를 만든 후 기본 설정을 추가한다. RESTful API 프로젝트 구조1. 계층 구조Controller 계층: API 엔드포인트를 정의하고 클라이언트 요청을 처리합니다.Service 계층: 비즈니스 로직을 구현합니다.Repository 계층: 데이터베이스 접근을 담당합니다.Entity 계층: 데이터베이스 테이블과 매핑되는 JPA 엔티티를 정의합니다.DTO 계층: 클라이언트와 서버 간 데이터 전송을 위한 객체를 정의합니다.Exception 계층: 예외 처리를 담당합니다.Config 계층: 애플리케이션 설정을 담당합니다. 2. 패키지 구조 3. 주요 기능3.1. RESTful API 엔드포인트GET /api/items: 모든 아이템 조회..
Gradle과 Maven은 자바 프로젝트에서 가장 널리 사용되는 빌드 자동화 도구(Build Automation Tools)입니다. 간단히 말해, 복잡한 소프트웨어 개발 과정을 자동화하고 표준화하는 데 도움을 주는 도구들이라고 생각하시면 됩니다.웹 개발 전문가의 관점에서 두 가지 도구의 핵심적인 특징과 차이점을 설명해 드릴게요.1. Maven (메이븐)정의: Apache Maven은 프로젝트 빌드, 보고, 문서화를 위한 소프트웨어 프로젝트 관리 도구입니다. 특히 자바 프로젝트에서 오랫동안 표준처럼 사용되어 왔습니다.설정 방식: XML 기반의 pom.xml (Project Object Model) 파일을 사용하여 프로젝트의 모든 설정과 의존성을 정의합니다.Convention over Configuratio..
매개변수 타입으로 primitive인 long과 참조형인 Long을 선택할 때 고려해야 할 기준은 다음과 같습니다:null 허용 여부long: null 값을 가질 수 없으며, 기본값이 0입니다.→ 매개변수가 반드시 값이 있어야 하거나, null 상태를 허용하지 않는 경우 사용합니다.Long: null 값을 허용할 수 있습니다.→ 값이 없음을 명시적으로 표현해야 하거나, 데이터베이스 엔티티의 ID 등 초기에는 null인 상태를 허용해야 하는 경우 사용합니다.자동 박싱/언박싱primitive인 long은 연산에서 성능상 유리하지만, Long과의 비교나 컬렉션(Generics)에서는 자동 박싱/언박싱이 일어나므로 주의해야 합니다.프레임워크 및 라이브러리 요구사항JPA 등 ORM에서는 기본 키를 Long (또는..
Spring Boot JPA에서 첫 번째 메소드가 동작하지 않고 두 번째 메소드가 정상적으로 동작하는 이유는 메소드 네이밍 규칙과 JPQL 쿼리의 차이 때문입니다.첫 번째 방식:@Modifying@Transactionalvoid deleteAllByPostId(Long postId);이 방식은 메소드 이름 기반 쿼리(method name query strategy)를 사용합니다. 하지만 여기서 문제는 JPA가 PostComment 엔티티에서 postId라는 필드를 직접 찾으려고 시도한다는 점입니다.실제로는 PostComment 엔티티가 아마도 다음과 같은 구조일 것입니다:class PostComment { @Id private Long id; @ManyToOne private..
- Total
- Today
- Yesterday
- nl2br
- await
- System.Diagnostics
- jstl(java standard tag library)-core
- .submit()
- 스프링 프레임워크(spring framewordk)
- 스프링 프레임워크(spring framework)
- java-개발 환경 설정하기
- system.io
- 스프링 시큐리티(spring security)
- docker
- In App Purchase
- java.sql
- java web-mvc
- REST API
- 진수 변환
- 제품 등록
- 인텔리제이(intellij)
- 문자 자르기
- MainActor
- 스프링 시큐리티(spring security)-http basic 인증
- React
- jstl(java standard tag library)
- 특정 문자를 기준으로 자르기
- 메이븐(maven)
- java 키워드 정리
- 표현 언어(expression language)
- error-java
- jsp 오픈 소스
- 람다식(lambda expression)
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |