일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Exception in thread "main" java.lang.Error
- SOP
- C#
- ERROR_MESSAGE
- RAISERRR
- .NET 8.0
- IT story
- 프로시저
- SSMS
- jpa
- 권한
- Newtonsoft.Json
- MSSQL
- IT
- springboot
- 자바
- cors
- System.Text.Json
- java
- JavaScript
- 스프링 시큐리티
- SQL Server
- OUT 파라미터
- ORM
- github
- 스프링부트
- SQL Server 구성 관리자
- 데이터베이스
- DB
- git
- Today
- Total
목록Java (18)
its_jh_stroy
MyBatisSQL 문과 객체를 매핑하여 관계형 데이터베이스를 쉽게 사용할 수 있도록 지원하는 프레임워크매퍼라는 파일을 통해 쿼리를 작성한다. 데이터베이스 구성하기먼저 데이터베이스에서 테이블을 구성할 것이다.mybatis에 집중할 수 있도록 최대한 간단하게 구성하였다.CREATE TABLE employee ( id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20), salary INT); 프로젝트 구조 생성하기실습에 사용될 DTO, Controller, Service, Repository를 생성할 것이다.아래와 같은 이름으로 생성했고, 편의를 위해 동일한 경로에 생성하였다.- EmployeeDTO- EmployeeController- Emplo..
제어의 역전과 의존성 주입은 스프링의 핵심 개념이라고 할 수 있다.그리고 두 개념을 이해하기 위해서는 스프링 컨테이너와 빈이라는 개념에 대해 이해하고 있어야 한다. 스프링 컨테이너(DI 컨테이너)와 빈(Bean)스프링 프레임워크에서 별도로 관리하는 객체를 모아두는 곳을 스프링 컨테이너라고 한다.이렇게 관리되는 객체를 빈이라고 한다.필요한 경우, 개발자가 빈을 등록하거나 의존성 주입을 통해 빈을 주입받아 사용할 수 있다. 제어의 역전(Inversion of Control)객체를 직접 생성하는 것이 아니라, 외부(스프링 컨테이너)에서 관리하는 객체를 가져와 사용하는 것이다.빈을 제어하는 주체가 스프링 컨테이너에서 개발자로 뒤집혀서 제어의 역전이라 부른다. 의존성 주입(Dependency Injection)외..
String 타입의 불변성(Immutable)자바에서 문자열 타입의 변수는 안전성 및 효율성을 위해 값을 변경할 수 없도록 설계되었다.- 안정성 : 값을 조작할 수 없음- 효율성 : 문자열 상수 풀에 의해 동일한 문자열은 동일한 문자열 리터럴을 참조 아래와 같이 문자열을 변경하면 실제 값이 변경되는 게 아니라 새로운 값이 만들어져 변수에 대입되는 것이다.String str1 = "Hello World";str1 = "Hello Java"; StringBuffer와 StringBuilder문자열의 불변성 때문에 변경이 자주 발생하는 경우, 매번 새로운 String 객체가 만들어지고 기존 객체는 가비지 컬렉션 대상이 되어 성능 저하의 원인이 될 수 있다.이러한 문제 방지를 위해 나온 문자열 변경을 지원하는 ..
자바에서 날짜와 시간을 다루기 위해서 Calendar 클래스를 활용한다.기능 구현을 위해 해당 클래스를 가져온다.import java.util.Calendar; Calendar 인스턴스는 getInstance() 메서드를 통해 생성할 수 있다.Calendar calendar = Calendar.getInstance(); Calendar의 정적 필드로 YEAR, MONTH와 같은 상수가 있다.클래스를 자세히 살펴보면 아래와 같은 형태로 되어있다. // Calendar.classpublic static final int YEAR = 1;public static final int MONTH = 2;// ...public static final int DATE = 5; 위 필드는 날짜나 시간을 가져올 때 ..
== 연산자기본 타입의 경우 값을 비교하고 참조 타입은 메모리 위치 값을 비교한다. qeuals참조 타입에서 객체의 실제 값을 비교하기 위해 사용된다.하지만 오버라이드하지 않으면 객체의 참조 값을 비교하므로 값 비교를 위해 별도의 오버라이드가 필요하다.String 타입의 경우 미리 오버라이드 되어 제공된다. 문자열 상수 풀(String Constant Pool)과 new자바에서 문자열을 만드는 방법은 두 가지가 문자열 리터럴을 대입하는 방법과 new를 통해 생성하는 방법이 있다. 문자열 리터럴을 생성하여 변수를 생성하면 해당 리터럴은 힙 영역의 문자열 상수 풀이라는 공간에 저장된다.이후 같은 문자열로 변수를 생성하려고 하면 미리 저장된 풀의 문자열을 참조한다.이미 풀에 저장된 문자열 리터럴을 통해 변수를..
3-tier 아키텍처는 애플리케이션을 세 가지 계층으로 나누어 개발하는 방법이다.각 계층의 역할이 명확해져, 향상된 유지보수성과 확장성, 재사용성을 가진 프로그램이 된다. 프레젠테이션 계층(Presentation Layer, Controller)HTTP 요청을 받고, 관련된 서비스를 호출하여 비즈니스 계층으로 전달한다.컨트롤러가 프레젠테이션 계층에 속한다. 비즈니스 계층(Business Layer)비즈니스 로직을 처리한다.서비스 클래스가 비즈니스 계층 역할을 한다. 퍼시스턴스 계층(Persistence Layer)데이터베이스와 관련된 작업을 추상화하는 인터페이스이다. 퍼시스턴스 계층은 리포지토리라는 이름으로 작성한다.JPA를 사용하는 경우 스프링에서 자동으로 구현해주는 구현체를 ..

어쩌다 보니 vsCode에서 스프링 부트를 공부해야 하는 상황이 오게 되었다. 공부하면서 intellij를 많이 사용할 것 같지만 vsCode의 접근성을 생각해 프로젝트를 실행하는 과정을 기록해 보려 한다. 우선 실습은 Visual Studio Code와 JDK가 설치되어 있다고 가정하고 시작한다. 확장팩 설치- Extension Pack for Java - Spring Boot Extension Pack - Gradle for Java 추가로 필수 항목은 아니지만 어노테이션을 편하게 처리하기 위해 아래 팩도 설치하면 좋다. - Lombok Annotations Support for VS Code 스프링 부트 프로젝트 생성- "Ctrl + Shift + p"를 입력하고 Command Palette를 열어..
자바 실행 과정자바는 두 번의 컴파일을 거쳐 프로그램이 실행된다..java 확장자로 작성된 프로그램을 첫 번째 컴파일을 통해 .class 파일로 변환하고, JIT 컴파일이라 불리는 두 번째 컴파일을 거쳐 코드를 실행하는 것이다.그러한 과정을 순서되로 나열하면 아래와 같이 동작한다. 1. 자바 코드 작성개발자가 .java 확장자로 소스 코드를 작성한다. 2. 컴파일자바 컴파일러(javac)에 의해 컴파일되어, 바이트 코드가 담긴 .class 파일이 생성된다. 3. 로드JVM의 클래스 로더가 .class 파일을 찾아 메모리에 로드한다.이 과정을 통해 JVM이 .class 파일의 바이트 코드를 읽어들일 수 있게 된다. 4. 링크클래스 로더가 .class 파일 내용이 올바른지 검증하고 실행에 필요한 메모리를 준..