전체 글 161

Spring과 Spring Boot로 JPA와 Hibernate 시작하기

이번 시간에는 JPA와 Hibernate, 그리고 JDBC에 대해 배워볼 것이다. 순서대로 JPA가 없었을 때 JDBC와 Spirng JDBC를 다루고, 그 뒤에 JPA를 왜 써야 하는지, 왜 Hibernate인지, 마지막으로 JPA와 Hibernate의 차이는 뭔지 배울 것이다.그리고 Spring Boot가 있으면 Spring Boot Data JPA로 JPA를 아주 쉽게 다룰 수 있는데 이 과정 또한 다룰 것이다.이 과정들은 실습을 통해 이루어질텐데 먼저 H2를 인메모리 데이터베이스로 사용해서 Spring Boot 프로젝트를 생성하고, 그 다음 H2 데이터베이스에 Course 테이블을 생성할 것이다. 테이블이 준비되면 JDBC를 사용해서 COURSE 테이블의 데이터를 활용해볼 것이다.이렇게 Sprin..

CDI, XML 겉핣기

CDI에 대해 정말 간단하게 알아보자.CDI는 인터페이스로, 구현이 없고, Spring Framework에서 구현된다.우리가 알아야 할 건 두 가지다.1. Inject는 Autowired와 비슷한 기능을 하고, 2. Named는 Component와 비슷한 기능을 한다.끝.xml에 대해 알아보자.지금까지 우리는 Java 설정을 이용했지만, 전통적인 Spring에는 Java 설정이 없어 xml을 사용했다.코드를 작성하며 xml에 대해 알아보자.일단 언제나 그랬던 것처럼 기반 클래스를 만들자. 기반 클래스의 이름은 XmlConfigurationContextLauncherApplication라고 하자.지금까지는 @Configuration을 사용해왔다. 이는 Java 설정을 사용함을 의미한다. 이번 시간에는 XM..

Sterotype Annotation

이번 게시글에서는 스테레오 타입 어노테이션에 대해 알아보자.우리가 평소에 자주 사용하던 @Component는 제네릭 어노테이션으로 모든 클래스에 사용할 수 있다.이런 @Component가 구체화된 것을 스테레오타입 어노테이션이라 할 수 있는데, @Service, @Repository, @Controller가 있다.스테레오타입 어노테이션은 @Component와 비슷하지만, 더 나아가 타입 또는 메서드의 역할을 나타낸다.@Service는 보통 어노테이션한 클래스에 비즈니스 논리가 있음을 나타낸다.@Controller는 웹 어플리케이션과 REST API에서 컨트롤러를 정의하는데 사용된다.@Repository는 Bean이 데이터베이스와 통신하는 경우에 사용된다.아래는 예시이다.package com.in28min..

Spring Framework 고급 기능 살펴보기 - Lazy initialization, Prototype, PostConstruct, PreDestroy

이번 게시글에서는 Spring Framework에서 사용할 수 있는 여러 기능에 대해서 알아보자.- Lazy Intialzation- Prototype- PostConstruct- PreDestroy가장 먼저 Lazy initialization에 대해서 알아볼 것이다.스프링의 초기화 방식에는 즉시 초기화와 지연 초기화 두 가지가 있다. default 설정은 즉시 초기화이다.오늘도 코드로 예시를 들기 위해 기반 클래스를 하나 만들어보자. 기반 클래스의 이름은 LazyInitializationLauncherApplication이라고 가정하자.그리고 이 클래스 안에 Bean 몇가지를 만들어보자.@Componentclass ClassA {}@Componentclass ClassB {}여기서 ClassB는 멤버변..

Spring Framework 의존성 주입의 다양한 유형

의존성 주입에 대해 설명하기 전에, 지금까지 배운 것들을 복습해보자.@Component 어노테이션은 스프링이 어떤 클래스를 관리해야할 대상인지 아닌지 알 수 있게 해주는 어노테이션이다. 이러한 컴포넌트들을 탐색할 범위를 정하기 위해 @ComponentScan 어노테이션을 사용했다.이렇게 코드를 작성하고, 어플리케이션을 실행하면 Spring은 가장 먼저 컴포넌트 스캔을 수행해서 찾은 컴포넌트의 의존성을 확인하고, 이에 따라 모두 와이어링 한다. 이 과정을 의존성 주입이라고 한다.Constructor-based: Dependencies are set by creating the Bean using its Constructor(recommended)Setter-based: Dependencies are set..