개발/언어/Java

· DEV/Java
DI (Dependency Injection, 의존성 주입) DI(Dependency Injection, 의존성 주입)는 IoC(Inversion of Control, 제어의 역전)의 구현 방법 중 하나입니다. 즉, IoC가 객체의 생성과 생명주기 관리를 프레임워크가 담당하는 전반적인 개념이라면, DI는 그 개념을 실제로 구현하는 방식 중 하나입니다. DI의 주요 개념 의존성 객체지향 프로그래밍에서 한 클래스가 다른 클래스에 의존하게 되는 경우 예를 들어, 클래스 A가 클래스 B의 메소드를 사용한다면, 클래스 A는 클래스 B에 의존하게 됩니다. 주입: 의존성 주입이란, 객체가 자신이 의존하는 객체를 직접 생성하거나 찾는 대신에 외부 시스템(즉, 프레임워크 또는 IoC 컨테이너)에서 생성된 것을 제공(주입..
· 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/Backend
Hibernate - JPA 표준 구현하고, 확장한 ORM 프레임워크 Hibernate는 JPA(Java Persistence API)의 표준을 구현하고 확장한 ORM 프레임워크입니다. Hibernate는 개발자가 객체 지향적인 방식으로 데이터를 다룰 수 있도록 도와주며, 객체와 데이터베이스 간의 매핑을 관리합니다. 개발자는 자바 객체를 사용하여 데이터베이스의 테이블과 상호작용할 수 있으며, Hibernate가 자동으로 SQL 쿼리를 생성하고 실행하여 데이터베이스와의 상호작용을 처리합니다. Hibernate를 사용하면 개발자는 SQL 쿼리 작성 및 데이터베이스와의 상세한 연결 및 트랜잭션 관리에 대한 부담을 줄일 수 있으며, 객체 지향적인 개발에 집중할 수 있습니다. Hibernate Modeling 1..
· DEV/Backend
MyBatis - Java의 오픈 소스 ORM 프레임워크이다 MyBatis는 기존 JDBC 코드의 반복과 복잡성을 줄이고, 데이터베이스와 객체 간의 매핑을 보다 편리하게 처리할 수 있도록 도와줍니다. 즉 개발자는 복잡한 SQL 매핑과 성능 최적화를 자유롭게 제어할 수 있습니다. 예제 코드 같은 기능인데도 MyBatis가 간편한게 보인다 MyBatis User Object 맵핑을 바로 해준다 public interface UserMapper { @Select("SELECT * FROM users WHERE id = #{id}") User getUserById(int id); } JDBC 커서 만들고, Close 하고 세팅 할 것이 많다. public class UserDAO { private final D..
· DEV/Java
@ToString - 해당 클래스의 정보를 문자열로 자동 생성한다. - 사용자는 클래스 인스턴스를 바로 출력하면, 인스턴스 정보를 알 수 있다. @ToString은 Java의 Lombok 라이브러리에 포함된 주석입니다. Lombok은 편집기와 빌드 도구에 자동으로 연결되는 Java 라이브러리로, 반복적인 코드를 줄여주는 유용한 기능을 제공합니다. @ToString를 클래스에 적용하면, Lombok은 해당 클래스에 대한 toString() 메서드를 자동으로 생성합니다. 이 toString() 메서드는 클래스 이름과 각 필드와 그 값들을 포함하는 문자열을 생성합니다. 이는 디버깅에 매우 유용할 수 있습니다. 객체의 상태를 쉽게 출력할 수 있습니다. 예시 Certainly! Here’s an example t..
· DEV/Backend
Mock API 작성하는 팁 🐥 카카오테크캠퍼스 - 2단계 2주차 과제를 수행 할 때, 하나하나 데이터를 입력해야 하는 불편함이 있었는데 오늘 강사님이 보여주신 코드를 보니까 깔끔해서 들고 왔다 @GetMapping("/products") public ResponseEntity findAll(@RequestParam(defaultValue = "0") int page) { List responseDTO = new ArrayList(); // 상품 하나씩 집어넣기 responseDTO.add(new ProductRespFindAllDTO( 1, "기본에 슬라이딩 지퍼백 크리스마스/플라워에디션 에디션 외 주방용품 특가전", "", "/images/1.jpg", 1000 )); responseDTO.add(n..
· DEV/Java
IoC : 의존성 주입/제어 반전(IoC) - 제어의 흐름을 프로그램이 아닌 프레임워크로 넘기는 개념 - IoC는 개념, IoC 컨테이너는 실체, DI는 IoC 구현 방법 Spring 프레임워크의 핵심으로써 IoC Container를 통해 생성에서 소멸까지 프레임워크가 담당하는 개념입니다 IoC (Inversion of Control, 제어의 역전) IoC는 객체의 생성과 생명주기 관리를 개발자가 아닌 프레임워크가 담당하는 개념입니다. 이로 인해 개발자는 객체 생성과 생명주기 관리에 신경 쓰지 않고, 비즈니스 로직에 집중할 수 있게 됩니다. IoC의 핵심 아이디어는 "제어의 흐름을 프로그램이 아닌 프레임워크에 넘기는 것"입니다. DI (Dependency Injection, 의존성 주입) DI는 IoC를..
berom
'개발/언어/Java' 태그의 글 목록