분류 전체보기(49)
-
라이브러리 살펴보기(JPA)
테스트 라이브러리 spring-boot-starter-test junit: 테스트 프레임워크 mockito: 목 라이브러리 assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리 spring-test: 스프링 통합 테스트 지원 핵심 라이브러리 스프링 MVC 스프링 ORM JPA, 하이버네이트 스프링 데이터 JPA 기타 라이브러리 H2 데이터베이스 클라이언트 커넥션 풀: 부트 기본은 HikariCP WEB(thymeleaf) 로깅 SLF4J & LogBack 테스트 *참고: 스프링 데이터 JPA는 스프링과 JPA를 먼저 이해하고 사용해야 하는 응용기술이다. 출처 : 인프런 강의: 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 https://www.inflearn.com/co..
2023.05.05 -
프로젝트 생성(JPA)
Spring.io에서 spring web, thymeleaf, H2 databsase, Lombok, Spring Data JPA 를 다운 받아줌. (*1. Java 17 이상을 사용해야 합니다, 2. H2 데이터베이스를 2.1.214 버전 이상 사용해주세요. 프로젝트 안 build.Gradle 전체 설정. plugins { id 'org.springframework.boot' version '2.4.1' id 'io.spring.dependency-management' version '1.0.10.RELEASE' id 'java' } group = 'jpabook' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' configurations { compil..
2023.05.05 -
FK(외래 키)
FK란? FK는 외래 키라는 뜻으로서, 현재 테이블이 아니라 다른 테이블에 있는 PK(기본 키)를 참조하는 키라고 보면 된다. FK사용법 FK는 뜻에서도 말했듯이 다른 테이블에서 기본키를 참조하는 키라고 했는데 다음 그림을 보면, plant에 있는 PK들은 그 테이블에 기본 키로 설정이 되어있는 것을 볼수있다. 그리고 delivery를 보면, 기본 키는 설정이 따로 되어있고, plant에 있는 데이터를 참조하기 위해 FK로 *_plant_id로 가져온것을 볼 수 있다.
2023.05.03 -
PK(Primary Key)
PK란? 관계형 데이터베이스에서 레코드의 식별자로 가장 적합한것으로 선택된 키이다. 그리고 이것을 우리는 "기본 키",PK라고 부른다. PK를 사용할 때 조건 PK는 데이터베이스 테이블의 레코드를 식별하기 때문에 따라오는 제약 조건이 있다. PK의 값은 고유해야 하며(중복 안됨), 변하지 않아야 한다. 두 개 이상의 열을 PK로 설정한 경우 한 열에 중복된 값이 있을 수는 있지만 기본 키에 정의된 모든 열의 값의 조합은 고유해야 함. NULL값 불가능. 테이블은 하나의 기본 키만 가질수있음. PK 매핑 방법 직접 할당 : user.setId(1L);과 같이 기본 키를 직접 할당한다. 자동 생성 : 데이터베이스에서 자동으로 생성한다. DB 벤더마다 지원하는 방식이 다르기 때문에 여러 가지 방법이 있다.
2023.05.03 -
AOP 적용
시간 측정 AOP 등록 package com.example.demo.aop; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component; @Aspect @Component //이걸 쓰든지 Bean을 직접 주입하던지. // @Bean // public TimeTraceAop timeTraceAop() { // return new TiomTraceAop(); // } SpringConfig에 추가하면됨 public class TimeTraceAop {..
2023.05.03 -
AOP
package com.example.demo.service; @Transactional public class MemberService { /** * 회원가입 */ public Long join(Member member) { // 가입할때 나오는 시간 long start = System.currentTimeMillis(); // 시간을 밀리세컨드로 나오게끔 해줌. 시작하고 try { validateDuplicateMember(member); //중복 회원 검증 memberRepository.save(member); 멤버 레퍼지토리에 멤버를 저장해주고, return member.getId(); //멤버에 getId를 반환. } finally { long finish = System.currentTimeMi..
2023.05.03