분류 전체보기 19

[spring] @Bean과 @Component

스프링에는 `@Bean`과 `@Component`가 존재한다.그리고 이 두 개의 어노테이션이 사용되는 것을 개발하다 보면 자주 발견할 수 있다.그래서 이 두개의 궁금증이 생길 수 있어 한번 알아보자.이것의 목적사실 두개의 어노테이션이 똑같다고 생각할 수 있을 만큼 목적이 비슷하다.이 어노테이션들의 목적은 IoC 컨테이너에 빈으로 등록하고 싶을 때 사용하는 어노테이션들이다.하지만 목적이 똑같다고 사용하는 방법이 동일한 것은 아니기 때문에 이것에 대한 궁금증을 한번 해소해 보는 것이 좋을 것 같다.@Bean이 어노테이션의 경우는 개발자들이 컨트롤하지 못하는 외부 라이브러리같은 것을 IoC 컨테이너에 빈으로 등록하고 싶을 때 사용하는 것이다. 이 어노테이션이 사용하는 타겟은@Target({ElementTyp..

spring 2024.08.04

[JPA] 고아객체? 그게 먼데

고아 객체 스프링에서 엔티티끼리 연관관계를 연결하는 것은 매우 흔한 일이다.그래서 JPA는 부모 엔티티와 연관관계가 끊어져버린 자식 엔티티를 자동으로 삭제해 주는 기능을 고아 객체 제거라고 한다.// 고아 객체를 ORPHAN이라고 하기도 함 이러한 기능을 JPA에서 제공하니 안 써볼 수 없을 것이다.그러니 이러한 기능을 사용한 코드를 살펴보자.사용 예시@Entitypublic void Parent { @Id @GeneratedValue private Long id; @OneToMany(mappedBy = "parent", orphanRemoval = true) private List children = new ArrayList(); ....} 위에 코드를 보..

JPA 2024.07.31

[project] JusiCool 프로젝트 회고

프로젝트 소개JusiCool 프로젝트는현재 국내 주식을 10분마다 가져와 실시간 주식을 기반으로 모의 주식 투자의 경험을 제공하는 앱 서비스이다. 백엔드 깃허브:더보기Github: https://github.com/RandomJusicool/JusiCool_backend기간6월 13일 ~ 7월 17일멤버AOS: 3명BACK-END: 1명 DESIGN: 1명시작 배경어느 날 GSM(광주 소프트웨어 마이스터고)에는 GSM DEV FEST라는 컨퍼런스가 찾아왔다.DEV FEST 컨퍼런스가 열린다고 하여 전시팀에 무조건 속해야 한다는 말이 들려왔다.그래서 나는 여러 프로젝트가 거기에 신청한다고 하여 걱정하지 않던 참에 어느 친구가 말을 걸어왔다. 이렇게..더보기친구: 우리 모의 주식 투자 프로젝트해서 DEV F..

project 2024.07.29

[spring] IoC와 DI?

백엔드 프레임워크를 Spring으로 선택한다면 안 듣고 싶어도 듣는 이야기가 있다.IoC와 DI이다.하지만 듣고 쓰고 싶지 않아도 이 개념을 알아야 Spring을 사용하고 사용할 수 있다.그래서 이번엔 IoC와 DI에 대해 알아보자! IoC(Inversion Of Controller)IoC의 풀네임은 Inversion Of Controller로 직역하면 "제어의 역전"이다.Spring에서 IoC는 Component, Configuration 및 생명주기의 고민을 해결해 주는 디자인 패턴이다.IoC 컨테이너Spring에는 객체의 생성과 의존관계를 책임지고 관리해 주는 컨테이너가 있는데 이를 IoC컨테이너라고 불린다.(IoC 컨테이너 말고도 불리는 이름은 더 있음) IoC 컨테이너는 인스턴스의 생성부터 사..

spring 2024.06.07

[cs] HTTP? HTTPS?

HTTP(Hyper Text Transfer Protocol)?HTTP란 많은 프로토콜 중에 서버와 데이터를 주고받기 위한 프로토콜이다.HTTP는 인터넷상에서 하이퍼텍스트를 주고 받기 위한 통신 규약이고 많은 포트 중에 80번을 사용하고 있다. HTTP의 구조HTTP는 TCP/IP에서 작동한다. TCP/IP는 애플리케이션 레벨의 프로토콜이다.또한, HTTP는 Stateless의 프로토콜 중 하나이고  위에 이미지에서 보다시피 HTTP의 구성요소를 볼 수 있다.하지만 이런 프로토콜의 단점이라고 하면 암호화가 되어있지 않아서 평문의 데이터를 그대로 보내기 때문에 중요한 정보나 데이터를 보내면 다른 사람이 데이터를 조회할 수 있다. 만약에 그런 일이 일어난다면 매우 큰일이 일어날 수 있다. 그래서 등장한 프로..

cs 2024.06.02

[cs]토폴로지(topology)란?

사전적 의미: 체계적인 분류, 위상 배치 그럼 네트워크의 토폴로지에 대해 넘어가기 전에 네트워크란 상호 간에 정보를 교환 또는 전달할 수 있는 유선, 무선으로 연결되어 있는 형태를 말합니다.그러면 네트워크의 토폴로지는 이러한 네트워크를 구성하는 노드와 링크를 어떻게 배치할 것인가의 형태를 말한다. 네트워크 토폴로지의 종류는 Star, Bus, Ring, Mesh, 성형, 망형 등등이 있지만 이 블로그에서는 Bus Topology, Tree Topology를 다루어보겠다. Bus Topology버스 토폴로지는 중앙 통신 회선 하나에 여러 개의 노드를 연결하여 공유하는 토폴로지이다.이 네트워크 구성은 근거리 통신망이라고 불리는 LAN에서 사용한다. 장점설치 비용이 적음신뢰성이 매우 좋은 편여러 노드를 추가하..

cs 2024.05.17

[spring] @Controller VS @RestController 차이점

spring에는 두 가지의 컨트롤러 정의하는 방법이 있다. 첫 번째는 Spring MVC의 컨트롤러인 @Controller가 있고두 번째는 RestfulAPI의 컨트롤러인 @RestController가 존재한다. 앞서 말한 두 컨트롤러의 차이점을 간단히 말하자면 @Controller는 View를 반환하고@RestController는 HTTP Response를 반환한다는 차이점이 존재한다. 조금 더 자세히 말하자면@Controller와 @RestController의 동작방식 위에 있는 그림이 @Controller의 동작 방식이다.보다시피 View와 View Resolver가 있는 걸 볼 수 있다. 하지만 @RestController의 동작방식은 view와 view Resolver가 존재하지 않고 그 대신..

spring 2024.04.03

[JPA] 영속성 컨텍스트란?

JPA의 기본 중에 기본이고 이해하기 위해서는 영속성 컨텍스트(persistence context)라는 단어이다. 영속성 컨텍스트를 번역하자면 '엔티티를 영구 저장하는 환경'이라는 뜻이다.엔티티를 저장하거나 조회할 때 엔티티 매니저를 사용하여 영속성 컨텍스트에 엔티티를 저장또는 보관한다. 엔티티의 생명주기엔티티에는 4가지 상태가 있다.1. 비영속2. 영속3. 준영속4. 삭제 이 4가지를 하나하나 자세히 알아보자.// 코드에서의 em은 엔티티 매니저의 약자1. 비영속(new/transient)영속성 컨텍스트와 전혀 관계가 없는 상태.말 그대로 영속성 컨텍스트와는 전혀 관계가 없는 상태이다.만약 엔티티 객체를 생성했다고 가정해 보면 그 엔티티는 순수하게 객체 상태이지 디비에 저장이 되지 않은 상태이다. 저장..

JPA 2024.03.10

[JPA] 1차 캐시란?

영속성 컨텍스트란?1차 캐시에 대해 이야기하면서 영속성 컨텍스트에 대해 말을 빼먹을 수 없다.영속성 컨텍스트란 엔티티를 영구히 저장하는 환경이라는 뜻이다.만약에 엔티티를 저장 또는 조회를 시도한다면 엔티티 매니저가 영속성 컨텍스트를 사용하여 관리한다. 여기서 말하는 영속성 컨텍스트는 우리가 개발을 하면서 본 경우가 없을 것이다. 왜냐면 여기서 말하는 영속성 컨텍스트는 논리적인 개념일 뿐이지 볼 수 있는 것은 아니다. 그리고 엔티티 매니저를 생성하면서 영속성 컨텍스트는 딱 하나 만들어진다.이제 1차 캐시에 대해 이야기할 건데 영속성 컨텍스트를 이해했다는 가정하에 이야기해 보자. 1차 캐시란?1차 캐시는 영속성 컨텍스트의 특징 중에 하나이다.영속성 컨텍스트의 특징은 이것 말고도 많지만 오늘은 1차 캐시에 대..

JPA 2024.03.05