Computer Science/Database

Entity Factory

gozer0 2024. 7. 17. 17:47

Entity란?

스키마에 대한 조건, 정의가 들어간다. (타입 등)

 

그러니까 엔티티는 스키마에 대한 정의이다.

 

스프링부트의 구조 중 DTO라고 해서 데이터를 전달하는 객체인데

자바에서의 변수 선언이라고 이해하면 쉽다.

 

DTO에서 선언된 데이터들을 가지고 

데이터베이스레 전달할지 말지를 결정한다.

 

그래서 Controller를 통해서 DTO가 값이 들어오면

그대로 데이터베이스로 가는게 아니라,

Comtroller는 Entity를 소개시켜 주고

Entoty는 그 형태에 맞춰 SQL문으로 바꿔준다.

 

SQL로 바꿔주는건 JDBC의 역할이다.

 

 

엔티티 팩토리가 생성이 됬다? JPA를 하겠다.

 

 

 

 

Entity

엔티티(Entity)는 데이터베이스 테이블과 매핑되는 클래스

엔티티 클래스는 테이블의 구조와 데이터를 정의한다.

예를 들어, 자바에서의 엔티티 클래스는 다음과 같이 정의한다.

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String username;
    private String password;
    
    // Getters and setters
}​

 

 

스키마

스키마는 데이터베이스의 구조를 정의

여기에는 테이블, 컬럼, 데이터 타입, 제약 조건 등이 포함

엔티티 클래스는 이러한 스키마 정보를 포함하며,

ORM 프레임워크(Hibernate 등)를 통해 데이터베이스 테이블과 매핑

 

 

DTO (Data Transfer Object)

DTO는 계층 간 데이터 전송을 위한 객체

예를 들어, 클라이언트와 서버 간의 데이터 교환이나 서비스 계층과 데이터 액세스 계층 간의 데이터 교환에 사용

DTO는 엔티티와 달리 데이터베이스의 스키마에 대한 정보를 포함하지 않으며,

단순히 데이터를 담는 용도로 사용

public class UserDTO {
    private String username;
    private String password;
    
    // Getters and setters
}​

 

 

Controller

컨트롤러는 HTTP 요청을 처리하고,

서비스 계층에 비즈니스 로직을 위임

클라이언트로부터 DTO를 받아들여 서비스 계층에 전달

@RestController
@RequestMapping("/users")
public class UserController {
    
    @PostMapping
    public ResponseEntity<User> createUser(@RequestBody UserDTO userDTO) {
        // Convert DTO to Entity
        User user = new User();
        user.setUsername(userDTO.getUsername());
        user.setPassword(userDTO.getPassword());
        
        // Save entity to database
        User savedUser = userService.save(user);
        
        return ResponseEntity.ok(savedUser);
    }
}​

Entity와 DTO의 관계

컨트롤러는 클라이언트로부터 받은 DTO를 엔티티로 변환하여 서비스 계층에 전달

서비스 계층에서는 엔티티를 데이터베이스에 저장하거나 조회할 수 있다.

이때 ORM 프레임워크를 사용하여 엔티티를 데이터베이스 테이블에 매핑하고

SQL 문을 생성하여 데이터베이스와 상호 작용

 

 

JDBC의 역할

JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속하고 SQL 문을 실행하는 데 사용되는 API

ORM 프레임워크는 내부적으로 JDBC를 사용하여 엔티티를 SQL 문으로 변환하고 데이터베이스와 통신

 

 

정리

  • Entity: 데이터베이스 테이블과 매핑되는 클래스.
  • DTO: 데이터 전송 객체, 계층 간 데이터 전송에 사용.
  • Controller: 클라이언트 요청을 처리하고 서비스 계층에 비즈니스 로직을 위임.
  • Service: 비즈니스 로직을 처리하고 데이터 액세스 계층과 상호 작용.
  • Repository: 데이터 액세스 계층, 엔티티를 데이터베이스에 저장하거나 조회.
  • JDBC: 데이터베이스에 접속하고 SQL 문을 실행하는 API.

엔티티는 데이터베이스 스키마와 매핑되어 데이터베이스 작업을 수행하고,

DTO는 데이터 전송을 위해 사용되며, 컨트롤러는 이 둘을 연결하는 역할

ORM 프레임워크는 내부적으로 JDBC를 사용하여 엔티티와 데이터베이스 간의 상호 작용을 처리

'Computer Science > Database' 카테고리의 다른 글

ORM, JPA, Hibernate, MyBatis  (0) 2024.07.16
데이터베이스  (0) 2024.07.15