Backend/String

JPA

AIHYEONJI 2025. 6. 30. 09:38

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

  • 자바 웹 애플리케이션에서 로그인, 로그아웃, 권한, 인증 같은 보안 기능을 쉽고 강력하게 처리할 수 있는 프레임워크

* 동작 흐름

  1. 사용자가 /login 요청을 보냄
  2. 스프링 시큐리티가 요청을 가로챔
  3. 사용자의 아이디/비밀번호 확인
  4. 인증 성공 시 세션에 사용자 정보를 저장
  5. 인증된 사용자만 특정 URL에 접근 허용
  6. 권한이 없으면 접근 차단(403) → security에서 막은것
  7.  

password는 Spring Boot에서 줌

 

** 폴더 구조

'Backend > String' 카테고리의 다른 글

RESTAPI  (0) 2025.06.19
Thymeleaf  (0) 2025.06.18
스프링 vs 스프링부트  (0) 2025.06.18