일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- C#
- SOP
- IT story
- 스프링부트
- 스프링 시큐리티
- 권한
- RAISERRR
- OUT 파라미터
- cors
- SQL Server 구성 관리자
- System.Text.Json
- jpa
- java
- ORM
- IT
- JavaScript
- 데이터베이스
- 자바
- Exception in thread "main" java.lang.Error
- ERROR_MESSAGE
- DB
- 프로시저
- springboot
- SQL Server
- github
- .NET 8.0
- MSSQL
- git
- Newtonsoft.Json
- SSMS
- Today
- Total
목록분류 전체보기 (45)
its_jh_stroy
도메인(Domain)네트워크 상에서 리소스를 식별하는 고유한 주소이다.일반적으로 도메인은 TLD와 SLD라고 하는 두 부분으로 구성된다. TLD(Top Level Domain, 최상위 도메인)도메인의 가장 오른쪽 부분이다.- gTLD(General Top Level Domain) - 전 세계적으로 사용되는 최상위 도메인- ccTLD(Country Code Top Level Domain) - 국가 코드를 나타내는 최상위 도메인 SLD(Second Level Domain, 2차 도메인)TLD의 왼쪽 부분으로 도메인 이름을 나타낸다.TLD와 마찬가지로 전 세계적으로 사용되는지, 국가 코드를 표현하는지에 따라 gSLD와 ccSLD로 나뉜다. 일반적으로 TLD와 SLD라고 하면 gTLD와 gSLD를 생..

관계형 데이터베이스에서 중복 데이터를 최소화하여 데이터 무결성을 유지하기 위한 작업을 정규화라 한다.정규화는 테이블을 분해하며 진행되는데, 분해 방식에 따라 정규화 단계가 정해진다. 제1 정규화(1NF)모든 속성은 원자값을 갖는다.원자값이란 더 이상 나눌 수 없는 개별적인 항목이다.예를 들어, 수업이라는 속성이 "수학, 과학, 영어"라는 비원자값을 각 과목별로 세 개의 행으로 분리할 수 있다.제1 정규화를 만족하는 조건으로는 기본 키가 필요하다는 특징이 있다. 제2 정규화(2NF) : 부분 종속 제거1NF를 만족하면서 기본 키의 부분 집합에 의존하는 속성을 제거해야 한다.복합 키를 가지는 경우, 기본 키의 일부에만 의존하는 속성을 분리하라는 의미이다.아래와 같이 주문 Id와 상품 Id 필드를 복합 키로 ..

Visual Studio 2022를 사용하며 C# 개발을 하는 중, 평소에 사용하던 단축키가 동작하지 않는 문제가 발생하였다.일단은 급한 대로 하던 개발을 하려고 했지만, prop 명령으로 프로퍼티를 만들 수 없다는 것이 너무 불편하여 바로 문제를 해결하기로 했다.다행히 문제 해결 과정은 어렵지 않았다.단순히 Visual Studio의 설정 문제였고, 해당 설정만 바꾸어주면 해결되는 것이었다. 문제 해결Visual Studio를 실행하고 아래 경로에 따라 설정 화면을 열어준다.도구 - 옵션 - 텍스트 편집기 - C# - IntelliSense 아래와 같은 화면이 표시되는데, "코드 조각 항상 포함" 항목을 체크하면 된다. 위 과정이 끝나면 평소 사용하던 단축 명령어들이 문제없이 동작하게 된다.

배포할 솔루션 만들기먼저 배포할 웹 솔루션을 만들어야 한다.여기에서는 ASP.NET Core 웹앱(Model-View-Controller) 단일 프로젝트로 구성된 솔루션을 만들었다. docker 파일 만들기배포를 위해서는 docker 파일이 필요하다.생성된 프로젝트에서 docker 파일을 생성한다.- 추가 - docker 지원대상 OS는 Linux로 하였다. docker 파일이 생성되면 Visual Studio 상단의 실행 버튼이 Docker로 바뀌는 것을 확인할 수 있다. 프로그램을 실행하면 docker desktop에 컨테이너와 이미지가 만들어져 있을 것이다. 이제 외부로부터 접속할 수 있는 환경이 구성되었다.위 이미지를 살펴보면 컨테이너는 두 개의 포트가 있다고 되어있는데, 실제 실행 중인 웹 애플..
Spring Data JPA스프링에서 제공해 주는 JPA 인터페이스JPA 인터페이스 기반으로 더욱 추상화된 메서드를 제공받을 수 있다. 데이터베이스 연결하고 모델 만들기Spring Data JPA는 데이터베이스와 상호작용을 위한 것이기 때문에 데이터베이스 연결과 모델을 만들어야 한다.여기서는 스프링부트에서 제공하는 H2 데이터베이스를 사용할 것이다.# application.propertiesspring.jpa.show-sql=truespring.jpa.properties.hibernate.format_sql=truespring.jpa.defer-datasource-initialization=true// Food.java@NoArgsConstructor(access = AccessLevel.PROTECTE..
JPA(Java Persistance API)자바에서 표준으로 사용하는 ORM 인터페이스내부적으로는 JDBC를 사용하여 데이터베이스와 상호작용한다. JPA의 구현체 HibernateJDBC와 마찬가지로 JPA도 인터페이스 구성되어 있고, 인터페이스명은 EntityManager이다.구현체는 주로 Hibernate라는 객체인데, 직접 구현하는 것이 아니라 스프링부트에서 자동으로 만들어진다.스프링 빈을 관리하기 위해 스프링 컨테이너를 사용하는 것처럼, JPA 엔티티를 관리하는 공간으로 Entity Context가 있다.Hibernate는 데이터베이스와 상호작용하는 메서드를 제공하고 Entity Context를 관리하는데, 엔티티의 라이브 사이클(생성~소멸)을 관리한다는 의미이다.데이터베이스는 MySQL로 정하..
JDBC (Java Database Connectivity)자바가 데이터베이스와 상호작용할 수 있도록 지원하는 API이번 포스팅에서는 MySQL에 연결하는 것으로 코드를 작성하였다. JDBC의 구현체 Hikari자바에서 JDBC는 DataSource라는 인터페이스로 구성되어 있다.따라서 내부 메서드의 구현이 없는 상태인데, 주로 Hikari라는 구현체를 통해 객체를 만든다.Hikari는 개발자가 따로 구현하는 것이 아니라 스프링부트에서 자동으로 구현해 준다. 의존성 추가하기// MySQL에 연결하기 위한 JDBC 드라이버 제공runtimeOnly 'com.mysql:mysql-connector-j' // JDBC 의존성, DataSource 객체를 스프링 컨테이너에 주입한다.implementation ..
Optional 타입은 스프링부트를 다루다보면 자주 나오는 타입이다.나중에 한 번 정리해야지 미루고 있다가 이번 기회에 가볍게라도 정리해보려고 한다. Optional자바 공식 문서에 나와있는 Optional 타입에 대한 설명이다.A container object which may or may not contain a non-null value. Optional 타입은 null을 포함할 수 있는 타입이다. 아래와 같이 자바에서는 기본 타입에 null을 할당할 수 없다.// Type mismatch: cannot convert from null to intint a = null; 개발 중 값을 주고받다 보면 변수에 null이 들어가는 경우도 있는데 그런 상황에서 사용될 수 있다.대표적으로 스프링부트에서 J..
Pagination 처리를 위해서는 SQL 문을 작성하여 데이터를 조회할 수 있다.Spring Data JPA를 사용하는 경우에는 관련된 기능을 제공하여 간편하게 작성하는 것도 가능하다.이번 포스팅은 서버에서 페이지를 나누어 반환하는 것만 다루고, 화면에서 페이지를 이동하는 버튼은 만들지 않는다는 것을 참고해야 한다. Page 또는 Slice 클래스를 통해 Pagination을 구현할 수 있다.두 클래스의 차이는 아래와 같다.Page - 전체 데이터를 조회하여 성능이 낮은 편이다.- 전체 데이터와 총 페이지 수와 같은 정보를 제공한다.Slice- 지정된 페이지의 데이터만 조회하여 성능이 높은 편이다. 위 특징을 참고하여 상황에 맞추어 사용할 클래스를 선택하면 된다. Page 클래스로 구현한 Paginat..
Spring Security를 통해 인증된 사용자 권한을 기반으로 프로그램을 제어할 수 있다.권한 제어를 위해서는 인증 기능이 구현되어야 하므로 아래 포스팅 소스에 이어서 작성할 것이다.[Springboot] Spring Security로 인증과 권한 부여 (tistory.com) [Springboot] Spring Security로 인증과 권한 부여Spring Security에 대해 공식 문서에서는 아래와 같이 정의한다.Spring Security is a powerful and highly customizable authentication and access-control framework. It is the de-facto standard for securing Spring-based applica..