분류 전체보기99 [JPA] 영속성 컨텍스트 영속성 컨텍스트란 엔티티를 영구 저장하는 환경으로 엔티티 객체들을 관리하는 일종의 메모리상의 공간을 의미한다. 영속성 컨텍스트는 데이터베이스와 자바 애플리케이션 사이에서 객체의 상태를 관리하고 동기화하는 역할을 한다.엔티티 생명주기비영속(new/transient) : 영속성 컨텍스트와 전혀 관계 없는 새로운 상태영속(managed) : 영속성 컨텍스트에 관리하는 상태준영속(detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태삭제(removed) : 삭제된 상테//영속성 컨텍스트 실습//비영속성Member member = new Member();member.setId((100L));member.setName("HelloJPA");//영속em.persist(member);//회원 엔티티를 영속성 .. 2024. 9. 1. JDK Dynamic Proxy와 CGLIB JDK Dynamic Proxy와 CGLIB 모두 프록시 객체를 동적으로 만들어 낼 수 있다.JDK Dynamic Proxy는 Java가 기본적으로 제공하는 동적 프록시 기술이며 CGLIB는 오픈소스 기술이다. JDK Dynamic Proxy는 인터페이스를 구현(Implement)하고, CGLIB는 구체 클래스를 상속(extends)해서 프록시를 생성한다.SpringBoot AOP에서는 CGLIB를 Default로 사용한다.JDK Dynamic Proxy인터페이스 기반으로 프록시를 동적으로 만들어 주기 때문에 인터페이스가 필수이다.InvocationHandler 인터페이스를 구현해서 작성하면 된다.@Slf4jpublic class TimeInvocationHandler implements Invocati.. 2024. 7. 30. 메모리 누수 분석 메모리 이슈 발생파일 업로드, 파일 다운로드 시 비정상적으로 메모리가 오르는 일이 생김 (1.4GiB 이상)JVM 옵션 설정-server -Xms512m -Xmx512m -XX:MetaspaceSize=400m -XX:MaxMetaspaceSize=400m -Xms: Java heap 초기 크기 -XmX : Java heap 최대 크기 -XX:MetaspaceSize : 가비지 컬렉션을 처음 초과할 때 트리거할 할당된 클래스 메타데이터 크기 -XX:MaxMetaspaceSize : 클래스 메타데이터에 할당할 수 있는 최대 네이티브 메모리 양HeapDump 분석MAT(Memory Analyzer Tool)으로 메모리 분석DB에 연결할 때 SSLSocketImpl에서 메모리 누수가 발생하는 것을 확인Data.. 2024. 7. 28. 전략 패턴 (Strategy Pattern) 인터페이스를 정의하고, 각 행위를 클래스별로 캡슐화하여 특정 기능을 자유롭게 변경하여 사용하는 패턴이다. 객체의 행위를 동적으로 바꾸고 싶은 경우 직접 행위를 수정하지 않고 전략을 바꿔주기만 하며 유연하게 확장하는 방법으로 정책 패턴(Policy Pattern)이라고도 한다. 전략 패턴(Strategy Pattern) 또는 정책 패턴(Policy Pattern)은 실행 중에 알고리즘을 선택할 수 있게 하는 행위 소프트웨어 디자인 패턴이다. 전략 패턴은 특정한 계열의 알고리즘을 정의하고, 각 알고리즘을 캡슐화하며, 이 알고리즘들을 해당 계열 안에서 상호 교체가 가능하게 만든다. 위키피디아 Strategy.java public interface Strategy { public void run(); } Str.. 2024. 1. 14. 템플릿 메서드 패턴 (Template Method Pattern) 템플릿 메서드 패턴은 핵심 기능과 부가 기능을 분리하여 단일 책임 원칙(SRP)을 지켜 변경 지점을 하나로 모아 변경에 쉽게 대처할 수 있게 만드는 구조이다. 상속과 오버라이딩을 통한 다형성으로 부모 클래스에 부가 기능(템플릿)을 정의하고 핵심 기능을 자식 클래스에 정의한다. 작업에서 알고리즘의 골격을 정의하고 일부 단계를 하위 클래스로 연기한다. 템플릿 메서드를 사용하면 하위클래스가 알고리즘의 구조를 변경하지 않고도 알고리즘의 특정 단계를 재정의할 수 있다. 템플릿 메서드 패턴은 자식 클래스를 여러개 만들어줘야 하는 단점이 있다. 이런 단점을 보완하기 위해 익명 내부 클래스를 사용한다. 익명 내부 클래스를 구현하면 객체 인스턴스를 생성하면서 동시에 생성할 클래스를 상속 받은 자식 클래스를 정의할 수 .. 2024. 1. 14. 레이어드 아키텍처(Layered Architecture) 레이어드 아키텍처 패턴은 고전적으로 대중적인 아키텍처 패턴이며 프로젠테이션 계층, 비즈니스 계층, 퍼시스턴트 계층으로 구성된다. 각 계층이 역할에 따라 독립적으로 나뉘어 코드의 확장성이 높고 코드의 구조를 파악하기 쉽고 재사용이 가능하다. Top-Down 방식으로 하위 계층으로 단방향 의존성을 가진다. Presentation Layer 클라이언트 시스템과 연결되는 부분으로 백엔드 API에서는 앤드포인트 부분에 해당하고 웹사이트에서는 UI에 해당 REST API의 엔드포인트를 정의하고 HTTP 요청을 읽는 로직을 구현 Business Layer 비즈니스 로직을 구현하는 부분으로 실제 시스템에서 처리 되어야하는 로직을 구현 Persistence Layer 데이터베이스와 관련된 로직을 구현하며 데이터 CRUD.. 2024. 1. 10. 이전 1 2 3 4 5 ··· 17 다음