https://kostaswedu.co.kr/ KOSTA 한국소프트웨어기술진흥협회 개발자 양성한국소프트웨어기술진흥협회 국비지원 개발자 양성과정kostaswedu.co.kr이제 교육이 끝을 향해가며, 그동안 배운 내용과 느낀 점들을 정리해보고자 합니다. 벌써 KOSTA에서 다음 기수의 개발자 양성 교육과정을 신청을 받는다고 하니, 이 후기가 앞으로 KOSTA 과정을 신청하실 분들께 도움이 되었으면 좋겠습니다. 이 교육과정에 지원하게 된 이유KOSTA에는 여러 교육과정이 있지만, `전혜영 강사님의 수업`을 선택한 이유는 테스트, 아키텍처 설계, CI/CD 배포 등 소프트웨어 개발의 전 과정을 다루기 때문입니다. 또한, 협업 프로젝트 경험과 결과물을 만들고 싶어서 이 과정을 선택했습니다. 강의 내용이 수업..
1. Servlet, ServletContainer, ServletContext 1) ServletServlet은 웹에서 들어오는 요청을 자바로 처리해서 동적인 웹 페이지를 만들어주는 기술입니다.public class HelloServlet extends HttpServlet {}위와 같이 HttpServlet을 상속받아 구현됩니다.Servlet은 ServletConainer에 의해 관리되며 init() -> service() -> destroy()의 라이프싸이클을 가집니다.init(): Servlet이 초기화(new)될 때 호출됩니다.service(): 클라이언트의 요청을 처리하는 메서드입니다. 분기에 따라 doGet(), doPost() 등을 실행합니다.destroy(): Servlet이 종료될 때 ..
1. 리플렉션(Reflection)자바의 리플렉션은 런타임 시점에 클래스의 내부 구조(클래스, 메서드, 필드, 생성자 등)에 접근하고 조작할 수 있게 해주는 기능입니다. ExampleData exampleData = new ExampleData();// 일반적인 방법으로 메소드 호출exampleData.hello();// ReflectionClass dataClass = exampleData.getClass(); String methodName = "hello"; // 이부분에서 동적으로 수정가능Method helloMethod = dataClass.getDeclaredMethod(methodName);helloMethod.invoke(exampleData);위 코드는 자바 리플렉션을 사용하..
1. 로그(Log)로그(Log)는 프로그램이나 시스템이 실행되는 동안 발생하는 다양한 이벤트, 오류, 상태 정보를 기록하는 데이터입니다. 이를 통해 문제 해결, 성능 분석, 보안 감시 등에 활용할 수 있습니다. 하지만 로그를 사소한 것까지 모두 기록하면 어플리케이션 성능에 영향을 미치게 됩니다. 따라서 로그 메시지의 중요도와 우선순위에 따라 로그 레벨을 나누고 체계적으로 관리하는 것이 필요합니다. 1.1. 로그 레벨(Log Level) 이해하기 일반적으로 알려진 로그 레벨은 DEBUG, INFO, WARN, ERROR, FATAL 순으로, 순서대로 갈수록 로그 레벨이 높아집니다. 레벨이 높다는 의미는 시스템에 영향을 미치는 흔치 않은 문제나 비정상적인 상황을 나타내며, 중요한 조치가 필요한 상태를 ..
1. 문제 설명Springboot의 @RestController는 Jackson을 사용하여 객체를 JSON으로 자동으로 직렬화 시킵니다.(return 시점에)이때 직렬화 대상의 Domain이 연관관계가 있고 지연로딩을 사용한다면 다음과 같은 문제가 발생합니다. 예를 들어, 다음의 코드를 실행한다면@Getterpublic class Course { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long courseId; @Column(name = "title", length = 50) private String title; @ManyToOne(fetch = FetchType.LAZY) @JoinColu..
1. Hibernate 프록시 객체 JPA의 영속성 컨텍스트를 통해 User 정보를 조회할 때, 연관된 Team 정보도 함께 가져올 수 있습니다. 그러나 Team 정보가 당장 필요하지 않은 경우, 이를 지연 로딩(Lazy Loading) 방식으로 처리할 수 있습니다. 이때 Hibernate는 Team 객체 대신 프록시 객체를 반환하여 실제 데이터 조회를 필요 시점으로 지연시킵니다. getReference()를 통해 프록시 객체를 생성할 수 있습니다. 이 프록시 객체는 실제 엔터티를 상속하며, 필요한 시점에 실제 데이터를 조회합니다.User findUser = em.getReference(User.class, user.getId());System.out.println("class = " + findU..