ORM

Jiwon Youn·2020년 12월 30일
0

ORM(Object Relation Mapping)

  • ORM이란 객체(Object)와 DB의 테이블을 Mapping시켜 RDB 테이블을 객체지향적으로 사용하게 해주는 기술
  • MyBatis는 Java코드와 직접 작성한 SQL 코드를 Mapping 시켜주는 반면 Hibernate는 SQL을 직접 작성하지 않고 표준 인터페이스 기반으로 처리

ORM을 사용하지 않은 코드

public void insertUser(UserVO userVO){
	String query="INSERT INTO USER(EMAIL, NAME, PW)" + " VALUES(?, ?, ?)";

	PreparedStatement preparedStmt = conn.prepareStatement(query);
	preparedStmt.setString (1, userVO.getEmail());
	preparedStmt.setString (2, userVO.getName());
	preparedStmt.setString (3, userVO.getPW());

	// execute the preparedstatement
	preparedStmt.execute();
   }
  • Java Object와 RDB가 Mapping되지 않기 때문에 각각의 쿼리 파라미터에 사용자 데이터를 직접 Set해서 DB에 저장

ex) MyBatis를 적용한 코드

public class UserDAO {
 
    @Autowired
    private SqlSession sqlSession;
 
    private final String namespace = "mang.blog.user.userMapper.";
 
    public int insertUser(UserVO userVO) {
        return sqlSession.insert(namespace+"insertUser", userVO);
    }
}
  • DataBase 처리를 위한 DAO 클래스
  • SqlSession의 인스턴스 사용

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
<mapper namespace="mang.blog.user.userMapper">
 
    <insert id="insertUser" parameterType = "userVO">
        INSERT USER(
            EMAIL, USER_NAME, USER_PW, 
        )VALUES(
            #{userEmail}, #{userName}, #{userPw}
        )
    </insert>
 
</mapper>
  • Mapper에서 해당 namespace를 갖는 쿼리를 실행

0개의 댓글