코딩 공부/web & Java127 [Spring] Proxy Proxy 프록시(Proxy)는 대리자 라는 뜻으로, 클라이언트가 사용하려고 하는 실제 대상인 것처럼 위장해서 클라이언트의 요청을 받아주는 역할을 합니다. 프록시는 실제 대상인 것처럼 위장함으로써 이를 사용하는 클라이언트는 구체 클래스를 알 필요가 없어집니다. 또한 프록시는 클라이언트의 요청을 받아서 원래 요청 대상에게 바로 넘겨주는 게 아닌, 다양한 부가기능을 지원할 수 있습니다. 여기서 원래 요청하려는 대상, 즉 최종적으로 요청을 위임받아 처리하는 실제 오브젝트를 타깃이라고 합니다. 🏷️ 프록시 패턴 프록시 객체가 객체를 감싸서 클라이언트의 요청을 처리하게 하는 패턴으로 접근 제어, 부가 기능 추가 등의 이유로 사용합니다. 원래 객체와 같은 interface를 구현해줘야 하고 객체를 주입받아 inte.. 2024. 4. 17. [Java] DTO를 Record로 만드는 이유 Record // 레코드 선언법 public record 레코드명(컴포넌트1, 컴포넌트2, ...) { } 값의 집합으로 이루어진 간단한 객체를 심플하게 개발하기위해 고안되었으며, immutable data(불변데이터)를 다룰 class 구현에 최적화되어있습니다. 따라서 웹서비스 구현에서 많이 사용되는 DTO 개념에 적용하면 유용합니다. 생성자, accessors(getter), equals(), hashCode(), toString() 등 DTO 특성의 클래스를 개발할때 매번 개발자가 직접 구현해주어야 했던 반복적인 작업이 줄어듭니다. 또한, "이 클래스는 data carrier 용도이다"를 명시적으로 나타낼 수 있으므로 코드에 대한 이해를 돕고 해당 클래스의 목적에 맞지 않는 구현을 하지 않도록 방지.. 2024. 4. 17. [Java] Lombok Lombok Lombok이란 어노테이션 기반으로 코드를 자동완성 해주는 라이브러리입니다. Lombok을 이용하면 Getter, Setter, Equlas, ToString 등과 다양한 방면의 코드를 자동완성 시킬 수 있습니다. 예를 들어 객체에서 생성자도 필요하고, toString 함수도 Override 해야하는 등 추가적인 작업이 필요하다면 1개의 VO 클래스만 해도 상당히 길어지고, 코드의 가독성은 떨어지는 등의 단점이 있습니다. 하지만 Lombok을 적용한다면 아래와 같이 단순화시킬 수 있습니다. // Lombok 적용 전 public class User { private String useuId; // 유저ID private String password; // 비밀번호 // 생략 public St.. 2024. 3. 10. [JPA] findById와 getReferenceById 🏷️ 데이터를 가져오는 방식 ✅ findById Optional findById(ID id) ▪️ Optional: 조회된 엔티티를 Optional로 감싼 반환 타입입니다. Optional은 엔티티가 존재하지 않을 수도 있는 경우에 사용됩니다. ▪️ ID: 조회할 엔티티의 식별자(ID) 타입입니다. ▪️ 조회된 엔티티 객체를 Optional로 감싸서 반환합니다. ▪️ CrudRepository와 JpaRepository 인터페이스에서 모두 제공되는 메소드입니다 ✅ getReferenceById public T getReferenceById(ID id) ▪️ T: 반환 타입으로 엔티티의 클래스 타입입니다. ▪️ ID: 조회할 엔티티의 식별자(ID) 타입입니다. ▪️ 엔티티가 영속성 컨텍스트에 없으면 Ent.. 2024. 3. 9. [JPA] 영속성 컨텍스트 영속성 컨텍스트영속성 컨텐스트란 엔티티를 영구 저장하는 환경이라는 뜻으로 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 합니다. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리하게 됩니다.// 엔티티 매니저를 사용해 사용자 엔티티를 영속성 컨텍스트에 저장한다는 의미입니다.em.persist(user);🏷️ 특징✅ 영속성 컨텍스트 생성 시점엔티티 매니저를 생성할 때 하나 만들어집니다.✅ 영속성 컨텍스트관리엔티티 매니저를 통해서 영속성 컨텍스트에 접근하고 관리할 수 있습니다.✅ 영속성 컨텍스트의 식별자 값영속성 컨텍스트는 엔티티를 식별자 값으로 구분하기 때문에 영속 상태는 식별자 값이 반드시 있어야 합니다.✅ .. 2024. 3. 2. [JPA] JPA Auditing JPA Auditing Java에서 ORM 기술인 JPA를 사용하여 도메인을 관계형 데이터베이스 테이블에 매핑할 때 공통적으로 도메인들이 가지고 있는 필드나 컬럼들이 존재합니다. 대표적으로 생성일, 수정일같은 필드 및 컬럼으로 데이터베이스에서 누가, 언제하였는지 기록을 잘 남겨놓아야 하기 때문에 이 컬럼은 대단히 중요한 데이터 입니다. 또한 도메인마다 공통으로 존재한다는 의미는 결국 코드가 중복된다는 말과 일맥상통합니다. 그래서 JPA에서는 Audit이라는 기능을 제공하고 있습니다. Audit은 감시하다, 감사하다라는 뜻으로 Spring Data JPA에서 시간에 대해서 자동으로 값을 넣어주는 기능입니다. 도메인을 영속성 컨텍스트에 저장하거나 조회를 수행한 후에 update를 하는 경우 매번 시간 데이터.. 2024. 2. 11. 이전 1 2 3 4 5 6 ··· 22 다음