본문 바로가기

spring4

[Spring] Spring DI 개념과 방법 Spring DI란? 외부에서 두 객체 간의 관계를 결정해주는 것으로 클래스 레벨에서는 의존 관계가 고정되지 않게 하고 런타임 시에 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해준다. 객체를 직접 생성하는 것이 아니라, 외부(IoC/DI 컨테이너)에서 생성한 후 주입시켜주는 방식이다. 애플리케이션 실행 시점에 필요한 객체(빈)을 생성해야 하며, 의존성이 있는 두 객체를 연결하기 위해 한 객체를 다른 객체로 주입시켜야 한다. 이때, 주입시켜주는 역할을 위해 IoC/DI 컨테이너가 필요하다. 의존성 주입은 제어의 역전(IoC)라고 불리기도 한다. 어떠한 객체를 사용할지에 대한 책임은 프레임워크에게 넘어갔고, 사용자는 수동적으로 주입받는 객체를 사용하기 때문이다. 한 객체가 어떤 객체에.. 2022. 8. 22.
[JPA] Spring Data JPA containing 관련 에러 프로젝트 진행 중 검색 기능을 구현하는 과정에 발생한 일이다. /api/search?keyword="검색어" RequestParam으로 넘어온 검색어를 포함한 데이터를 찾기 위해 Spring Data JPA를 사용했고 like 쿼리문을 사용하기 위해 다음과 같이 containing을 사용하여 작성했다. public interface SearchRepository extends JpaRepository { List findByTitleContaining(String keyword); } 다음과 같이 임의로 세 개의 post를 저장하고 private void savePost() { Post post = new Post(1L, "유교수님 운영체제 전공책 팔아요~"); Post post2 = new Post(2.. 2022. 5. 5.
[Spring] Entity에 Enum 데이터 사용하기 Entity 클래스를 생성할 때 enum 클래스를 사용하곤 한다. 다음과 같이 Enum class가 있다. public enum OrderStatus { ORDER, CANCEL } Order 클래스에서 위의 Enum 데이터를 사용하려면 다음과 같이 생성한다. @Entity @Getter @Setter public class Order { ... @Enumerated(EnumType.STRING) private OrderStatus status; ... } 이때, Enumerated 어노테이션에는 두가지의 EnumType이 존재한다. - ORDINAL : enum 순서 값을 저장한다. - STRING : enum 이름을 저장한다. 위 클래스에서 만약 ORDINAL로 지정한다면, ORDER : 1, CAN.. 2022. 3. 17.
[Spring] H2 데이터베이스 사용하기 H2 데이터베이스는 자바 기반 오픈소스 RDMS이다. 주로 인 메모리 데이터베이스로 사용되며 기능 테스트를 할 때 유용하다. hibernate을 이용한다면 간단하게 사용할 수 있지만, 이번에는 직접 다운로드 받아 사용해보도록 하자. 1. 설치 H2 Database Engine에 접속하여 Download 한다. Windows인 경우 위에 것을 사용하면 되지만, 나의 경우 Mac이기 때문에 아래의 All Platforms를 다운 받는다. 이후 원하는 경로에 압축을 해제한다. 2. 설정 압축 해제한 경로에서 터미널을 열어본다. h2라는 폴더가 생겼다면 그 내부에 bin 폴더로 들어가보자. 그 중 h2.sh 파일이 보일 것이다. 해당 파일을 실행하기 위해 먼저 권한 설정을 해주자 chmod 755 h2.sh 3.. 2022. 1. 7.