Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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
관리 메뉴

Been_DevStep

(Memo)Entity 만들기 본문

카테고리 없음

(Memo)Entity 만들기

JChBeen 2022. 10. 26. 11:26

Entity 와 Table은 1:1

 

entities -->>   스키마 이름 -->>  테이블이름(단수형)+Entity

 

Class에는  private 열 구조에 따른 변수를 생성해준 뒤 get and set을 만들어준다.

이때 Alt + Ins ->  get and set 를 통해서 모든 변수의 get과 set을 생성해준다.

(또한 변수의 이름은 html에서 값을 가져오는 태그의 이름과 같아야 한다.)

 

public로 값을 조정하는게 아니라 get and set을 만드는 이유 제약조건에 위배 되는 값을 넣는 것을 방지해주기 위함이 그 이유 중 하나이다.

 

equals 만들기 

  Alt + Ins ->> equlas() and hashCode() 를 선택해서 PK만 선택해서 생성 해준다.

 

 

ex) `study`.`memos` 스키마를 기준으로.

dir --->> entities.study(스키마이름).MemoEntity(테이블이름단수+Entity)

 

DB 구조

CREATE TABLE `study`.`memos`
(
    `index` INT UNSIGNED NOT NULL AUTO_INCREMENT,
    `name`  VARCHAR(10)  NOT NULL,
    `text`  VARCHAR(100) NOT NULL,
    CONSTRAINT PRIMARY KEY (`index`)
);

MemoEntity.class

import java.util.Objects;

public class MemoEntity {
    private int index;
    private String name;
    private String text;

    public int getIndex() {        return index;    }

    public void setIndex(int index) throws Exception {
        if( index < 0) {
            throw new Exception("음수 사용 불가.");
        }
        this.index = index;
    }

    public String getName() {        return name;    }

    public void setName(String name) {        this.name = name;    }

    public String getText() {        return text;    }

    public void setText(String text) {        this.text = text;    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;   //스택값이 같다.
        if (o == null || getClass() != o.getClass()) return false;
        MemoEntity that = (MemoEntity) o;
        return index == that.index;
    }

    @Override
    public int hashCode() {
        return Objects.hash(index);
    }
}

 

Entity를 사용함으로써 Controller의 코드도 간결하게 바뀌게 된다.

기존의 Entity를 사용하기 전의 코드

@RequestMapping(value = "/", method = RequestMethod.POST)
public ModelAndView postIndex(@RequestParam(value = "name") String name,
                              @RequestParam(value = "text") String text) {
    ModelAndView modelAndView = new ModelAndView("memo/index");

    System.out.println(String.format("이름 : %s", name));
    System.out.println(String.format("내용 : %s", text));

    return modelAndView;
}

Entity 사용 후

@RequestMapping(value = "/", method = RequestMethod.POST)
public ModelAndView postIndex(MemoEntity memo) {
    ModelAndView modelAndView = new ModelAndView("memo/index");

    System.out.println(String.format("이름 : %s", memo.getName()));
    System.out.println(String.format("내용 : %s", memo.getText()));

    return modelAndView;
}

간결해지고 캡슐화되어있다.

Comments