DEV/Java

· DEV/Java
H2 DB - Spring의 경량화 DB 브라우저 : H2 DB Console 다루는 방법 일단 application.yml에 가서 h2 console을 켜봅시다 spring: h2: console: enabled: true server: port: 8080 그러면 이제 프로젝트를 실행 시켰을 때 아래와 같이 console에 jdbc 설정 값이 뜨는 것을 볼 수 있습니다 이제 브라우저에서 localhost:8080/h2-console을 검색하면, H2 console을 볼 수 있습니다 JDBC URL이 보일텐데 여기에, 아까 프로젝트 콘솔에 떴던 jdbc URI를 입력해줍니다 이제 Connect를 하시면, H2 DBMS에 접근 하실 수 있습니다 IntelliJ : H2 DB Console 다루는 방법 먼저..
· DEV/Java
JPA의 영속 상태 - 영속 상태의 Entity의 상태 변경을 데이터베이스가 자동 반영한다 "영속 상태"는 JPA에서 엔티티의 생명주기를 설명하는 용어 중 하나입니다. 엔티티의 생명주기는 크게 비영속, 영속, 준영속, 삭제 네 가지 상태로 나눌 수 있습니다. 비영속: 아직 영속성 컨텍스트에 속하지 않은 상태. 즉, 아직 데이터베이스와 연관이 없는 상태입니다. 영속: 영속성 컨텍스트에 속해 있는 상태. 즉, 데이터베이스와 연관이 있는 상태입니다. 준영속: 영속성 컨텍스트에서 분리된 상태. 즉, 데이터베이스와의 연관이 끊긴 상태입니다. 삭제: 엔티티가 삭제된 상태. 즉, 데이터베이스에서 삭제된 상태입니다. 영속 상태란? "영속 상태"라는 말은 엔티티가 Persist Context에 속해 있으며, 따라서 데이..
· DEV/Java
영속성 컨텍스트(Persistence Context) 영속성 컨텍스트는 JPA에서 중요한 개념 중 하나로, 엔티티를 영구 저장하는 환경을 말합니다. 영속성 컨텍스트는 EntityManager 인스턴스를 통해 접근하고 관리됩니다. 1. 1차 캐시 영속성 컨텍스트는 내부에 엔티티를 저장하는 1차 캐시를 가지고 있습니다. EntityManager를 통해 엔티티를 조회하면 먼저 1차 캐시에서 엔티티를 찾고, 없을 경우에만 데이터베이스에서 데이터를 조회합니다. 이를 통해 같은 트랜잭션 내에서 엔티티를 반복적으로 조회할 때 성능을 향상시킬 수 있습니다. User user1 = entityManager.find(User.class, userId); // 데이터베이스에서 조회 User user2 = entityMana..
· DEV/Java
Java Persistence API (JPA) JPA는 Java Persistence API의 약자로, 자바 진영에서 관계형 데이터베이스와 객체 지향 프로그래밍 간의 데이터를 매핑하고 관리하기 위한 표준 인터페이스입니다. 이는 개발자가 데이터베이스에 대한 저수준의 코드 작성을 줄이고, 객체 지향적인 방식으로 데이터를 다룰 수 있게 돕습니다. JPA는 객체 지향 프로그래밍의 개념과 관계형 데이터베이스의 테이블 간의 매핑을 처리하기 위한 ORM(Object-Relational Mapping) 기술을 기반으로 합니다. JPA의 역할 JPA는 ORM 개념을 추상화하여 표준 인터페이스로 제공하며, 다양한 ORM 프레임워크를 JPA 구현체로 사용할 수 있도록 합니다. 이를 통해 개발자는 일관성 있고 편리하게 객체..
· DEV/Java
@DataJpaTest - Spring Boot에서 제공하는 JPA 테스트 유틸리티 - [[Repository]] 주입 및 스캔 등 테스트 보조 이 어노테이션은 Spring Boot에서 제공하는 테스트 유틸리티 중 하나로, JPA 관련 컴포넌트를 테스트하는 데 사용됩니다. 1단계: 임베디드 데이터베이스 사용 @DataJpaTest를 사용하면 테스트를 위한 임베디드 데이터베이스를 메모리에 올립니다. 기본적으로 H2 데이터베이스가 사용되며, 각각의 테스트마다 독립적인 데이터베이스가 생성됩니다. 이를 통해 실제 데이터베이스를 사용하지 않고도 데이터베이스와 상호작용하는 코드를 테스트할 수 있습니다. @DataJpaTest public class UserRepositoryTest { @Autowired priva..
· DEV/Java
@ToString - 해당 클래스의 정보를 문자열로 자동 생성한다. - 사용자는 클래스 인스턴스를 바로 출력하면, 인스턴스 정보를 알 수 있다. @ToString은 Java의 Lombok 라이브러리에 포함된 주석입니다. Lombok은 편집기와 빌드 도구에 자동으로 연결되는 Java 라이브러리로, 반복적인 코드를 줄여주는 유용한 기능을 제공합니다. @ToString를 클래스에 적용하면, Lombok은 해당 클래스에 대한 toString() 메서드를 자동으로 생성합니다. 이 toString() 메서드는 클래스 이름과 각 필드와 그 값들을 포함하는 문자열을 생성합니다. 이는 디버깅에 매우 유용할 수 있습니다. 객체의 상태를 쉽게 출력할 수 있습니다. 예시 Certainly! Here’s an example t..
· DEV/Java
@Component - Spring에서 해당 클래스의 인스턴스를 싱글톤 생성 - Spring Context 내에서 전역적으로 사용가능하게 한다 @Component 어노테이션은 Spring에서 해당 클래스의 인스턴스가 필요할 때 Spring이 직접 관리하도록 해줍니다 이렇게 하면 Spring IoC Container는 이 클래스의 라이프사이클을 관리하게 됩니다. 다시 말해, 이 클래스의 인스턴스를 언제 생성하고, 언제 소멸시킬지 등을 결정하게 됩니다. 또한, 이 클래스를 필요로 하는 다른 클래스에게 자동으로 제공할 수 있게 됩니다. 이것은 모듈 간의 의존성 관리(DI (Dependency Injection))를 더욱 편리하게 만들어줍니다. 필요한 객체를 직접 생성하거나 찾는 대신, 필요한 곳에 적절하게 주..
· DEV/Java
SQL 조인에 대한 이해 - Outer Join과 Inner Join 1. 연관관계와 주체 "연관관계의 주체가 된다"라는 표현은 관계형 데이터베이스에서 테이블 간에 연결(연관관계)을 만드는 역할을 한다는 것을 의미합니다. "FK를 가진다"는 외래 키(Foreign Key, FK)를 가지고 있다는 의미인데, 외래 키는 한 테이블의 필드가 다른 테이블의 기본 키(Primary Key, PK)를 참조하는 것을 의미합니다. 이 외래 키는 테이블 간의 관계를 정의하며, 데이터 무결성을 보장하는 데 중요한 역할을 합니다. SQL에서 조인을 이해하려면 먼저 연관관계와 그 주체를 이해해야 합니다. 연관관계의 주체는 일반적으로 외래 키(Foreign Key, FK)를 가지고 있는 테이블입니다. 이를 '드라이빙(Drivi..
· DEV/Java
Meta 어노테이션 - 다른 어노테이션에 적용 되는 어노테이션 어노테이션은 Java 코드에 메타데이터를 제공하는 방법으로, 코드의 동작 방식을 알려주거나 수정하는 데 사용됩니다. Meta 어노테이션은 다른 어노테이션에 적용되는 어노테이션을 말합니다. 메타-어노테이션은 주로 어노테이션의 동작 방식을 정의하거나 수정하는 데 사용됩니다. Java에서의 메타-어노테이션 Java 자체도 메타-어노테이션을 제공하며, 다음과 같은 것들이 있습니다 @Target 해당 어노테이션이 적용될 수 있는 Java 요소의 유형을 지정합니다. 예를 들어, 클래스, 메서드, 필드 등에 대해 적용할 수 있습니다. @Retention 어노테이션이 어디까지 유지될지 정의합니다. 소스 코드, 클래스 파일, 런타임 등에서 유지될 수 있습니다..
· DEV/Java
IoC : 의존성 주입/제어 반전(IoC) - 제어의 흐름을 프로그램이 아닌 프레임워크로 넘기는 개념 - IoC는 개념, IoC 컨테이너는 실체, DI는 IoC 구현 방법 Spring 프레임워크의 핵심으로써 IoC Container를 통해 생성에서 소멸까지 프레임워크가 담당하는 개념입니다 IoC (Inversion of Control, 제어의 역전) IoC는 객체의 생성과 생명주기 관리를 개발자가 아닌 프레임워크가 담당하는 개념입니다. 이로 인해 개발자는 객체 생성과 생명주기 관리에 신경 쓰지 않고, 비즈니스 로직에 집중할 수 있게 됩니다. IoC의 핵심 아이디어는 "제어의 흐름을 프로그램이 아닌 프레임워크에 넘기는 것"입니다. DI (Dependency Injection, 의존성 주입) DI는 IoC를..
berom
'DEV/Java' 카테고리의 글 목록 (2 Page)