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
public class Example {
private String name;
public String getName() {
return name;
}
}
--------------------------------------------------------------------
public class Example {
private String name;
public void setName(String name) {
this.name = name;
}
}
코드를 보고 이해하면 좀 쉽다...
Getter와 Setter를 지양해야되는 이유 ... (이유 인지 필요)
https://colabear754.tistory.com/173
- setter는 코드에서 계좌에서 돈 차감하는 코드로 setAccount 메소드를 통해 남은 돈을 받아오는데 갑자기 setter로 하여금 그 남은 돈을 다른 돈으로 바꿔버릴 수 있게 된다... 바꾼지 이유를 알 수 있는가?
- setter를 사용하면 객체의 속성이 갖는 값을 바꾼 이유를 알 수 없다
=> 명확한 의도를 가진 메소드를 사용해서 setter를 대신하자.
- getter는 단순 조회를 해보고 값을 알고싶어서 사용하는 경우도 존재하지만, 인출 금액을 전달해서 잔액이 충분한지만 물어보면 되는데 그걸 직접하는 모든 값에 대해 조회하는 경우가 있기에
- 조회로 끝나지 않는 경우가 많아지게 된다.
=> 조건을 검사하지 말고 결과를 반환하게 해서 그 인출하는 사람의 등급을 가지고 return을 통해 등급만을 반환하도록 한다. 조회를 통해 조회를 낳는 방법은 지양하자.
위에 링크에서 코드를 통해 정확하게 이해할 수 있도록 하자