본문 바로가기
728x90

🍃SpringFrameworks77

[JPA] Native Query. 네이티브 쿼리 NativeQuery는 JPA의 EntityManager를 통해 직접 SQL을 작성하고 실행할 수 있게 해주며, 이를 사용하여 JPA의 영속성 컨텍스트를 우회하여 직접 데이터베이스와 상호 작용할 수 있다. 장점: 복잡한 쿼리를 사용해야 할 때 JPQL로는 표현하기 어려운 경우에 유용하다. 특정 DBMS의 기능을 사용해야 할 때 필요하다. *보통 JPQL을 사용하고 이러한 특정 상황에서만 NativeQuery를 사용하는 것이 좋다. 특징: 반환 타입 : 반환 타입으로 Entity가 아닌 Dto나 기본 자료형을 사용해야 한다. Named Parameter 사용 : [:param] 형식으로 네임드 파라미터를 사용하여 바인딩 할 수 있다. Entity 매핑 : Entity를 사용하지 않기 때문에 수동으로 결과를.. 2023. 9. 25.
[SpringDataElasticsearch] Spring Data Elasticsearch란? Elasticsearch용 Spring Data는 저장소별 기능을 유지하면서 새로운 데이터 저장소에 익숙하고 일관된 Spring 기반 프로그래밍 모델을 제공하는 것을 목표로 하는 Spring Data 프로젝트의 일부이다. Spring Data 프로젝트 중 가장 많이 사용되고 있는 JPA (Spring Data JPA) 와 비슷하게 사용할 수 있기 때문에 보다 익숙하고 쉽게 Elasicsearch에 접근할 수 있게 도와준다. Spring Data Elasticsearch 프로젝트는 Elasticsearch 검색 엔진과의 통합을 제공하며, 주요 기능 영역은 Elasticsearch 문서와 상호 작용하고 Repository Style Data Access 계층을 쉽게 작성하기 위한 POJO 중심 모델이다. P.. 2023. 9. 25.
[JPA] Entity와 Entity Manager & 영속성 컨텍스트 EntityManager는 JPA에서 Entity를 관리하고 DataBase와의 통신을 담당하는 인터페이스이다. EntityManager는 주로 Entity의 생명주기를 관리하고, Entity와 DataBase간의 상호 작용을 처리한다. 📌 영속성 컨텍스트란? 영속성 컨텍스트는 JPA에서 Entity객체들을 관리하는 논리적인 영역이다. System 영속성 컨텍스트 DataBase 이런 중개자 같은 개념으로 System에서 Entity가 DB에 바로 접근하지 않고, 영속성 컨텍스트에 의해 관리되며 Transaction단위로 commit, rollback 등의 작업을 수행한다. 캐싱, 쓰기 지연, 변경 감지 등의 기능으로 이미 조회한 데이터를 영속성 컨텍스트에서 가져오거나 직접적으로 DB에 접근하지 않기 때.. 2023. 9. 25.
[JPA] JPQL (Java Persistence Query Language) JPQL은 JPA에서 사용하는 객체지향적인 쿼리 언어로 JPQL을 사용하여 Entity객체를 대상으로 쿼리를 작성할 수 있다. 객체 중심 쿼리 언어: JPQL은 데이터베이스 테이블이 아닌 Entity객체를 대상으로 쿼리를 작성한다. SQL과 유사하지만 테이블이 아닌 Entity와 그 Entity의 속성을 사용한다. select, from, where, group by, having, order by 등 표준 SQL과 기본 문법은 같다. 특징: JPQL은 객체지향적이며 Entity객체를 대상으로 쿼리를 작성하기 때문에 데이터베이스에 종속적이지 않다. JPQL을 사용하면 Entity객체 사이의 관계를 활용하여 복잡한 쿼리도 작성할 수 있다. Query문에서 FROM [Entity] [EntityAlias] .. 2023. 9. 25.
[JPA] Query Method. 쿼리 메서드 Query Methods는 Spring Data JPA에서 제공하는 기능으로 DB에서 데이터를 조회(select), 저장(insert), 수정(update), 삭제(delete) 등의 작업을 쉽게 수행할 수 있다. QueryMethods는 메서드의 이름 자체로 쿼리를 생성하는 방식으로, 메서드 이름을 통해 JPA는 쿼리를 자동으로 생성하고 실행한다. 이를 통해 개발자는 복잡한 JPQL, QueryDSL 등과 같은 쿼리를 작성하지 않고도 간단한 메서드로 DB조작이 가능하다. 보통 데이터를 조회하는 용도로 사용된다. (delete, save 메서드 지원) 데이터 조회하기 메서드 이름 작성 규칙 메서드 이름은 "find", "read", "get"으로 시작해야 한다. "By" 다음에 엔터티의 속성 이름이 위치.. 2023. 9. 25.
[JPA] JPA Lock의 개념과 사용 JPA(Java Persistence API)에서의 락(Lock)은 동시에 여러 사용자가 같은 데이터를 수정할 때 데이터 일관성을 유지하기 위한 메커니즘이다. 이를 통해 여러 트랜잭션이 동시에 동일한 데이터를 수정할 때 발생할 수 있는 문제를 해결할 수 있다. 즉 트랜잭션에 포함되어 있는 개념이라고 할 수 있다. 이와 같이 하나의 Transaction이 특정 데이터에 접근하게 되면 해당 데이터에 대한 연산작업을 진행하는 동안 LOCK을 걸어 다른 트랜잭션에서 접근하지 못하게 한다. Optimistic Lock (낙관적 락): 낙관적 락은 데이터를 읽을 때 락을 걸지 않고, 데이터를 업데이트할 때 버전 번호 등을 체크하여 충돌이 발생하지 않도록 하는 방식이다. 버전 관리를 위한 필드에 @Version 어노.. 2023. 9. 11.
[SpringCloud] Spring Cloud란? 💡 Spring Cloud 분산 시스템 개발에 효과적인 기능을 제공해주는 Spring Boot 기반의 프레임워크이다. 분산 시스템 : circuit breakers, routing, proxy, load balancing Spring Cloud Config Server 환경 설정을 독립적으로 관리할 수 있다. 위의 예시 이미지처럼 환경 설정을 Spring Cloud Config Server를 통해 외부 저장소(Git, S3 등)에 저장할 수 있다. 그렇게되면, 각 애플리케이션의 환경 설정을 따로 배포하지 않아도 되는 효과가 있다. 다시 말해 모든 서비스에 공통된 환경 설정을 Spring Cloud Config Server를 통해 한번에 할 수 있는 것이다. Naming Server (Eureka) & S.. 2023. 9. 10.
[SpringSecurity] 주요 개념 정리 초기 계정 id : user pw : application실행 시 Run화면에 나타남 Using generated security password: fc491640-b71a-4c55-9f6a-acd67f919627 Dependency에 security를 등록하면 모든 요청을 막고 Security가 관리하게 된다. implementation 'org.springframework.boot:spring-boot-starter-security' 접근 주체 ( Principal ) 보호중인 대상에 접근하려는 유저 인증 ( Authenticate ) 해당 유저가 누구인지 검증하는 절차ID, PW 등을 이용한 로그인을 통하여 검증 해당 Application을 이용가능한 유저인가? 에 중점 인가 ( Authorize .. 2023. 9. 10.
[SpringSecurity] Annotation 정리 @EnableWebSecurity(debug = true) 디버깅 로그를 출력하는 옵션으로 debug = true를 하면 요청 URL, 세션 ID, 요청 브라우저 등의 정보가 나오고 또 적용된 FilterChain들을 볼 수 있다. @Secured 사용자의 권한정보에 따라 자동으로 해당 메서드의 접근을 제한할 수 있게 된다. @PostAuthorize 함수를 실행하고 클라이언트한테 응답을 하기 직전에 권한을 검사한다. @PreAuthorize 요청이 들어와 함수를 실행하기 전에 권한을 검사한다. ⭐ option ⭐ hasRole([role]) : 현재 사용자의 권한이 파라미터의 권한과 동일한 경우 true hasAnyRole([role1,role2]) : 현재 사용자의 권한디 파라미터의 권한 중 일치하는.. 2023. 9. 10.
728x90