본문 바로가기

🌱JAVA/🌱 데이터 타입(DataType), 레퍼런스와 스태틱

타입이란?

2022.08.31 - [🌱JAVA/🌱데이터 타입(DataType)] - 데이터 타입 및 변수란

 

데이터 타입 및 변수란

데이터 타입이란? 데이터 타입이란 데이터의 형태를 의미한다. 해당 데이터가 메모리에 어떻게 저장되고, 프로그램에서 어떻게 처리되어야 하는지를 명시적으로 알려준다고 볼 수 있다. 자바에

may9noy.tistory.com

# 타입이란?

타입(data type)은 해당 데이터가 메모리에 어떻게 저장되고, 프로그램에서 어떻게 처리되어야 하는지를 명시적으로 알려주는 역할을 한다. 자바에서는 여러 형태의 타입을 미리 정의하여 제공하고 있는데, 이것을 기본 타입(primitive type)이라고 한다.

- 아래의 예시를 보면 쿼리문 밑에 String 이라는 타입값을 볼 수 있다. 이것은 해당 쿼리를 수행하고 반환되는 값이 String 타입 이라는 의미이다.

    @Transactional
    @Query(value = "select username from user_table where username = :username", nativeQuery = true)
    String apply_some_data(@Param("username") String username);

- 또다른 예는 아래와 같은데, List<UserEntity> 라는 리스트형 타입으로 반환된다.

    @Transactional
    @Query(value = "select * from user_table where username = :username", nativeQuery = true)
    List<UserEntity> search_value(@Param("username") String username);

- UserEntity의 내용을 보면 아래와 같은데, 이 의미는 해당 리턴값이 UserEntity타입에 매핑되어 값을 반환한다고 볼 수 있다. 그래서 쿼리 결과에 대한 반환값이 UserEntity의 타입값과 일치하지 않으면 숫자는  int, 문자는 String 등 반환되는 값에 대한 타입으로 변경 해줘야 한다.

public class UserEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long userid;

    @Column(name = "username")
    private String username;

    @Column(name = "user_description")
    private String userDescription;

    @Column(name = "published")
    private boolean published;

# 리턴 타입이란?

리턴 타입은 리턴값의 타입을 말한다. 리턴값이란 메소드를 실행한 후의 결과값을 말한다. 메소드는 리턴값이 있을 수도 있고 없을 수도 있다. 하지만 리턴 타입은 선언부에 명시되어야 한다.

- 위에서도 언급했듯이 반환되는 값의 형태가 타입과 일치해야 한다.

예를들어 아래와 같은 코드가 존재 한다고 할때 GeneralResponse의 값은 아래와 같다.

    public GeneralResponse<?> apply_some_data(String username) {
        String optionalUserEntity = userRepository.apply_some_data(username);
        return GeneralResponse.builder()
                .status(true)
                .message("get user_list")
                .data(optionalUserEntity)
                .build();
    }
public class GeneralResponse <T> {

    private boolean status;
    private String message;
    private T data;

}

타입의 매핑 정보는 아래와 같다. 아래의 내용을 보면 해당 메소드는 연산 후 GeneralResponse<?> 타입으로 반환을 한다.

해당 GeneralResponse클래스의 타입을 보면 아래와 같다. 그래서 반환하는 타입과 반환값이 맵핑이 되어 있어야 한다.

- 끝 -