Sangwon Coding

Spring Boot - Entity, Repository 본문

Spring/Spring Boot (어드민 페이지)

Spring Boot - Entity, Repository

SW1 2019. 11. 21. 01:01

Camel Case : 단어를 표기할 때 첫 문자는 소문자로 시작하며 띄어쓰기 대신 ( 대문자 )로 단어를 구분 Java의 변수를 선언할 때 camelCase 로 선언한다.

ex) phoneNumber , createdAt, updatedAt

 

Snake Case : 단어를 표기할 때 모두 소문자로 표기하며, 띄어쓰기 대신 ( _ ) 로 표기 DB 컬럼에 사용

ex) phone_number , created_at , updated_at

 

API를 정의하기에 따라 다르지만, 주로 API통신 규격에는 구간에서는 Snake Case를 많이 사용 합니다.

 

 

Entity

JPA에서는 테이블을 자동으로 생성해주는 기능 존재.

DB Table == JPA Entity

 

 

Jpa의 Entity 및 column 은 자동으로 camel case -> DB 의 snake_case에 매칭 시켜줍니다!

 

 

User.java

package com.example.study.model.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import java.time.LocalDateTime;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity // ==table
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String account;
    private String email;
    private String phoneNumber;
    private LocalDateTime createdAt;
    private String createdBy;
    private LocalDateTime updatedAt;
    private String updatedBy;
}

 

 

Repository

따로 쿼리문 을 작성하지 않아도 기본적인

CREATE : 생성

READ : 읽기 (SELECT)

UPDATE : 업데이트

DELETE : 삭제

를 가능하게 해줌

 

 

UserRepository.java (Interface)

package com.example.study.repository;
import com.example.study.model.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends JpaRepository<User, Long> {

}

 

UserRepositoryTest.java

package com.example.study.repository;

import com.example.study.StudyApplicationTests;
import com.example.study.model.entity.User;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import java.time.LocalDateTime;

public class UserRepositoryTest extends StudyApplicationTests {

    // Dependency Injection (DI)
    @Autowired
    private UserRepository userRepository;

    @Test
    public void create(){
        // String sql = insert into user (%s, %s, %d) value (account, email, age);
        User user = new User();
        user.setAccount("TestUser03");
        user.setEmail("TestUser03@gmail.com");
        user.setPhoneNumber("010-3333-3333");
        user.setCreatedAt(LocalDateTime.now());
        user.setCreatedBy("TestUser3");

        User newUser = userRepository.save(user);
        System.out.println("newUser : " + newUser);
    }


    public void read(){

    }

    public void update(){

    }

    public void delete(){

    }
}

 

 

 

Comments