전체 글59 @Transactional이 없을 때 Lazy 로딩이 실패하는 이유 지연로딩(LAZY)에서 @Transactional이 없으면 proxy 초기화 오류가 발생합니다.즉시로딩(EAGER)을 선택했을 때는, 오류가 발생하지 않습니다. 왜 이런 상황이 발생할까요? 예시 테스트 코드 설명 Member - Reservation이 연관관계를 가지고 있습니다.하나의 멤버는 여러개의 예약을 가질 수 있는 상황이기에 Reservation에 ManyToOne 관계를 설정해놨습니다.@Entitypublic class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; public Member() {} public Member(.. 2025. 5. 21. 기회를 잡을 수 있는 사람이 되기 오늘 갑작스럽게 우아한테크코스 잠실캠퍼스에 Delivery Hero CTO인 Ben이 찾아왔다. 내 삶에 있어 성공한 기업의 CTO와 편하게 이야기 할 수 있는 기회가 몇 번이나 주어질까? 외국 기업의 CTO와 이야기를 할 수 있는 기회는 나에게 있어 소중한 기회라고 생각했다. 하지만, 그 기회를 제대로 잡지 못 했다. Ben과 많은 대화를 하고 싶어 적극적으로 질문을 했었다. 예를 들자면, "AI가 빠르게 발전하는 지금, 개발자에게 있어 코딩능력은 여전히 중요하다고 생각하나요?" "TDD에 대해 어떻게 생각하나요?" 등등... 중요한 건, Ben의 대답을 20%정도밖에 이해하지 못 했다. 영어 듣기실력이 많이 부족해 발생한 일이었다. Ben의 이야기를 잘 이해하고, 추가로 질문을 하는 크루들이 너무 부.. 2025. 5. 16. Spring Core 꼬리 질문 해보기 시작 질문 : Spring Bean이 뭐에요??-> Spring Bean은 Spring Container에서 관리되는 객체를 의미합니다. Bean은 내부적으로 BeanDefinition을 가지고 있고, 그 안에 Bean에 대한 정보(class, scope...)를 가지고 있습니다. 그러면 Spring Container에 Bean을 어떻게 등록할 수 있나요? -> 여러 방법이 있지만, 가장 보편적으로 사용하는 방법은 Annotation을 사용한 방법입니다. Bean으로 등록하고 싶은 클래스 상단에 @Component 어노테이션을 붙이면, 추후 @ComponentScan을 통해 @Component 어노테이션이 붙어있는 모든 클래스를 컨테이너에 빈으로 등록할 수 있습니다. XML 파일을 통해 주입하는 방법.. 2025. 4. 28. Web Client / Server 통신 과정 파헤치기 웹의 통신 과정을 알기 전, 알아야 할 것이 있다. 바로 HTTP다. HTTP란?- 웹에서 데이터를 주고받기 위한 통신 규약(Protocol) Protocol이란? - 서로 다른 컴퓨터들끼리 어떻게 말할지를 정한 약속 인터넷상에서 어떻게 통신할까? 에 대한 규칙이라고 생각하면 편하다.HTTP는 위의 그림과 같이 Header, Body로 나누어져 있다. Header는 메시지를 보내기 위한 정보, Body는 실제 보내지는 메시지를 의미한다. 규칙에 맞게 필요한 정보를 서술하고, 메시지를 담는 형식이다. HTTP를 다루는 내용이 아니기에 method, version에 관한 정보는 알아서 찾아보자. Web의 통신 과정각 계층에 대해 설명할 것이다. 지금은 몰라도 된다. 1) Application .. 2025. 4. 22. Spring Response/Request 어노테이션 @RequestParam- URL / Form 에서 오는 값을 읽을 때 사용한다. ex) ?name=jenson&age=20 이라는 쿼리 파라미터가 있고, 해당 URL을 통해 값을 가져오고 싶다면?@GetMappingpublic void read( @RequestParam("name") String name, @RequestParam("age") int age) { ... } 위와 같이 가져오려는 모든 매개변수에 @RequestParam 어노테이션을 붙여줘야 한다. 단, 파라미터 이름이 변수 이름과 같다면, @RequestParam 값은 생략 가능하다.@GetMappingpublic void read( @RequestParam String name, @RequestParam int age) { ... }.. 2025. 4. 16. 전략 패턴 전략 패턴 : 알고리즘(행위)을 각각 독립된 클래스로 캡슐화하고, 이들을 동적으로 바꿔 끼울 수 있게 설계하는 패턴 단순히 글로만 보면 이해가 안 된다. 아래 귀여운 오리 사진과 예제를 보며, 전략 패턴을 어떤 상황에 쓰는지 이해해 보자! 오리가 한 마리 있다. 이 오리는 1) 소리를 낼 수 있다.2) 수영을 할 수 있다. 위의 UML을 살펴보자. 여러 종류의 오리들이 존재하고, 공통되는 행위를 줄이기 위해 Duck이라는 상위 클래스에 공통 메서드를 정의했다. 그런데 문득 특별한 오리를 만들어주고 싶다는 생각이 들었다. 내가 추가하고 싶은 기능은 fly()다. fly() 기능을 오리에 추가했다! 모든 오리들이 날 수 있지만, 한 가지 문제점이 발생했다. ModelDuck은 단순한 모형 오리다. 모형이기에.. 2025. 4. 11. 이전 1 ··· 3 4 5 6 7 8 9 10 다음