분류 전체보기 22

[java] static 잘 사용하고 있나?

Static Java에서 Static을 사용하는 대부분의 이유는 메모리에 한번 할당해 프로그램이 종료될 때까지 사용하고 종료될 때 메모리에서 사라지게 하기 위해 사용할 텐데요. 메모리를 중요시하여 사용하는 만큼 당연히 메모리 영역에 대해 이해도가 어느정도 있어야 될 것입니다. 우리가 만든 Class는 메모리에 올라갈 때 Static 영역(메서드 영역)에 생성되고, new 연산자를 통해서 생성한 객체는 Heap 영역에 생성이 됩니다. 또한 Heap 영역에 생성된 객체들은 GC(Garbage Collector)를 통하여 관리를 받습니다. 하지만 Static를 사용하여 Static 영역(메서드 영역)에 할당된 메모리는 장점으로써는 모든 객체가 공유하는 메모리라는 것이 있지만 단점으로는 GC에 관리 대상이 되지..

java 2024.08.18

[spring] 스프링 시큐리티? 무슨 역할을 할까

스프링 스큐리티란spring 기반의 애플리케이션의 보안을 담당하는 스프링 하위 프레임워크'인증'과 '권한' 부분을 Filter에 따라 처리한다.Filter는 Dispatcher Servlet에 가기 전에 처리되어 URL 요청을 받지만, Intercepter는 Dispatcher와 Controller사이에 위치한다는 점에 차이가 있다.스프링 시큐리티에서 보안쪽으로 많은 옵션을 제공하기 때문에 개발자에겐 보안로직을 짜지않아도 되는 장점이 있다.인증관련된 아키텍쳐인증(Authentication) : 해당 사용자가 본인이 맞는지 확인하는 과정인가(Authorization): 인증된 사용자가 요청한 자원에 접근 가능한지 결정하는 과정 시큐리티는 기본적으로 인증 절차를 거친 후에 인가 절차로 진행된다.이런 인증과 ..

spring 2024.08.11

[JPA] 양방향 매핑과 연관관계

Spring에서 연관관계를 매핑한다고 한다면 대표적으로 단방향 또는 양방향일 텐데오늘은 둘 중에 양방향에 대해 이야기해보겠습니다.JPA 프로그래밍 책을 기반으로 작성하였습니다.양방향이란? 위에 객체 연관관계를 살펴보자면 보다시피 Member와 Team은 다대일 관계이다. 반대로 하면 일대다 관계이다.일대다는 여러 개와 연관관계를 맺기 때문에 컬렉션을 사용하여 Team.members를 List로 선언한 것을 볼 수 있다.더보기여기서 List로 컬렉션을 추가하였다고 무조건 List만 쓸 수 있는 것이 아닌 Collection, Set, Map과 같은 다양한 컬렉션을 지원하기 때문에 필요에 따라서 사용하면 된다. 테이블의 관계데이터베이스에서 테이블은 외래 키 단 하나로도 양방향으로 조회가 가능하다. 그래서 객..

JPA 2024.08.09

[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