참고 자료
[스프링부트 (7)] Spring Boot JPA(1) - 시작 및 기본 설정
스프링부트 with JPA 블로그 6강 - yaml 설정
JPA를 사용하는 이유
- 생산성 뛰어나고, 유지보수 용이함.
- 객체 지향적인 코드로 더 직관적, 비즈니스 로직에 더 집중 가능
- 전체 프로그램 구조를 일관되게 유지
- SQL을 직접적으로 작성 X → 유지보수 간결, 재사용성 증가
- DB 컬럼 추가시 테이블 수정, SQL 수정 등의 과정이 줄어들고, 부수적인 코드가 줄어듦
- 코드의 가독성 향상
- DBMS에 대한 종속성 줄어듦.
- DBMS가 변경되더라도 소스, 쿼리, 구현 방법, 자료형 타입 등을 변경할 필요가 없음
- Object에만 집중할 수 있고, DBMS 교체 작업에도 비교적 적은 리스크와 시간 소요
JPA 설정 방법
-
Dependency 추가 - 예시


- ddl-auto에 create라고 하면 user라는 테이블이 있어도 새로 생성이 됨. update나 다른걸로 바꿔야 함.
-
Entity 클래스 생성

ex) MariaDB Sample 테이블 생성 script

-
@Entity가 붙은 클래스는 JPA가 관리하는 클래스
- 테이블과 매핑할 테이블은 이 어노테이션을 붙임.
-
mbrNo 필드는 @id를 사용하여 기본키(PK)로 지정함.
- Table 생성시 해당 필드를 PK, AUTO_INCREMENT로 설정하였기 때문에 직접할당 방식이 아닌, 자동으로 생성되도록 하기 위해 @GeneratedValue를 사용함.
- GenerationType.IDENTITY는 기본 키 생성을 데이터베이스에 위임하는 방식.
- @GeneratedValue는 여러 strategy가 있음.
- IDENTITY, SEQUENCE, TABLE, AUTO …


-
Repository 클래스 생성
- Repository 인터페이스를 생성한 후 JpaRepository<Entity, 기본키 타입>을 상속받으면 기본적인 Created, Read, Update, Delete가 자동으로 생성됨.
- JPA 처리를 담당하는 Repository는 기본적으로 4가지가 있음.
T : Entity의 타입 클래스, ID : P.K 값의 Type
- Repository<T, ID>
- CrudRepository<T, ID>
- PagingAndSortingRepository<T, ID>
- JpaRepository<T, ID>

이런식으로 메소드 이름을 잘 조합하여 쿼리 처리를 할 수 있음.
- findBy 뒤에 컬럼명을 붙여주면 이를 이용한 검색이 가능함.
- And → findByLastnameAndFirstname
- 풀어쓰면 where x.lastname = ? and x.firstname= ?
- Or → findByLastnameOrFirstname
- where x.lastname = ? or x.firstname = ?
- Is , Equals → findByName, findByNameIs, findByNameEquals
- Between → findBySalBetween
- where x.sal between ? and ?
-
Service 생성

-
Controller 생성

-
Properties 설정
