기억노트
[ JPA ] 3. Entity 기본속성
Reference. 한 번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online 이전 글 더보기 1. Repository interface 메서드 2. Query Method 정의 및 실습 1. Entity Annotation @Entity: JPA에서 관리하는 도메인이라는 것을 설정 @Id: PK역할을 하며 필수조건 @GeneratedValue: - 어노테이션 안에 GenerationType strategy() default AUTO; 중요 - 트랜잭션이 종료되기 전, autoIncrese를 통해 아이디 값을 사전에 가져온다. commit 되지 않고, 로직이 종료되어도 키는 증가된다. 1. IDENTITY: Mysql, Mariadb 2. SEQUENCE: Oracle, Postgr..
[ JPA ] 2. Query Method 정의 및 실습
Reference. 한 번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online 이전 글 더보기 1. Repository interface 메서드 1. 쿼리 반환 유형 예를 들어, 아래와 같이 입력이 가능 [이미지. Table 11]를 참조하면 된다. public interface UserRepository extends JpaRepository{ User findByName(String name); Optional findByName(String name); List findByName(String name); Set findByName(String name); ... } 2. 쿼리 주제 키워드 "findUserBy-"로 사용 가능. 그러나 Repository자체에 User를 선언하..
[ JPA ] 1. Repository interface 메소드
1. 사전 준비 -프로젝트 구성 -build.gradle dependencies{ implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' } 1. data.sql을 통해 기초 데이터 생..
[ 스프링부트 / Spring Boot ] 2.5.x data.sql 문제 (h2, mysql)
1. 문제 발생 온라인 강의를 듣는 중, data.sql을 만들어서 기초 데이터를 넣는 부분이 있었다. 같은 소스를 실행했는데, 문제가 발생하여 데이터가 입력되지 않고 에러가 발생했다. 2. 원인 파악 프로젝트 구성 및 테스트 코드 data.sql call next value for hibernate_sequence; insert into user (`id`, `name`, `email`, `created_at`, `updated_at`) values (1, 'martin', 'martin@fastcampus.com', now(), now()); call next value for hibernate_sequence; insert into user (`id`, `name`, `email`, `created..
[ 스프링 / Spring ] 4.x Controller Dto파라미터 매핑 안되는 현상 처리
작업을 하던 중 해결하는데 시간이 걸려 적게 되었다. 1. 문제 기존 시스템 컨트롤러 - > 새 시스템 컨트롤러에 이관하는 작업을 진행했다. 화면상에 form태그(post)로 해당 컨트롤러에 값을 전달한다. dateFrom, dateTo라는 두개의 값을 전달하는데 컨트롤러에 해당 dto에는 값이 매핑되지 않는 현상이 발생하였다. 기존 시스템에서는 dto에 값이 매핑이 됐고, 새 시스템에는 dto에 값이 매핑되지 않았다. 두 시스템은 같은 소스를 옮겨놓은 상태여서 소스는 동일했다. 2. 작업 과정 아래와 같이 문제들이 될만한 요소를 생각해 봤다. 1. 필터(Filter), 인터셉터(interceptor)에서 문제 발생 2. 설정(Config) 관련 문제 2.1. 필터(Filter), 인터셉터(interce..
[ Mybatis / 마이바티스 ] <sql>, <include> 공통 쿼리 묶기
1. 사용법 sql 태그를 이용해 공통으로 사용할 영역을 지정하고 해당 id를 지정한다 (ex: id="user") 쿼리를 붙여야하는 부분에 include 태그를 사용하고 refid에 에 sql태그에 id를 지정한다 (refid="user") 2. 쿼리 SELECT USER_ID, USER_NM FROM USER WHERE 1=1 ORDER BY USER_ID
[ 스프링부트 / Spring Boot ] Swagger 간단히 구현
작업 환경 IDE: intellij JDK: 11 Spring: Spring Boot 2.5.1 + Gradle 1. 들어가기전 Swagger REST 웹 서비스를 제공하려면 프론트엔드 개발자에게 전달해줄 API문서가 필수적이다. 그런 문서를 작업해서 전달해주는건 수고로운 일이다. 그래서 나타난게 Swagger이며, 이것은 문서뿐 아니라 빌드, 테스트 케이스, 등도 작성할 수 있다. 스웨거(Swagger)는 개발자가 REST 웹 서비스를 설계, 빌드, 문서화, 소비하는 일을 도와주는 대형 도구 생태계의 지원을 받는 오픈 소스 소프트웨어 프레임워크이다. 대부분의 사용자들은 스웨거 UI 도구를 통해 스웨거를 식별하며 스웨거 툴셋에는 자동화된 문서화, 코드 생성, 테스트 케이스 생성 지원이 포함된다. / 위키..
[Spring Security + JWT + Swagger] 로그인 구현 - 1. 프로젝트 세팅
작업 환경 IDE: intellij JDK: 1.8 Spring: Spring Boot 2.5.1 + Gradle 1. 들어가기 전 JWT(JSON Web Token)란 무엇인가? 위키백과에서는 아래와 같이 정의한다. 즉 로그인 정보, 등 선택적인 데이터를 암호화하여 JSON으로 보관한다. JSON 웹 토큰(JSON Web Token, JWT)은 선택적 서명 및 선택적 암호화를 사용하여 데이터를 만들기 위한 인터넷 표준으로, 페이로드는 몇몇 클레임(claim) 표명(assert)을 처리하는 JSON을 보관하고 있다. / 위키 백과 JWT 공식 사이트: https://jwt.io/ JWT.IO JSON Web Tokens are an open, industry standard RFC 7519 method ..