JPA 배워야하는 이유

백마금편·2022년 2월 1일
0

JPA

목록 보기
1/2

🎯 ORM

ORM(Object-Relational Mapping)

  • RDBMS 와 OOP 객체 사이의 불일치에서 오는 문제를 해결하기 위해 자바는 ORM(Object-Relational Mapping) 기술을 만들어 냈다.

문자 그대로 ORM은 객체와 RDBMS를 매핑하는 역할을 한다.

Hibernate, TopLink 등 여러 프레임 워크가 ORM 기술을 구현하기 위해 등장하였고, 이러한 ORM 프레임워크에 대한 표준화가 이루어 져서 만들어진 것이 JPA 이다.


👨‍💻 JPA(JAVA Persistence API)

  • 과거에 객체를 데이터베이스에 조회 및 저장 하기 위해서 복잡한 JDBC API와 SQL문을 직접 작성 하였다.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
 
public class selectMember {
 
   public static void main(String[] args) {
      // TODO Auto-generated method stub
      
      String jdbc_driver = "com.mysql.cj.jdbc.Driver";
      String jdbc_url = "jdbc:mysql://localhost:3306/board?serverTimezone=UTC";
      try {
          
         Class.forName(jdbc_driver).newInstance();
         Connection con = DriverManager.getConnection(jdbc_url, "root", "root");
         Statement st = con.createStatement();
         
         String sql = "SELECT * FROM member";
         ResultSet rs = st.executeQuery(sql);
 
         while(rs.next()) {
             String name = rs.getString(1);
             String owner = rs.getString(2);
             String date = rs.getString(3);
          }
 
         rs.close();
         st.close();
         con.close();    
         
      } catch (Exception e) {
         e.printStackTrace();
      } 
   }
}
  • JDBCTemplate, MyBatis 등 SQL Mapper 등장하여 코드 수는 많이 줄었지만 SQL문은 여전히 직접 작성해야 했다.
  • 개발자 대신 적절한 SQL문을 찾아 생성하고 객체를 저장하거나 불러오게 되었다.
public class MemberDAO {
    @PersistenceContext
    EntityManager jpa;
    
    public void save(Member member) {
    	jpa.persist(member);
    }
    
    public void findOne(Long id) {
    	return jpa.find(Member.class, id);
    }
}

개발 생산성 혁신과 개발 속도, 유지보수 측면에서 과거와 확연하게 차이가 난다.


🙆‍♂ JPA를 공부해야 하는가

JPA vs MYBATIS 구글 트렌드 비교

  • 최근 5년 동안 대한민국 검색

    구글 트랜드 검색 결과(2022-02-01월 기준) 5년동안 JPA 검색량 우상향하고 있고 MYBATIS 검색량는 우하향하고 있다.
    해당 이미지로 잘 모르겠으면 밑에 세계적인 IT 기업들이 있는 미국에서의 검색 결과를 보자.

  • 최근 5년 동안 미국 검색

개발자들이 원하는 IT 기업의 채용 공고

  • 당근 페이 서버 개발자 채용 공고
  • 토스 뱅크 서버 개발자 채용 공고

앞으로 2~3년 안에 JPA 사용하는 IT 기업들이 많아지며, 많은 개발자들이 원하는 IT기업으로 이직 하기 위해서는 JPA를 공부해야한다.


🏅 실무에서 사용이 어려운 이유

  • 예제는 테이블 한두 개이며, 테이블 및 객체가 구성이 단순하지만, 실무는 수십 개 이상의 복잡한 테이블과 객체를 사용한다
  • 객체와 테이블을 매핑을 하고 설계하는 방법을 몰라서 포기한다.
    기본 키, 외래 키 매핑
    1:N, N:1, 1:1, N:M 매핑 등

    객체와 테이블을 제대로 설계하고 매핑하는 방법을 알아야 한다.
    JPA 내부 동작 방식의 이해와 어떤 SQL문을 언제 만들고 실행하는지 이해 해야한다.


📖 참고 자료

profile
뭐 어떻게 잘 되겠지

0개의 댓글