JPA (3) 썸네일형 리스트형 동일성과 동등성 동일성( identity)실제 인스턴스가 같다. 따라서 참조 값을 비교하는 == 비교의 값이 같다. 동등성(equality) 실제 인스턴스는 다를 수 있지만 인스턴스가 가지고 있는 값이 같다. 자바에서 동등성 비교는 equals() 메소드를 구현해야 한다. jpa는 같은 엔티티를 조회했을때 동일성을 보장한다. 올바른 객체지향 모델링 class Member{ String id; Long teamId; String username; } class Team{ Long id; String name; } 위 와 같이 member 테이블과 team 테이블을 그대로 객체화 시켰을 경우 객체를 테이블에 저장하거나 조회할 때는 편리하나 member 객체는 team객체를 참조할 수 없게 되어 객체지향의 특징을 잃어버리게 된다. class Member{ String id; Team team; String username; Team getTeam(){ return team; } } class Team{ Long id; String name; } 위와 같이 Member 안에 team 객체를 참조할 수 있도록 해야 객체지향 모델링이라고 할 수 있다. SQL을 직접 다룰 때 발생하는 문제점 자바 ORM 표준 JPA 프로그래밍 책을 읽은 후 그동안 해왔던 작업의 문제점을 꼬집는 저자의 말에 동의하지 않을 수 없었다. JDBC API 또는 mybatis를 사용하여 관계형 데이터베이스를 자바의 객체로 또는 자바의 객체를 관계형 데이터베이스로 입력, 수정, 삭제, 조회 하는 기능을 구현하는데 이러한 CRUD 작업을 모든 테이블마다 반복해야 한다는 점이 상당한 노동력을 요한다. 자동화툴이나 프로그램을 작성해 CRUD를 만든다고 해도 SQL에 의존적이게 되어 테이블이 변경되었을 때 모든 SQL과 DAO 로직을 수정해야 하는 수고로움이 발생하고 크기가 점점 방대해질수록 놓칠 수 있는 리스크가 발생해 조회만 정상적으로 되고 수정이나 삭제는 되지않는 경우가 발생한다. 또한 테이블간의 관계를 엔티티 객체에 .. 이전 1 다음