7.springBoot/1)개념_springBoot

springBoot_개념_Day_06

구이제이 2024. 4. 3. 15:48

1. 동적쿼리, JAP + 스프링 + H2

2.

3.restful

4.JPA개념 용어

 

5 - JPA -cshop의 entity의 item을 DB에 어노테이션으로 생성하기

6 새로운 테이블 생성  + 문제 풀이

7 레포지토리

8. 자습



ㅡㅡㅡㅡㅡㅡ

 

mybatis 

if문, choose문

 

동적쿼리

 





ㅡㅡㅡ






#폴더생성





#새로운 프로젝트생성





H2는

인메모리 방식 - 데이터베이스 저장x 메모리에서 저장합니다. - 테스팅용으로 사용합니다.

 




maven

스프링프레임워크가 이것과 관련된것을 스프링프레임워크에서

의존관계를 프레임워크가 다운받아주는 것입니다.

 

#m2폴더삭제



 


#

maven - pox.mxl 




#

gradle - build.gradle

 



maven의 groupId, artifactId

 

gradle의 org.springframework.boot = maven의 groupId

gradle의 spring-boot-starter-data-jpa = maven의 artifactId





#메이븐 추가법(dependencies안에 추가)

,

 

#그래이들 추가법(dependencies안에 추가)



#application.properties

 

 




#데이터베이스추가(관계형데이터베이스 mysq, 마리아디비,오라클, msdb, 표준sql문으로 조금씩 다른 차이)



 



실행되는지 확인

 

 

●#3












1.레스트컨트롤은 - html따로 안만듭니다.(개발자가 입력한 문자를 바로 전송할수있습니다.)



 

2.기존의 컨트롤러(html이 필요합니다. 레스트컨트롤러과 다르게 html의 화면을 보여줍니다.)

 




#환경셋팅

auto

 

타임리프추가

 





자동빌드업
























●4

JPA 동작 방식

 

1.엔티티(Entity) : 

데이터베이스의 테이블에 대응하는 클래스

@Entity : jpa가 관리하는 엔티티

 

2.엔티티 매니저 팩토리(Entity Manager Factory) : 

엔티티 매니저 인스턴스(객체)를 관리하는 주체 애플리케이션 실생 시 한 개만 만들어지며 사용자로부터 요청이 오면 엔티니 매니저 팩토리로부터 엔티티 매니저를 생성

 

3. 엔티티 매니저(Entity Manager) : 

영속성 컨텍스트에 접근하여 엔티티에 대한 데이터베이스 작업을 제공, 내부적으로 데이터베이스 커넥션을 사용해서 데이터베이스에 접근

 

3-1) find() : 영속성 컨텍스트에서 엔티티를 검색하고, 

영속성 컨텍스트(Persitence Context)에 없을 경우 

       데이터베이스에서 데이터를 찾아 영속성 컨텍스트에 저장

 

3-2) persist() : 엔티티를 영속성 컨텍스트에 저장

3-3) remove() : 엔티티 클래스를 영속성 컨텍스트에서 삭제

3-4) flush() : 영속성 컨텍스트에 저장된 내용을 테이터베이스에 반영




#영속성 컨텍스트(에게 관리받는 대상들을 영속성의 기준이 됩니다.)

영구적으로 저장하기위해 

엔티티를 만들고 영구적으로 저장할려고 만든 환경이 영속성 컨텍스트입니다.



영속성 컨텍스트(



새롭게 만드는것 비영속성 

영속성 - 저장이 되는 상태(view는 아니다)

#

준영구성 - 따로때어나오는것

 

#

삭제 - 

 

#

Persitence Context

Map형식으로 관리됩니다. 키와 밸류로 <key, value>





ㅡㅡㅡ

 

<db 테이블>

Item : 상품 테이블

상품코드 : id Long 

상품명 : itemNm String

가격 : price int

재고수량 : StockNumber  int

상품상세설명 : itemDetail String

상품판매상태 : itemSellStatus ItemSellstatus

등록시간 : regTime LocalDateTime

수정시간 : updateTime LocalDateTime



<Item Dto>

private Long id;

private String itemNm;

….

 

private LocalDateTime updateTime

 

<Item Entity>

@Entity 




<Entity 매핑 관련 어노테이션>

@Entity : 클래스를 엔티티로 선언  – 테이블에 대응

@Table : Entity와 매핑할 테이블을 지정

@ID : 테이블의 기본키에 사용할 속성 지정

@GenerateValue : 키 값을 생성하는 전략 명시

@Column : 필드와 컬럼 매칭

@Lob : BLOB - 바이너리 데이터를 DB외부에 저장하기, 이미지, 사운드, 비디오

 

CLOB - 사이즈가 큰 데이터를 외부 파일로 저장하기 위한 데이터 타입,

문자형 대용량 파일

 

@CreationTimestamp : insert시 시간 자동 저장

@UpdateTimestamp : update시 시간 자동 저장

@Enumerated : enum 타입 매핑

@Transient : 해당 필드 데이터베이스 매핑 무시

@Temporal : 날짜 타입 매핑

@CreateDate : 에티티가 생성되어 저장될 때 시간 자동 저장

@LastModifiedDate : 조회한 엔티티의 값을 변경할 때 시간 자동 저장 

 

#

엔티티는 반드시 키를 가지고 있어야 합니다.

 

#

JAP는 테이블을 만들어줍니다. 그래서 개발자는 JAP 어노테이션을 잘활용해야 합니다.



●5 - JPA -cshop의 entity의 item을 DB에 어노테이션으로 생성하기

 

●6 새로운 테이블 생성  + 문제 풀이

next_val  , auto increment ???

 

culmn???




#

새로운 테이블 생성  

testuser테이블

user_id int pk

user_name varchar(20)

user_age int not null

user_grade char(4)







●7 레포지토리

 




#포스트맨 ( 주소를 주고, 어떻게 결과가 나올건지, 보여주는 프로그램) GET에서 POST에서 어떻게 동작하는지 알수있게 됩니다.

 

 

 

 




●8 자습





'7.springBoot > 1)개념_springBoot' 카테고리의 다른 글

springBoot_개념_Day_08  (0) 2024.04.04
springBoot_개념_Day_07  (0) 2024.04.03
springBoot_개념_Day_05  (0) 2024.04.03
springBoot_개념_Day_04  (0) 2024.04.03
springBoot_개념_Day_03  (0) 2024.04.03