본문 바로가기
Language/Java

JPA란 무엇인가?

by 광진구뚝배기 2021. 5. 2.

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

 

반응형

댓글