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

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를 이용한 로그인 인증 구현하기로그인을 구현하는 방식은 대표적..
vsCode로 자바 프로젝트를 만들고, App.java 파일을 실행해 보았더니 아래와 같이 오류가 발생했다. Error: Could not find or load main class java.test.App Caused by: java.lang.ClassNotFoundException: java.test.App 진짜 아무것도 안 했는데 오류가 발생해서 많이 당황했다. 패키지 변경하기알고 보니 이유는 패키지 이름의 문제였다. "java"로 시작하는 패키지는 JDK에서 사용하는 내장 패키지이므로, 사용자가 직접 "java"로 시작하는 패키지를 생성할 경우 발생하는 오류이다. 따라서 문제가 되는 App.java 위치를 옮겨 패키지를 변경해 주었다.// 패키지 이름 수정 // package java.test; ..
스프링부트에서 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(); ..