번거롭다.
db에 직접 접속해 테이블을 만들고 쿼리를 직접 만들고 jdbc api로 실행해주고 번거롭다.
SQL의존적이라 변경에 취약
단순한 변경에도 쿼리문 직접 수정하고 자바 객체에 값을 넣어야 하고 반복적인 일이 많다.
객체지향 모델과 관계형 DB의 패러다임 불일치가 발생한다.
: 이러한 패러다임 불일치에서 기인한 문제들과 반복적이고 번거로운 어플리케이션 단에서의 쿼리작업을 줄여주기 위해 ORM(객체 관계 매핑)기술이 등장한다.
: Java Persistence API. 자바 ORM 기술에 대한 표준 명세
여기에 대해 궁금하면 '영속성 컨텍스트'에 대해 공부해보기
JPA 예시
@Entity // DB 테이블 역할을 합니다.
public class User {
// ID가 자동으로 생성 및 증가합니다.
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
// nullable: null 허용 여부
// unique: 중복 허용 여부 (false 일때 중복 허용)
@Column(nullable = false, unique = true)
private String username;
@Column(nullable = false)
private String password;
@Column(nullable = false, unique = true)
private String email;
@Column(nullable = false)
@Enumerated(value = EnumType.STRING)
private UserRoleEnum role;
@Column(unique = true)
private Long kakaoId;
}
이렇게 자바에서 클래스를 작성하면
ID | KAKAO_ID | PASSWORD | ROLE | USERNAME | |
---|---|---|---|---|---|
아래와 같은 테이블이 위처럼 DB에 만들어 진다.