1. JSON -> JAVA로 변경하기
{
"이름": "홍길동",
"나이": 25,
"성별": "여",
"주소": "서울특별시 양천구 목동",
"특기": ["농구", "도술"],
"가족관계": { "아버지": "홍판서", "어머니": "춘섬"},
"회사": "경기 수원시 팔달구 우만동"
}
class 가족관계{
String 아버지 = "홍판서";
String 어머니 = "춘섬";
}
public class Test{
String 이름 = "홍길동";
int 나이 = 25;
String 성별 = "여";
String 주소 = "서울특별시 양천구 목동";
List<String> 특기 = new ArrayList<>();
가족관계 가족 = new 가족관계();
String 회사 = "경기 수원시 팔달구 우만동";
}
Json 으로 바꿔서 BufferedWrited 해야한다. 하지만 라이브러리를 이용하면 간편하게 바뀐다.
하지만 Json이 어떻게 생기고 동작하는지 알아야한다.
2. Thread

- 1번 클라이언트가 request를 하면 1번 스레드가 처리하여 서버에 세션을 저장, 1번 쿠키 생성
- 2번 클라이언트가 동일한 request시에는 2번 스레드를 통한 서버에는 세션이 존재하지 않으므로 빠른 요청 처리불가
- 1번 서버에 있는 세션을 2번 서버에 복베하거나 동일한 루트로만 request를 하도록 설정
- 동시에 2가지 일을 한다. => 타임 슬라이싱(1초)
- 왔다갔다 하면서 일을 한다.(Context Switching)
- UX를 좋게한다.
- 통신을 할때는 속도가 빨라진다.
- I/O을 할때는 속도가 빨라진다.
3.lambok
3-1. lombok jar 적용

마우스 오른쪽 버튼 -> git bash here -> java -jar lombok-1.18.20.jar 명령어





3-2 VO, DTO, Model
- Model :
- VO = Value Object :
- Data Transfer Object :
3-3 MariaDB 설치
Download MariaDB Server - MariaDB.org
REST API MariaDB Repositories Release Schedule Reporting Bugs … Continue reading "Download MariaDB Server"
mariadb.org












3-4. DB와 Spring 연결
1. New → Spring Starter Project

JPA - JAVA Persistence Application Programming Interface
2. 원래 프로젝트의 pom.xml에 위에서 선택한 dependencies 복사 후 붙여넣기

3. application.yml 설정

- username : 연결할 계정
- password : 계정 암호
- url : 연결한 포트번호 및 서버 시간 맞추기 위한 지역 입력
- ddl-auto: create → 서버실행시마다 삭제하고 다시 생성(데이터 날라감)
- ddl-auto: none → 한번 만들어졌으면 none으로 변경
→ 테이블을 수정할경우에 create로 변경 후 만들어야한다
4. TABLE 생성 및 데이터 INSERT
→ pom.xml , application.yml 설정한 뒤 class 생성
- Maria DB에 해당 쿼리실행
create user 'cos'@'%' identified by 'cos1234';
GRANT ALL PRIVILEGES ON *.* TO 'cos'@'%';
create database cosdb;
- User 생성
package com.cos.blogapp.domain.user;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
// 테이블 모델
@AllArgsConstructor
@NoArgsConstructor
@Data
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id; //PK (자동증가 번호)
private String username; // 아이디
private String password; // 패스워드
private String email; // 이메일
}
→ @Id를 걸어주면 해당 된거는 PK로 적용된다.
→ auto_increment : 시퀀스라는 오브젝트 +1씩 증가한다.
→ IDENTITY : 현재 DB 기본 전략 증가를 따라가라.

ex) 오라클일 경우 시퀀스로 실행 maria는 auto_increment
(create table user 자동 생성 알림)

create table user (
id integer not null auto_increment,
email varchar(255),
password varchar(255),
username varchar(255),
primary key (id)
) engine=InnoDB
- 데이터 INSERT


package com.cos.lsm.domain.user;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends JpaRepository<User, Integer>{
@Query(value = "insert into user (username, password, email) values(:username, :password, :email)", nativeQuery = true)
void join(String username, String password, String email);
}
- extends JpaRepository를 하여 사용할 테이블명과 Primary Key의 Type을 적는다 → <User, Interger>
- @Query 부분은 JPA에 내장된 save 함수가 아닌 직접 정의한 쿼리문을 이용하여 데이터를 INSERT하기 위해 작성
@Controller
public class UserController {
private UserRepository userRepository;
// DI
public UserController(UserRepository userRepository, HttpSession session) {
this.userRepository = userRepository;
this.session = session;
}
}
- Controller class 에서 앞서 만든 인터페이스를 의존성 주입(DI : Dependency Injection) 시킨다.
- 데이터 INSERT 하는 방법
① 인터페이스에서 정의한 쿼리함수를 통하여 직접 데이터 INSERT
@Getmapping("/test/query/join")
public void TestQueryJoin(){
userRepository.join("cos","1234","cos@nate.com");
}
② JPA에 내장된 save 함수를 통해 INSERT하는 방법
@Getmapping("test/join")
public void testJoin(){
User user = new User();
user.setUsername("ssar");
user.setPassword("1234");
user.setEmail("cos@nate.com");
// insert into user(username, password, email) values ('ssar', '1234', 'cos@nate.com')
userRepository.save(user);
}

- 매핑한 주소를 입력하면 STS 콘솔 창에서 다음과 같은 코드를 확인 할 수 있다. 그 후에 데이터가 정확히 INSERT 되었는지 MariaDB에 확인해 본다.

'Programming > SpringBoot' 카테고리의 다른 글
Spring Boot 7강 - Refactoring ① (0) | 2021.09.19 |
---|---|
Spring Boot 6강 - 로그인, 회원가입 (0) | 2021.09.19 |
Spring Boot 4강 - Mustache, JSP 연결 (0) | 2021.09.05 |
Spring Boot 3강 - 어노테이션, IOC, DI (0) | 2021.09.05 |
Spring Boot 2강 - 프레임워크, 스프링, 스프링 프레임 워크 규칙, HTML (0) | 2021.09.05 |