Spring 19

[Spring] Spring Context 설명

Spring Context... 내용도 많고 복잡하고 해서 포스팅을 미루었습니다... 그동안 프로그래머스 코딩테스트밖에 포스팅 못하였습니다.. 각설하고 본론으로 바로 들어가겠습니다. Spring Context 란? Bean의 확장 버전으로 Spring이 Bean을 다루기 좀 더 쉽도록 기능들이 추가된 공간이다. 단순히 Bean을 다루는 것 이외에도 추가적인 기능을 수행합니다. Context는 Bean들을 포함하여 여러 기능을 가진 공간이라고 생각하면 편할 것 같습니다. 종류 여기서 문제가 하나 발생하게 됩니다. 자바에는 서블릿이라는 객체가 존재하는 데, 모든 객체는 Bean으로 관리되니, 서블릿 역시 Bean이 존재합니다. 이러한 서블릿 Bean들도 각자 공통적인 부분들이 있을 것인데, 서블릿은 모두 독..

Spring 2022.02.13

[Spring] Bean 추가 설명

이전 글이 다소 내용이 부실하다고 생각하여 조금 더 추가해서 글을 작성하고자 합니다. 먼저 @Configuration 어노테이션과 관련해서 추가 설명하고자 그렇기 위해서는 위와 관련된 @Component 어노테이션에 대해서 알아야 합니다. 이전 글에서 설명했듯이 (생략) Configuration 방식은 Component Scanning을 통해 Bean을 등록하는 방식 (중략) Life Cycle Callback 중에는 @Component이 붙어있는 모든 Class의 Instance를 생성해 Bean으로 등록하는 작업을 수행하는 Annotation Processor가 등록돼있다. ... 이점이 다소 부족하다고 생각하여 보충하고자 합니다. 위 점을 보고 직접 코드를 작성하면, Configuration이나 C..

Spring 2022.02.06

[Spring] JPA, Hibernate 설명

JPA, Hibernate, Spring Data JPA 이 3가지에 대해서 다소 헷갈리는 점들이 있어서 포스트하고자 했다. 먼저 JPA는 Java Persistence API의 약자로 자바 어플리케이션에서 관계형 DB를 사용하는 방식을 정의한 인터페이스이다. 즉, 라이브러리가 아닌 인터페이스이다. 간혹 JPA와 관련한 오류를 발생하게 되면 EntityManager와 관련한 오류가 발생하는 경우가 종종 있는 데 이때, EntityManager의 역할이 문뜩 궁금해져서 찾아보니 엔티티들을 관리한다. 내부에는 영속성 컨테이너가 있어, 이를 통해 엔티티 관리 여러 엔티티 메니저가 하나의 영속성 컨테이너 공유 가능 Thread-safe 보장 그리고 CRUD (Create, Read, Update, Delete)..

Spring 2022.02.04

[Spring] Hibernate 설명

Hibernate란? Hibernate는 자바 언어를 위한 ORM 프레임워크예요. JPA의 구현체로, JPA 인터페이스를 구현하며, 내부적으로 JDBC API를 사용해요. JPA는 관계형 데이터베이스와 객체의 패러다임 불일치 문제를 해결할 수 있다는 점과 영속성 컨텍스트 (엔티티를 영구 저장하는 환경) 제공이 큰 특징입니다. Hibernate 장점 생산성이 높아진다. Hibernate는 SQL을 직접 사용하지 않고, 메서드 호출만으로 쿼리가 수행됨. 즉, SQL 반복 작업을 하지 않음으로 생산성이 높아짐 SQL을 몰라도 되는 건 아님 (내부 동작에 대해 알아야 하기 때문) 유지보수 측면에서 좋다. 테이블 컬럼이 변경되었을 때, 테이블과 관련된 DAO의 파라미터, 결과, SQL 등을 대신 수행함. 이로 인..

Spring 2022.02.03

[Spring] Spring Data 설명

Spring Data란? 기본 데이터 저장소의 특수한 특성을 유지하면서 데이터 접근을 위해 친숙하고 일관된 Spring기반의 프로그래밍 모델을 제공하는 프로젝트이다. Spring Data는 데이터 접근 기술, relational and non-relational database, map-reduce 프레임워크, 클라우드 기반의 서비스를 쉽게 사용할 수 있도록 도와준다. 또, 데이터베이스와 관련된 많은 프로젝트 (Spring Data JPA, Spring Data REST... 등등)를/을 포함하는 포괄적인 프로젝트 Spring Data 특징 강력한 저장소 및 사용자 정의 객체 mapping 추상화 저장소 메소드 이름으로부터 동적 쿼리 파생 기본 속성을 제공하는 implementation domain 기본..

카테고리 없음 2022.02.02

[Spring] 빈 (Bean) 설명

Bean Bean은 Spring Framework에서 앱을 구성하는 기본적인 객체입니다. 개발자는 Bean을 정의하고, 활용합니다. 그럼 Container는 개발자가 정의한 Bean을 가지고 객체로 만들고 관리하고, 개발자가 필요로 할때 제공합니다. 즉, Bean을 어떻게 정의하고 사용해야하는 지 개발자는 알고 있어야합니다. @Bean // 해당 어노테이션으로 쉽게 정의할 수 있다. Bean은 기본 객체이므로 무엇이든지 될 수 있습니다. 다만 Bean은 BeanDefinition으로 정의됩니다. BeanDefinition에 따라 활용하는 방법이 달라지게 됩니다. BeanDefinition속성에 따라 Container가 Bean을 어떻게 생성하고 관리할지, 그리고 Bean간의 관계를 어떻게 풀어나갈 것인지..

Spring 2022.01.31

[Spring] Spring Core 설명

스프링 코어란(Spring Core)? Spring Container Spring 프레임워크의 근간이 되는요소로 IoC(또는 DI) 기능을 지원하는 영역을 담당합니다. 빈 저장소를 기반으로 빈 클래스들을 제어할 수 있는 기능을 지원하기도 합니다. 빈 저장소의 경우, IOC 패턴이 적용되어 객체 구성부터 의존성 처리까지 모든 일을 처리하는 핵심적인 역할을 합니다. Container는 개발자를 대신하여 Bean을 생성/관리/제거 합니다. Container가 Bean을 전체적으로 관리를 해주므로 덕분에 개발자는 모듈 간에 의존 및 결합으로 인해 발생하는 문제로부터 자유로워졌습니다. 추가로 독립적인 코드를 어노테이션 (@Bean)으로 넘겨주면 Container가 알아서 호출해줍니다. Container가 개발자를..

Spring 2022.01.30

Spring [스프링] 공부 (21.11.18)

MVC 설명과 더불어 스프링에서의 구현관련 하여 이해한 대로 적어보고자한다. mvc는 Model, View, Controller 로서 사용자 인터페이스, 데이터 및 논리 제어를 구현하는 데 널리 사용되는 소프트웨어 디자인 패턴입니다. 소프트웨어의 비즈니스 로직과 화면을 구분하는 데 중점을 두고 있습니다. 더 나은 업무의 분리와 향상된 관리를 제공하기 위해 사용합니다. 예를 들어 view 파일에 모델도 있고, 컨트롤러도 있다면 굉장히 복잡하여, 이를 작성한 사람도 해석하는 데 한 나절이 걸릴 수 있거나, 가독성이 없어지기 때문에 사용합니다. 이를 스프링에서는 간단하게는 아래와 같이 구현이 가능합니다. @GetMapping("hello-mvc") public String helloMvc(@RequestPar..

Spring 2021.11.18

Spring [스프링] 공부 (21.11.13)

현재 스프링에 대해 공부하고 있기때문에 다시 상기하는 겸사 글 역시 작성해보고자 한다. 저 외에도 스프링을 공부하는 분들을 위해 간략하게만 작성하도록 하겠습니다. 스프링을 공부하신다면 제 글을 읽을 일이 없는 게 사실이지만요 먼저 https://start.spring.io/ 에 들어가서 스프링 부트를 사용할 것입니다. Project는 제가 기존에 자주 사용하는 Maven이 아닌 Gradle를 사용할 것입니다. 언어는 코틀린을 따로 공부하고 있기하나, 아직 제대로되지않았기에 코틀린에 비해 잘 아는 언어인 자바를 선택합니다. Spring Boot 버전은 2.5.6을 하였습니다. Group은 티스토리 도메인으로 하였고, 프로젝트명은 'LearnSpring' 입니다. Jar 파일로 압축하도록 하고, 자바 버전은..

Spring 2021.11.13