일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SOP
- Newtonsoft.Json
- 스프링 시큐리티
- 데이터베이스
- MSSQL
- java
- cors
- 권한
- jpa
- SQL Server
- git
- .NET 8.0
- C#
- IT story
- springboot
- OUT 파라미터
- JavaScript
- ERROR_MESSAGE
- 프로시저
- System.Text.Json
- SSMS
- DB
- 스프링부트
- github
- 자바
- Exception in thread "main" java.lang.Error
- IT
- RAISERRR
- SQL Server 구성 관리자
- ORM
- Today
- Total
목록스프링부트 (11)
its_jh_stroy
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 ..
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..

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 applications. 커스터마이징이 가능한 인증과 접근 제어를 제공하는 사실상 표준이라고 되어있다.인증이란 사용자가 누구인지 확인하는 것이고, 접근 제어는 권한 부여(authorization)를 의미한다.인증과 권한 부여를 조금 더 쉽게 구현할 수 있도록 도와주는 것이다. Spring Security를 이용한 로그인 인증 구현하기로그인을 구현하는 방식은 대표적..
스프링부트에서 thymeleaf 라이브러리는 웹사이트의 공통된 부분을 하나씩 작성하지 않고, 템플릿 형태를 만들어 개발할 수 있는 기능을 지원한다.몇 가지 속성을 통해 사이트의 공통 양식을 지정하여 효율적인 화면 개발을 할 수 있다.페이지는 아래와 같이 templates 폴더에 네 가지 html 파일을 구성할 것이다.- layoutPage.html - content.html- fragments/header.html- fragments/footer.html 의존성 추가시작 전 아래와 같이 build.gradle 파일에 의존성을 추가한다.implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'implementation 'nz.net.ul..
REST API 서버에서 예외 한 번에 처리하기웹 개발에서 가장 기본적인 예외 처리 방식은 컨트롤러에 try~catch 문을 작성하여 예외를 처리하는 것이다.이러한 방식은 클래스 내 메서드가 많아질수록 중복된 코드도 많아지게 된다. 클래스 내부에서 예외를 한 번에 처리하기ExceptionHandler 어노테이션을 사용하면 예외를 한 번에 처리할 수 있다.@RestController@RequiredArgsConstructor public class ItemController { // ... @GetMapping("/list") String list(Model model) throws Exception { List result = itemRepository.findAll(); ..
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)외..
3-tier 아키텍처는 애플리케이션을 세 가지 계층으로 나누어 개발하는 방법이다.각 계층의 역할이 명확해져, 향상된 유지보수성과 확장성, 재사용성을 가진 프로그램이 된다. 프레젠테이션 계층(Presentation Layer, Controller)HTTP 요청을 받고, 관련된 서비스를 호출하여 비즈니스 계층으로 전달한다.컨트롤러가 프레젠테이션 계층에 속한다. 비즈니스 계층(Business Layer)비즈니스 로직을 처리한다.서비스 클래스가 비즈니스 계층 역할을 한다. 퍼시스턴스 계층(Persistence Layer)데이터베이스와 관련된 작업을 추상화하는 인터페이스이다. 퍼시스턴스 계층은 리포지토리라는 이름으로 작성한다.JPA를 사용하는 경우 스프링에서 자동으로 구현해주는 구현체를 ..