Spring - ORM 과 @getter,setter( Project_Ready_3)

송성원·2024년 1월 4일

project_ready

목록 보기
3/4

ORM

ORM이 머지?

  • 영속성(Persistence)
    • 데이터를 생성한 프로그램 종료되더라도 사라지지 않는 데이터의 특성
    • 관계형 데이터베이스 혹은 객체 데이터베이스 활용해서 영구적으로 저장해 영속성 부여한다.
    • 데이터 베이스에 저장하는 방법에는 JDBC, SPRING JDBC, Persistence Framework 사용
    • JDBC를 이용해 직접 구현이 가능한데 Persistence Framework를 많이 사용(ORM 사용)
  • ORM(Object Relational Mapping): 객체-관계 매핑
    • 객체 <-> 데이터베이스 자동으로 매핑해주는 것
    • 객체 지향 프로그래밍은 클래스를 사용, 관계형 데이터베이스는 테이블 사용
    • 불일치 존재한다. ORM을 통해 객체 간의 관계를 SQL언어로 매핑해 불일치 해결한다.
    • JPA, Hibernate, mybatis가 대표적이다.

=> ORM은 영속성을 유지하게 해주는 객체 - 관계형 데이터베이스 간의 관계를 설정해주는 역할을 한다.
우리는 주로 Spring DATA JPA를 사용하지만 그것이 ORM의 일종이라는 것은 인지해야된다.

  • my batis(영속성 존재를 위한 ORM의 대표 케이스)
    • my batis의 사용률은 hibernate에 비해 저조하지만, 우리나라에서 자주 사용된다.
    • 싱글톤 패턴으로 스프링빈 으로 등록하여 주입하여 쉽게 사용이 가능합니다.
    • MyBatis-Spring은 Mybatis에서 Mybatis3와 Spring 연동 라이브러리로 제공됩니다.
    • Mybatis Mapper Interface를 통해 DB에 접근합니다.

@getter 와 @setter

게터, 세터 이거 entity 생성에 무조건 포함되어 있던데 왜일까?

  • 개발자가 이 두가지를 사용하면서 얻을 수 있는 이점은 무엇일까 그리고 왜 사용하지에 대한 의문이 생겨 작성

Getter, Setter

// getter(조회 메서드) : 보통 get , is로 같은 메서드로 네이밍이 되어 쓰임
public class Example {
    private String name;

    public String getName() {
        return name; // 이름을 불러온다...
    }
}
--------------------------------------------------------------------
// setter(값 지정 메서드) : 보통 set 접두사가 붙어서 변수를 받아서 set함수로 지정함
public class Example {
    private String name;

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

코드를 보고 이해하면 좀 쉽다...

Getter와 Setter를 지양해야되는 이유 ... (이유 인지 필요)

https://colabear754.tistory.com/173

  • setter는 코드에서 계좌에서 돈 차감하는 코드로 setAccount 메소드를 통해 남은 돈을 받아오는데 갑자기 setter로 하여금 그 남은 돈을 다른 돈으로 바꿔버릴 수 있게 된다... 바꾼지 이유를 알 수 있는가?
    1. setter를 사용하면 객체의 속성이 갖는 값을 바꾼 이유를 알 수 없다
      => 명확한 의도를 가진 메소드를 사용해서 setter를 대신하자.
  • getter는 단순 조회를 해보고 값을 알고싶어서 사용하는 경우도 존재하지만, 인출 금액을 전달해서 잔액이 충분한지만 물어보면 되는데 그걸 직접하는 모든 값에 대해 조회하는 경우가 있기에
    1. 조회로 끝나지 않는 경우가 많아지게 된다.
      => 조건을 검사하지 말고 결과를 반환하게 해서 그 인출하는 사람의 등급을 가지고 return을 통해 등급만을 반환하도록 한다. 조회를 통해 조회를 낳는 방법은 지양하자.

위에 링크에서 코드를 통해 정확하게 이해할 수 있도록 하자

profile
개발에 도전하는 문과생입니다.

0개의 댓글