JPA를 제대로 이해하기 위해서는 ORM의 개념을 먼저 이해해야 한다.
ORM은 객체와 관계형 데이터베이스를 자동으로 매핑(연결)해주는 역할이다.
자세한 내용은 ORM 포스트에서 보면 된다.
JPA란 Java Persistence API로, 프로그램을 종료한 후에도 데이터가 남아있는, 데이터 지속성 기능을 제공한다.
java 기반의 ORM을 사용하기 위한 인터페이스를 모아둔 것으로, 가장 많이 사용하는 구현체에는 Hibernate 가 있다.
내가 작년 2020년 말에 airbnb 클론코딩 프로젝트를 만들었다.
그 과정에서 숙소, 회원 등의 정보들을 Mybatis를 사용하여서 많은 VO, DAO등을 반복적으로 만들었고, SQL문들을 직접 작성하면서 많은 문법적인 이슈들이 발생했다.
public class AirdndHomePictureVO {
private int idx, home_idx;
private String url;
}
여러 VO중 숙소 이미지VO
@Override
public List<AirdndHomePictureVO> pictureselect(int home_idx){
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
List<AirdndHomePictureVO> list = jdbcTemplate.query("select * from airdnd_home_picture where home_idx=" + home_idx, new RowMapper<AirdndHomePictureVO>() {
@Override
public AirdndHomePictureVO mapRow(ResultSet rs, int rowNum) throws SQLException {
// TODO Auto-generated method stub
AirdndHomePictureVO list = new AirdndHomePictureVO(
rs.getInt("idx"),
rs.getInt("home_idx"),
rs.getString("url"));
return list;
}
});
return list;
}
숙소 이미지를 가져오기위해 데이터 베이스에 접근하여 SQL문을 직접 작성한 모습
하지만 JPA를 사용했더라면 보다 간편하고, 빠르게 만들었을 것이다.
JPA는 클래스를 만들면, 자동으로 데이터베이스에 연결하여 SQL문들을 작성해준다. 따라서 유지보수가 더 간편하고, DB칼럼 추가에 따른 SQL 수정 과정이 줄어 코드가 짧아진다.
참고자료 : blog.woniper.net/255
반응형
댓글