JPA ( Java Persistence API )
- 데이터베이스와 객체 ( 클래스 ) 를 연결해주는 기술
- SQL 없이도 DB 작업을 할 수 있게 도와주는 ORM 기술
- 자바에서 표준으로 만든 인터페이스 ( interface )
- 대표적인 구현체 : Hibernate
cf. Mybatis : SQL을 대신 다뤄주는 Mapping 해주는 기술임 -> 우리나라에서 많이 씀, java Spring : 우리나라에서 많이 씀
Spring Boot : 필요한 것만 추가해서 가볍게 시작할 수 있음
Spring : 필요없는 것 까지 모두 추가되서 무거울 수 있음
# 테이블 자동 생성/수정 기능 끄기
spring.jpa.hibernate.ddl-auto=none
# 실행되는 sql 쿼리를 콘솔에 출력
spring.jpa.show-sql=true
# SQL을 보기 좋게 정렬해서 출력
spring.jpa.properties.hibernate.format_sql=true
# 뷰(View)에서 지연 로딩을 방지(지연로딩 예외 방지용 설정)
# cf. 지연로딩 ?
spring.jpa.open-in-view=false
* 지연로딩 (Lazy Loading)
- DB에서 데이터를 바로 가져오지 않고, 실제 사용할 때 가져오는 방식
- jpa에서는 지연로딩이 디폴트
- 단, 테이블이 join 되어야한 상태로 출력해야한다면, 즉시 로딩으로 바꿔줘야함
ex. 회원이 쓴 글 목록이 보고싶다면?
- 즉시 로딩 : Member를 불러오면 Posts도 즉시 같이 가져옴
- 지연 로딩 : Member를 불러올 때는 Posts는 안 가져오고, 사용할 때 가져옴
* Spring Security
- 자바 웹 애플리케이션에서 로그인, 로그아웃, 권한, 인증 같은 보안 기능을 쉽고 강력하게 처리할 수 있는 프레임워크
* 동작 흐름
- 사용자가 /login 요청을 보냄
- 스프링 시큐리티가 요청을 가로챔
- 사용자의 아이디/비밀번호 확인
- 인증 성공 시 세션에 사용자 정보를 저장
- 인증된 사용자만 특정 URL에 접근 허용
- 권한이 없으면 접근 차단(403) → security에서 막은것
** 폴더 구조
'Backend > String' 카테고리의 다른 글
RESTAPI (0) | 2025.06.19 |
---|---|
Thymeleaf (0) | 2025.06.18 |
스프링 vs 스프링부트 (0) | 2025.06.18 |