반응형 Spring65 [Spring] 스프링과 POJO 의 관계 1. POJOPOJO 란 특정 기술이나 프레임워크에 종속되지 않고 자바 언어 명세에만 따라 만들어진 순수한 객체를 의미합니다. 스프링이 등장하기 이전에는 EJB (Enterprise JavaBeans) 기술이 주도 했습니다.EJB 는 Sun 에서 만들어낸 Java 스펙으로 여러 문제점이 있었습니다. 침투적인(Invasive) 설계: EJB 컴포넌트가 되려면 EJB 관련 클래스를 상속받고, 특정 인터페이스를 구현해야 했습니다.복잡성: 객체가 프레임워크에 너무 강하게 의존하여, 비즈니스 로직보다 프레임워크를 위한 코드가 더 많아졌습니다.테스트의 어려움: EJB 컨테이너라는 무거운 특수 환경 없이는 객체를 테스트하기가 매우 어려웠습니다.// EJB 스타일의 UserService// 1. 프레임워크의 특정 클.. 2025. 10. 17. [Spring] TDD Controller Layer 에서 Gson 으로 LocalDate 타입 검증 Gson 은 기본적으로 날짜 -시간 API 를 지원하지 않습니다. 그래서 커스텀 JSON 직렬화를 만들어 비교를 해줘야합니다. @Test@DisplayName("updateEfficiencyAndAdBudget() : failCase1. campaignId 없음")@WithAuthUservoid updateEfficiencyAndAdBudget_fail1() throws Exception { Gson gson = new Gson(); final String url = "/api/margin/updateEfficiencyAndAdBudget"; final MarginUpdateRequestDtos body = MarginUpdateRequestDtos.builder() .. 2025. 10. 14. [Spring/OOP] 디미터의 법칙 @Getter 지양 이유 2 디미터 법칙은 객체 간 관계를 설정할 때 객체 간의 결합도를 효과적으로 낮출 수 있는 유용한 지침 중 하나로 꼽히며 객체 지향 생활 체조 원칙 중 한 줄에 점을 하나만 찍는다. 로 요약되기도 한다. 객체 지향 프로그래밍에서 가장 중요한 것은 "객체가 어떤 메세지를 주고 받는가?" 이다 객체가 메시지를 보내거나 상호작용할 때 바로 옆에 있는 이웃(직접적인 친구)에게만 말을 걸고 이웃의 이웃(낯선 사람)에게는 말을 걸지 말라는 뜻이다. 이를 통해 객체 간의 결합도를 낮추고 캡슐화를 강화할 수 있다. 이를 개선하기 위해 객체에게 자료를 숨기는 대신 함수를 공개한다 . 디미터 법칙 위반 코드 String departmentName = employee.getDepartment().getManager().getDe.. 2025. 10. 9. [Spring/OOP] Getter와 Setter 를 지양해야 하는 이유 객체지향 4대 핵심 중 캡슐화 - 정보 은닉 이라는 것이 있다.객체지향 언어적 요소를 활용하여 객체에 대한 구체적인 정보를 노출시키지 않도록 하는 기법을 칭한다. 이러한 이유 때문에 스프링에서는 Class를 작성할때 필드를 Private 로 정보를 숨기게 되고 접근할때 public 생성자를 통해 접근하게 된다. @Getter@AllArgsConstructorpublic class Member { @Id private String email; private String password;} @Getter / @Setter 를 쓰지 말라는 이유모든 필드(데이터)에 습관적으로 public Getter/Setter를 만들어주는 것은, 사실상 private으로 선언한 변수를 public으로 만.. 2025. 10. 8. [Spring/그로우업]과부화 테스트 DB vs Server (2편) 원래는 다른 주제로 해보려고 했는데 저번에 한 주제를 가지고 동료와 얘기해 보았을때 DB는 신이다 얼마 차이가 나지 않는다고. 그래서 제 데이터에서도 한 번 쏴봤습니다. select * from keyword where date between "2025-07-01" and "2025-07-02" and campaign_id = 10; 836ms , 413ms, 340ms SELECT k.date, CASE WHEN k.key_keyword = '-' THEN '-' ELSE 'search' END AS keySearchType, SUM(k.impressions) AS impressions, SUM(k.clicks) AS clicks, SUM(k.ad_cost) AS adCost.. 2025. 9. 11. [Spring/그로우업]과부화 테스트 DB vs Server sum by(uri)(rate(http_server_requests_seconds_count{application="$app_name"}[1m])) 이번에 그로우업을 진행하면서 항상 동료랑 얘기했던DB에서 극한으로 가공을 해서 가져오기 vs 큰 틀로 가져와서 서버에서 가공하기를 테스트 해보려고해요 저번에 100만개로 했는데 부족하다고 생각하여 현재 DB는 키워드라는 테이블에 총 5000만개를 준비했습니다. 저번에 한 테스트트 파티셔닝 , index 등 DB관련 내용이라 궁금하신 분은 아래에서 봐주시면 됩니다.https://windy7271.tistory.com/entry/Spring-DB-%ED%8C%8C%ED%8B%B0%EC%85%94%EB%8B%9D-Index-%EC%88%9C%EC%88%98-%EC.. 2025. 9. 9. 이전 1 2 3 4 ··· 11 다음 반응형