개발자 미니민의 개발스터디

[김영한 스프링 강의] JDBC, JPA, AOP 개념

by mini_min

 

난... 화석이었군... ^^

스프링 입문 강의 끝! 다음은 

 


순수 JDBC (화석)

- 환경설정
build.gradle 파일에 jdbc, h2 관련 파일을 추가한다. 

 

JPA

JPA 는 기존의 반복 코드는 물론이고, 기본적인 SQL 도 JPA 가 직접 만들어서 실행한다. JPA 를 사용하면, SQL 과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환할 수 있다. 즉, 개발 생산성을 크게 높일 수 있다.

build.gradle 파일에 JPA, H2 데이터베이스 관련 코드를 추가한다. 
spring-boot-starter-data-jpa 는 내부에 jdbc 관련 라이브러리를 포함한다. 

spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=none
(jpa, hibernate 가 라이브러리로 들어와야한다.)

 

스프링 데이터 JPA

스프링 부트와 JPA 만 사용해도 개발 생산성이 정말 많이 증가하고, 개발해야할 코드도 확연히 줄어든다. 스프링 데이터 JPA 를 사용하면 기존 한계를 넘어서 인터페이스 만으로 개발을 완료할 수 있다. 기본 CRUD 기능도 스프링 데이터 JPA 가 모두 제공한다.
* 스프링 데이터 JPA 는 JPA 를 편리하게 사용하도록 도와주는 기술이다. 따라서 JPA 를 먼저 학습 후에 스프링 데이터 JPA 를 학습해야한다.
* JpaRepository 에서 여러 메소드 제공
- 기본적인 CRUD 기능 제공
- 페이징 기능 자동 제공

 

복잡한 동적 쿼리는 Querydsl 이라는 라이브러리를 사용하며, 쿼리도 자바 코드로 안전하게 작성할 수 있고, 동적 쿼리도 편리하게 작성할 수 있다. 해결하기 어려운 쿼리는 JPA 가 제공하는 네이티브 쿼리를 사용하거나, 앞서 학습한 스프링 jdbcTemplate를 사용하면 된다. 

 

AOP (Aspect Oriented Programming)

AOP 는 관점 지향 프로그래밍이라고 불린다. 관점 지향은 어떤 로직을 <핵심> 과 <부가>적인 관점으로 나누어서 보고 그 관점을 기준으로 모듈화 하는 것이다. 

AOP 는 흩어진 관심사를 모듈화하는데, 모듈화 시켜놓은 블럭을 Aspect 이라고 한다. 

 

스프링 AOP

스프링에서 제공하는 스프링 AOP 는 프락시 기반의 AOP 구현체다. 프록시를 사용해 접근 제어 및 부가 기능을 추가할 수 있는데, 스프링 AOP 는 스프링 Bean 에만 적용 가능하다. 스프링 AOP 는 순수 자바로 구현되었기 때문에 특별한 컴파일 과정은 필요하지 않는다. 

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기