Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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 31
Tags more
Archives
Today
Total
관리 메뉴

기분좋음

국비 65 일차 본문

IT 포트폴리오/국비지원교육 Diary

국비 65 일차

기분좋음:) 2022. 3. 24. 19:17
반응형

spring 2강

 

MVC  (Model - View - Controller)

 

 하나의 프로젝트 구성시, 구성요소를 3가지 역할로 나눈 패턴

 많이 사용되는 소프트웨어 디자인 패턴 -더 나은 업무의 분리와 향상된 관리 제공

구성요소  설명
model 데이터와 비즈니스 로직을 관리
view 레이아웃과 화면 처리
controller 명령을 모델과 뷰 부분으로 라우팅 (이벤트 처리)

 

데이터베이스 언어 SET 변경 (한글 입출력 가능하게)

cmd 오픈
1. C:\>sqlplus /nolog
2. SQL> conn system/패스워드 as sysdba
3. SQL> UPDATE sys.props$ SET value$='AL32UTF8' WHERE name='NLS_CHARACTERSET';
4. SQL> UPDATE sys.props$ SET value$='AL16UTF16' WHERE name='NLS_NCHAR_CHARACTERSET';
5. SQL> commit;
6. SQL> shutdown immediate;
7. SQL> startup;

언어 SET 조회

SELECT NAME,VALUE$ FROM PROPS$ WHERE NAME ='NLS_LANGUAGE' OR NAME ='NLS_TERRITORY' OR NAME ='NLS_CHARACTERSET';

 

 

https://5happyman.tistory.com/84

환경설정 완료 후

 

데이터베이스(sql)연동후 테이블 생성

-HR계정으로 접속후 생성

Application.yml ddl-auto: create 상태 - 처음에 생성시에만

 

users.java

USERS 테이블 생성

 

users테이블 형태

 

@Table 

맵핑할 테이블을 지정

@Column

객체 필드와 DB테이블 속성을 맵핑

@SequenceGenerator

시퀀스 생성 (DB에서 생성한 시퀀스를 맵핑하고, 시퀀스를 생성) -(Entity와 함께 사용)

@Entity

클래스에 선언시 그 클래스는 JPA가 관리

@Id

기본키 맵핑  (직접할당)

@GeneratedValue

기본키 맵핑 (자동 생성) +@Id

속성 

  • strategy = GenerationType.IDENTITY 기본키 생성을 데이터베이스에 위임(AUTO_INCREMENT)-id값 null시
  • strategy = GenerationType.SEQUENCE  유일한 값을 순서대로 생성 (시퀀스 값-id에 부여)

@Enumerated (열거)

엔티티 클래스의 속성으로 사용

  • EnumType.STRING  -enum 이름을 DB에 저장
  • EnumType.ORDINAL -enum 순서 값을 DB에 저장

@DynamicInsert

ex ) 필드가 5개

insert into Users (createDate, email, password, username) values (?,?,?,?)
디폴트 값을 넣기 위해선 필드를 명시하지 않고 넣어줘야한다.
insert into Users (createDate, email, password, username) values (?,?,?,?,?)
필드 명시하고 값을 넣지 않는 경우 null이 입력된다. →@DynamicInsert사용 ( insert시 null인 필드 제외 )

boards.java

board 게시판 테이블 생성

 

생성된 boards 테이블 형태
board 화면

@LOB (Large OBject)

default로 varchar(255) → 대용량 설정 4GB

@ManyToOne -단방향

하나의 사용자가 여러개의 게시물 가능 

@OneToMany -양방향

하나의 게시물의 여러개의 댓글 가능

속성

  • fetch = FetchType.EAGER -즉시로딩
  • fetch = FetchType.LAZY  -지연로딩

실무에선 가급적 지연로딩 사용 (즉시 로딩 적용시 예상치 못한 SQL발생)

@JoinColumn 

테이블 간 외래키로 연관관계를 맺는다

 

reply.java

reply(댓글) 테이블 생성

 

 

controller 클래스

@Autowired

필요한 의존 객체의 타입 에 해당하는 빈을 찾아 의존성 주입

생성자, setter , 필드

@PathVariable

-URL 경로에 변수를 넣어준다

{템플릿 변수}와 동일한 이름을 갖는 파라미터 추가

IllegalArgumentException

적합하지 않은 인자를 메소드에 넘겨주었을 때 발생

@PageableDefault

pageable객체의 기본 설정해줄때 사용 

page-현재페이지 n부터 시작, size-한페이지에 노출할 데이터 수, sort-정렬 속성 direction-정렬방향

 

JpaRepository 인터페이스 설정

해설

JpaRepository인터페이스를 상속하는 인터페이스를 만든다 (미리 검색 메소드를 정의)

자동으로 Bean 등록 된다.

데이터를 save, update, delete등 가능하게 됨

JpaRepository<엔티티 클래스name,  id 필드타입>

 

insert 확인 test

private UserRepository usertRepository; 

객체를 집어넣은 후, 메서드를 사용시 DB에 데이터를  insert한다.

 

Post방식으로 저장된 정보를 가져온다.

 

put 방식

update시 put방식 사용

@Transactional

클래스, 메소드 위에 사용해서 트랜젝션 기능이 적용된 객체가 생성

@Transactional이 포함된 메소드가 호출될 경우 트랜젝션이 시작하고, 정상여부에 따라 commit 또는 rollback을 한다.

 

delete 방식

delete 사용시 delete방식 상요

DB에 데이터 삭제

EmptyResultDataAccessException 

해당 id로 조회시 유저정보가 null일 경우 예외처리

반응형

'IT 포트폴리오 > 국비지원교육 Diary' 카테고리의 다른 글

국비 67 일차  (0) 2022.03.29
국비 66 일차  (0) 2022.03.28
국비 64 일차  (0) 2022.03.23
국비 63 일차  (0) 2022.03.23
국비 62 일차  (0) 2022.03.21