영상후기 - MyBatis(SQL Mapper)

shin·2023년 4월 24일
0

영상후기

목록 보기
18/20

movie

Overview of Mybatis - Learn With Vinod

  • Java Persistence Framework 이다.
  • JDBC 코드를 인터페이스를 통해 동적으로 구현한다.
  • interface methods를 실제 SQL commands와 매핑한다.
public interface CustomerDao {
	...
	public List<Customer> getAllCustomers);
}

=> 위 'getAllCustomers()' 메소드는 실제로 'SELECT * FROM customers' sql 문으로 매핑된다.

public class Customer {
	private Integer id;
	private String name;
	private String city;
	private String email;
	private String phone:
}

=> 위와 같은 엔티티가 있다고 가정하자

public interface CustomerDao {
	public void addCustomer(Customer customer);
    public Customer getCustomerById(Integer id);
	public void updateCustomer(Customer customer);
	public void deleteCustomer(Integer id);
	public List<Customer> getAllCustomers);
	public List<CustomergetCustomersByCity(String city);
}

=> 그리고 해당 엔티티의 DAO 인터페이스 이다.
=> addCustomer() 메소드는 SQL 'INSERT' 명령과 매핑되고, @Insert 어노테이션을 사용
=> getCustomerById() 메소드는 SQL 'SELECT' 명령과 매핑되고, @Select 어노테이션을 사용
=> updateCustomer/UPDATE/@Update
=> deleteCustomer/DELETE/@Delete

  • 이 자바 어플리케이션에서 사용되는 CustomerDao interface는 MyBatis를 통해 동적으로 구현한 클래스를 사용하고, 이 클래스는 JDBC를 이용하여 만들어지며, 이를 통해 DB의 데이터를 가져올 수 있게 되는 것이다.
  • ORM(Object Relational Mapping)과의 차이
    - entity class/fields 를 table/columns 와 매핑할 필요가 없다.
    - 클래스의 필드와 테이블의 컬럼명을 자동으로 탐지하여 매핑한다.
    - 데이터베이스의 모든 기능들을 사용할 수 있다.(프로시저 저장, views, 복잡한 쿼리, vendor propriatorey features = 특정 데이터베이스 제조업체에서만 사용 가능한 기능)
  • 오래된 버전의(Legacy) 데이터베이스, 비정규화(de-normalized) 데이터베이스 혹은 어플리케이션에서 SQL 실행을 완전히 제어 해야하는 경우 사용하면 좋다.
  • 캐싱을 지원
    - 상태가 캐시로 저장된다.
    - 불필요한 DB 명령의 반복을 방지
    - HashMap 기반 기본적인 캐시 구현을 제공
    - 기본적인 커넥터를 제공. OSCache, Ehcache, Hazelcast and Memcached
    - 다른 캐시 구현체와 연결될 수 있도록 API를 제공
profile
안녕하세요.

0개의 댓글

관련 채용 정보