이전 포스팅
https://turtlejacob.tistory.com/70
jscode - 스프링부트 입문 클래스 (CURD APi). 3
이전 포스팅 https://turtlejacob.tistory.com/69 jscode - 스프링부트 입문 클래스 (api와 네트워크). 2 이전 포스팅 https://turtlejacob.tistory.com/68 jscode - 스프링부트 입문 클래스 ot. 1 이번 회차에 한 내용은 간단
turtlejacob.tistory.com
jscode - 스프링부트 입문 클래스 4회차 학습내용 기록( 2023.07.17 )
학습목표
- 예외처리
- Spring Data JPA 실습
예외처리
- 예상 가능한 범위라면 예외를 던져준다
- 예상 못하는 경우는 핸들러로 예외처리용 클래스를 만들어서 처리한다.
- 스프링 예외처리와 관련된 포스팅
- https://mangkyu.tistory.com/204
Spring Data JPA 실습
- 엔티티 객체를 만들어주고 사용할 Repository 인터페이스에 JpaRepository를 상속시킨다.
- 여기서 JpaRepository에 제네릭 값으로 만들은 엔티티 객체와 id 타입을 넣어준다 아래는 예시이다.
@Table
@Entity
public class ProductEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column
private String name;
@Column
private Long price;
// 생성자와 getter
public ProductEntity() {
}
public Long getId() {
return id;
}
public String getName() {
return name;
}
public Long getPrice() {
return price;
}
}
public interface ProductJpaRepository extends JpaRepository<엔티티, id타입> {
}
- 예시와 같게 구현해준다면 ProductJpaRepository를 구현체로 구현하지 않고 controller에 필드값으로 넣어주면 스프링에서 해당 필드를 통해 jpa기능을 사용할 수 있도록 제공해준다.
후기
자바 스프링을 공부를 시작하자 하면 스프링이 뭐고 spring jpa가 뭐고 뭐가 뭔지 모르겠는데 이에 대한 감을 잡기 좋았다
또한 간단한 예제를 통해서 직접 만져보면서 실습하는 과정이 좋았다.
과제
- 데이터 베이스의 특징에 대해 설명헤주세요
- 데이터 중복 최소화
- 데이터 일관성 : DB 내의 데이터는 미리 정의된 규칙과 제약 조건에 따라 일관성을 유지
- 데이터 무결성 : 입력된 데이터가 정확하고 유효한 값으로 유지되오록 보장
- 동시성 관리 : 여러 사용자가 동시에 접근할 수 있도록 관리
- 보안
- 백업 및 회복
- 데이터 접근과 검색
- 데이터 분리 : 데이터와 데이터 처리를 분리하여 응용 프로그램을 유연하게 유지,보수할 수 있도록함
- 확장성 :
- 데이터 모델링 : 데이터를 효과적으로 구조화하고 모델링하여 데이터의 관계를 표현한다.
- 데이터베이스 언어( DDL, DML, DCL)에 대해 설명해주세요
- DDL(Data Definition Langeuage)
- 데이터베이스의 구조를 정의하고 관리하기 위한 언어
- DB의 테이블,인덱스,뷰 등의 구조를 생성,변경,삭제하는데 사용됨
- CREATE, ALTER, DROP,TRUNCATE
- DML(Data Manipulation Language)
- DB의 실제 데이터를 조회, 삽입, 수정, 삭제하는데 사용되는 언어
- 즉 데이터 조작과 관련된 작업을 수행
- SELECT, INSERT, UPDATE, DLELTE
- DCL(Data Control Language)
- DB의 접근 권한과 보안을 관리하는데 사용
- GRANT(권한부여), REVOKE(권한 회수)
- DDL(Data Definition Langeuage)
- 트랜잭션이란 무엇인지 설명해주세요
- DBMS에서 수행되는 작업의 기본 단위
- 이는 DB의 일관성과 무결성을 유지하기 위한 것
- 트랜잭션은 ACID 속성을 만족해야한다
- ACID란
- 원자성 : 하나의 트랜잭션은 모든 단계가 완전히 수행되거나, 전혀 수행되지 않아야하면(오류나면 롤백)
- 일관성
- 고립성 : 하나의 트랜잭션은 다른 트랜잭션과 영향을 주고 받지 않고 독립적이어야 한다.
- 지속성 : 트랜잭션이 완료된다면 그 결과는 저장되어야한다.
- ACID란
- 상품 상세조회 구현하기
- api/products?id=1 로 요청하면 id가 1인 상품을 데이터베이스 테이블에서 찾아서 리턴하는 api를 구현해보세요.
@GetMapping(value = "api/products", params = "id")
public ProductEntity getProductId(@RequestParam(value = "id", required = true) Long id) throws Exception {
Optional<ProductEntity> index= productRepository.findById(id);
index.orElseThrow(() -> new Exception("찾을 수 없는 상품입니다."));
return index.get();
}
다음 포스팅
https://turtlejacob.tistory.com/72
jscode - 스프링부트 입문 클래스 (Spring Data JPA 활용과 예외처리). 5
이전 포스팅 https://turtlejacob.tistory.com/71 jscode - 스프링부트 입문 클래스 (Spring data JPA). 4 이전 포스팅 https://turtlejacob.tistory.com/70 jscode - 스프링부트 입문 클래스 (CURD APi). 3 이전 포스팅 https://turtleja
turtlejacob.tistory.com
'Development studies > spring' 카테고리의 다른 글
jscode - 스프링부트 입문 클래스 (MVC). 6 (0) | 2023.08.16 |
---|---|
jscode - 스프링부트 입문 클래스 (Spring Data JPA 활용과 예외처리). 5 (0) | 2023.08.16 |
jscode - 스프링부트 입문 클래스 (CURD APi). 3 (0) | 2023.08.16 |
jscode - 스프링부트 입문 클래스 (api와 네트워크). 2 (0) | 2023.08.09 |
jscode - 스프링부트 입문 클래스 (ot). 1 (0) | 2023.08.09 |