Java 56

[JPA, Hibernate] 시작하기 -2, JPA 및 Spring Data JPA 사용하기

1. JPA 사용하기 1. JPA @Entity class 만들기 @Entity(name = "Course_Details") // Java Bean과 테이블 이름을 다르게 설정할 수 있습니다. public class Course { @Id //table의 기본키를 설정하고 private long id; @Column(name = "name") // column과 매핑합니다(동일하다면 굳이 사용하지 않아도 됩니다) private String name; private String author; // } 앞서 사용한 JDBC의 경우, Java코드는 간단했지만, 쿼리는 복잡해질 수 있는 구조였습니다. 테이블을 많이 사용하면 할수록 Repository클래스의 크기는 방대해질 겁니다. JPA를 활용하면 Course..

Java 2023.12.23

[JPA, Hibernate] 시작하기 -1, 초기 설정 및 JDBC 사용하기

JPA이전엔 JDBC, Spring JDBC를 주로 사용했습니다. 간단한 프로젝트를 생성하면서 JPA와 Hibernate의 필요성에 대한 고찰을 하겠습니다. 과정은 아래와 같습니다. 1. Spring Boot H2 Project 만들기 2. Spring JDBC 사용하기 3. JPA, Hibernate 사용해서 동일한 작업 하면서 차이점 알아보기 1. Spring Boot H2 Project 만들기 먼저, Spring 프로젝트를 생성합니다. https://ride-dev.tistory.com/26 [SpringFramework] 스프링프로젝트 생성하기 0. 앞서 스프링 프레임워크에 대해 학습하기 위해 스프링 프로젝트를 생성합니다. 1. 프로젝트 생성하기 - spring.io 더보기 start.spring..

Java 2023.12.22

[SpringBoot] Spring Boot vs. Spring vs. Spring MVC

Spring Framework: Dependency Injection스프링 프레임워크는의존성을 정의하고 의존성을 식별하여 자동으로 연결하는의존성 주입이 핵심입니다.다양한 주석을 사용하여 의존성을 정의하고@Component, @Service, ...특정 패키지에서 ComponentScan을 실행하여 해당 패키지에서 정의된 모든 컴포넌트를 식별할 수 있습니다.@ComponentScan모든 컴포넌트와 의존성을 식별하고 나면 이를 자동으로 연결할 수 있습니다.@Autowired이것이 Spring Framework의 코드 작업입니다.하지만 의존성 주입만으로는 강력한 애플리케이션을 빌드할 수 없으며, 다른 프레임워크가 필요합니다.Spring Modules와 Spring Projects는 Spring 생태계를 확장합..

Java 2023.12.22

[SpringBoot] 프로덕션 환경 배포 준비하기(로깅, 모니터링, 구성관리)

프로덕션 환경에서 사용 가능한 애플리케이션을 쉽게 만들 수 있도록 Spring Boot의 중요한 기능을 몇 가지 알아보겠습니다.1. Profiles애플리케이션에는 다양한 환경이 있습니다.(Dev, QA, Stage, Prod, ...)동일한 애플리케이션이라도, 환경에 따라 다른 설정이 필요할 수 있습니다.(다른 DB와 통신하거나, 다른 웹 서비스를 호출할 수도 있습니다)프로필을 통해 환경별 설정을 제공할 수 있습니다.더보기L src    L main        L resources            L application.propertieslogging.level.org.springframework=debugspring.profiles.active=prod            L applicatio..

Java 2023.12.22

[SpringBoot] Spring Boot 목적, 프로젝트 생성(spring.io)

Spring Boot의 목적Spring Boot는 다양한 기능을 통해, 애플리케이션을 프로덕션 환경에 빠르게 빌드하는 것을 돕습니다.1. 빠르게 빌드Spring Initializr : 프로젝트를 빠르게 생성Spring Boot Starter Projects : 프로젝트의 의존성이 사전 정의 되어 있어서 필요에 따라 사용 가능REST API 빌드할 때 필요한 것: Spring, Spring MVC, Tomcat, JSON conversion...-> Spring Boot Starter Web (웹 애플리케이션 & REST API 의존성 디스크립터)단위 테스트 작성에 필요한 것: Spring Test, JUnit, Mockito,...-> Spring Boot Starter Test (단위 테스트 의존성 디..

Java 2023.12.21

[SpringBoot] Spring Boot 등장 배경

Spring Boot 이전Spring Boot 없이도 웹 애플리케이션과 REST API를 빌드할 수 있습니다.Spring Boot는 2016년에 도입되었습니다.Spring Boot 도입 전에 Spring Project를 설정하는 작업은 쉽지 않았습니다.애플리케이션을 프로덕션 환경에서 사용 가능케 하려면, 많은 부분을 설정해야 했습니다. 1. 의존성 관리 Dependency Managementpom.xml에서, 개발자가 사용하려는 프레임워크와 그 프레임워크의 버전을 관리해야 합니다.REST API를 만들어야 한다면, Spring framework, Spring MVC framework, JSON binding framework 등을 가져와야 했으며,단위 테스트를 작성하려면 Spring Test, Mokit..

Java 2023.12.21

[SpringFramework] 개념 및 용어 정리

@Component컴포넌트 스캔에 속해있는 특정 클래스에 @Component를 추가하는 경우, 특정 클래스의 인스턴스는 SpringFramework가 관리합니다.DependencyGame은 ProgramRunner의 dependency입니다.Component ScanComponent Scan을 정의하여 Spring이 Component의 위치를 파악할 수 있습니다.패키지 명을 명시하거나, 명시하지 않을 수 있습니다.@ComponentScan("com.example")@ComponentScan명시하지 않으면 해당 ComponentScan이 정의된 패키지 및 하위 패키지가 Scan됩니다.Dependency InjectionSpring이 컴포넌트의 의존성이 무엇인지 식별하고 와이어링 하는 프로세스를 Depend..

Java 2023.12.20

[SpringFramework] Spring Annotations

Spring 스테레오타입 어노테이션 @ComponentSpring Bean을 만들 때마다 @Component를 추가했습니다.제네릭 어노테이션이며 모든 클래스에 적용가능합니다.특정 클래스에 Spring Bean을 생성하려는 경우에 @Component를 사용할 수 있습니다.모든 Spring 스테레오타입 어노테이션의 기초입니다.@Component의 특수화(Specializations)@Service보통 어노테이션한 클래스에 비즈니스 로직이 있음을 나타냅니다.클래스에 비즈니스 로직이 있다면 @Component 대신 @Service를 사용할 수 있습니다.@Controller어노테이션한 클래스가 Controller임을 나타냅니다.웹 애플리케이션과 REST API에서 컨트롤러를 정의하는 데 사용됩니다.@Reposit..

Java 2023.12.20

[SpringFramework] PostConstruct & PreDestroy, CDI Jakart Contexts & Dependency Injection

PostConstruct & PreDestroy, CDI Jakart Contexts & Dependency Injection1. PostConstruct 및 PreDestroyPostConstruct초기화를 수행하기 위한 의존성 주입이 완료된 후 실행해야 하는 메서드에서 사용합니다,클래스를 사용하기 전에 호출되어야 합니다.(다른 Bean이 이 Bean을 사용할 수 있게 되기 전에 이 메서드가 호출됩니다)이 때 애플리케이션이 실행되고 Bean이 로드됩니다.PreDestroy컨테이너에서 인스턴스를 삭제하는 과정 중에 있음을 알려주는 콜백 알림으로,보유하고 있던 리소스를 해제하는 데 일반적으로 사용됩니다. 애플리케이션이 종료되기 전에, 컨텍스트에서 Bean이 삭제되기 전에 특정 작업을 하고자 할 때 사용합니..

Java 2023.12.18

[SpringFramework] Lazy Initialization vs. Eager Initialization, Bean Scopes

Lazy Initialization vs. Eager Initialization, Bean Scopes1. 지연 초기화(Lazy)와 즉시 초기화(Eager)지연 초기화는, Spring Bean이 사용직전에 초기화되도록 하는 것이고즉시 초기화는, Application이 시작할 때 Spring Bean이 초기화되도록 하는 것입니다.(Spring은 기본적으로 즉시 초기화로 설정되어 있습니다) 즉시 초기화를 사용하면 Spring 구성에 오류가 있을 경우,애플리케이션이 시작할 때 오류를 바로 확인할 수 있습니다. 지연 초기화는@Component와 @Bean이 사용되는 거의 모든 곳에서 사용할 수 있습니다.지연-해결 프록시가 실제 의존성 대신 주입됩니다.그리고 @Configuration 클래스에서도 사용할 수 있습..

Java 2023.12.17
728x90
반응형