전체 글(20)
-
@NoArgsConstructor(access=Level.PROTECTED)
@NoArgsConstructor = 아무런 매개변수가 없는 생선자를 생성한다. 왜 권한을 PROTECTED로 설정했을까?? 엔티티의 연관관계에서는 지연 로딩의 경우 실제 엔티티가 아닌 프록시 객체를 통해서 조회를 한다. -> 연관관계의 엔티티를 조회할때 @OneToMany나 @MantToMany와 같은 연관된 엔티티가 여러개일 경우 사용되는 디폴트 전략이다. -> 사용법 : @ManyToOne(fetch=FetchType.LAZY) 이어서 프록시 객체를 사용하기 위해서 JPA 구현체는, 실제 엔티티의 기본 생성자를 통해서 프록시 객체를 생성하는데, 이때 접근 권한이 private이면 프록시 객체를 생성할 수 없게 된다. -> 즉시 로딩으로 구현하면 프록시 객체가 아닌 실제 엔티티를 생성하므로 문제가 생..
2023.11.26 -
AOP(Aspect Oriented Programming)/Spring
AOP란? ◆ 관점 지향 프로그래밍이라고 불린다 ◆ 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나눠보고 그 관점을 기준으로 각각 모듈화 하겠다는 의미이다. 핵심 비즈니스 로직이든, 부가 기능의 로직이든 하나의 객체로 분리하는데 그치는 객체지향 프로그래밍을 보완하기 위해 쓰인다. 핵심적인 관점 ◆ 개발자가 적용하고자 하는 핵심 비즈니스 로직이다. 부가적인 관점 ◆ 애플리케이션을 관통하는 부가 기능 로직 -> 횡단 관심사(로깅, 트랜잭션, 보안) ◆ DB연결, 로깅, 파일 입출력 등이 있다. 다양한 AOP적용 방법 ◆ 컴파일 시점 적용 : AspectJ컴파일러가 일반 .java파일을 컴파일 할 때 부가기능을 넣어서 .class 파일로 컴파일해주는 것을 의미한다. 이 동작을 위빙이라고 부른다. ◆..
2023.11.20 -
WEB 서버와 WAS의 차이
웹 서버(Web Server) 웹 서버란 HTTP프로토콜을 기반으로 클라이언트가 웹 브라우저에서 어떠한 요청을 하면 그 요청을 받아 정적 컨텐츠를 제공하는 서버이다. 정적 컨텐츠란 단순 HTML문서, CSS,이미지, 파일 등 즉시 응답 가능한 컨텐츠이다. 이 과정에서 동적 컨텐츠를 요청받으면 WAS에게 해당 요청을 넘겨주고 WAS에서 처리한 결과를 클라이언트에게 전달하는 역할도 해준다. ex) Apache, Nginxe등 WAS(Web Application Server) DB조회 혹은 다양한 로직 처리를 요구하는 동적 컨텐츠를 제공하기 위해 만들어진 Application 서버이다. HTTP프로토콜을 기반으로 사용자 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어로서, 주로 데이터 베이스 서버와 같이 수..
2023.11.13 -
쿠키와 세션 그리고 jwt
쿠키 : 사용자를 기억하기 위해 서버가 사용자의 브라우저에 저장하는 데이터라고 할 수 있다. (request) ---------> 브라우저 서버 로그인 어떤 사이트에 가입된 회권, 즉 특정 서비스에 일정 권한이 주어진 사용자임을 아이디와 패스워드를 통해 확인받는 과정이다. 인가 -> 허가 한 번 인증을 받은 사용자가 이후 사이트의 여러 기능들을 사용할 때 해당 사용자가 로그인되어 있음을 알아보고 허가해주는 것이다. 사용자의 브라우저에 로그인 정보를 저장하고 매 요청마다 인증을 반복하기에는 무겁고 비효율적이다. 이러한 인가 문제를 해결하기 위한 방법이 세션과 토큰이다. 세션 : Session ID를 사용해 어떤 사용자가 서버에 로그인 되어있음이 지속되는 상태 -> 로그인 성공 시 서버는 세션 DB라는 곳에..
2023.11.05 -
의상(프로그래머스 Lv_2)
import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.*; class Solution { public int solution(String[][] clothes) { int answer = 1; Map a=new HashMap(); for(int i=0;i
2023.06.26 -
전화번호목록(프로그래머스_Lv2)
https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; class Solution { public boolean solution(String[] phone_book) { boolean answer = true; Arrays.sort(phone_book); for(int i=0;i
2023.06.09