전체 글82 [java/spring] DTO - 엔티티를 그대로 내보내면 안에 있는 게 전부 나간다 엔티티는 DB 테이블의 모양이고 응답은 화면이 필요한 모양이다. 둘을 같은 클래스로 쓰면 필드가 새어 나가고 스키마 변경이 API를 바꾼다.컨트롤러에서 엔티티를 그대로 돌려주면 잘 동작합니다. 굳이 DTO라는 클래스를 하나 더 만들고 변환 코드까지 쓰는 게 번거롭습니다. 실제로 무엇이 문제가 되는지, 언제부터 나눠야 하는지 모르겠습니다.안에 있는 것이 전부 나간다직렬화는 객체의 필드를 훑어 JSON으로 바꾸는 일입니다. 내가 고른 것이 아니라 그 객체가 가진 것 전부입니다. 사용자 엔티티에 passwordHash와 internalFlag가 있으면 그것들도 함께 나갑니다.실제로 찍어 보면 그대로입니다. 필요한 것은 id·email·createdAt 셋인데 다섯 개가 다 나갑니다. DTO로 고르면 셋만 남습.. 2026. 8. 27. [.net] 형 변환 - 캐스트와 as, is 중 무엇을 쓸 것인가 캐스트는 실패하면 예외, as는 null, is 패턴은 검사와 변환을 한 번에 한다. 숫자 변환의 버림·반올림·넘침도 함께 짚는다.(int)처럼 괄호로 바꾸는 것과 as, is가 다 형 변환 같은데 무엇이 다른지 모르겠습니다. as로 바꿨더니 나중에 엉뚱한 곳에서 NullReferenceException이 났고, (int)3.9가 4가 아니라 3이 나오는 것도 예상 밖이었습니다.실패했을 때가 다르다형 변환 방법이 여럿인 이유는 실패를 어떻게 다룰지가 다르기 때문입니다. 고를 때 물어야 할 질문도 그것 하나입니다 — 안 맞으면 어떻게 되어야 하나.캐스트는 안 맞으면 즉시 멈춥니다. (Dog)a 는 InvalidCastException: Unable to cast object of type 'Cat' to .. 2026. 8. 27. [.net] 값 형식과 참조 형식 - 대입할 때 무엇이 복사되나 struct는 값을 복사하고 class는 주소를 복사한다. 이 한 줄이 대입·메서드 전달·컬렉션 저장에서 결과를 가른다.값 형식과 참조 형식이라는 말은 들었는데, 객체를 다른 변수에 넣고 값을 바꿨더니 원본까지 바뀌었습니다. 그런데 다른 코드에서는 똑같이 했는데 원본이 그대로입니다. struct와 class 차이라는 말은 들었는데 무엇이 어떻게 다른지 감이 안 옵니다.복사되는 것이 다르다값 형식과 참조 형식의 차이는 하나입니다. 대입할 때 값을 복사하느냐, 주소를 복사하느냐. 나머지 차이는 전부 여기서 따라 나옵니다.실행해 보면 분명합니다. 같은 필드를 가진 struct와 class를 만들어 s2 = s1, c2 = c1 로 대입한 뒤 사본 쪽을 고치면, struct는 s1.X = 1 로 원본이 그대로이.. 2026. 8. 25. [java/spring] @RestController - 반환값을 뷰 이름으로 읽을지 본문으로 쓸지 @Controller는 반환한 문자열을 뷰 이름으로 읽고, @RestController는 응답 본문으로 쓴다. 둘의 차이는 @ResponseBody 하나다.@Controller를 붙이고 문자열을 돌려줬더니 화면에 아무것도 안 나옵니다. 상태 코드는 200인데 본문이 비어 있습니다. @RestController로 바꾸니 잘 나오는데 왜 그런지 모르겠습니다. 둘 중 무엇을 언제 써야 하는지도 헷갈립니다.같은 값을 돌려주는데 결과가 다르다네 가지를 같은 조건에서 실행해 보면 갈리는 지점이 분명합니다. 전부 "hello"를 돌려주는데, @Controller만 응답 본문이 비어 있고 대신 뷰 이름이 "hello"로 잡힙니다. 반환값을 뷰 이름으로 읽을지 본문으로 쓸지가 갈린다. @Controlle.. 2026. 8. 24. [java/spring] @Component와 @Bean — 손댈 수 있는 클래스인가로 갈린다 둘 다 빈을 등록하지만 붙이는 자리가 다르다. 내 클래스에는 @Component를, 남의 클래스에는 @Bean 메서드를 쓴다. 빈을 등록하는 방법이 두 가지라는데 언제 무엇을 써야 할지 모르겠습니다. @Component와 @Bean 둘 다 컨테이너에 올라가는 것 같은데, 강의마다 다르게 씁니다. @Service와 @Repository는 또 뭐가 다른지도 헷갈립니다.붙이는 자리가 다르다@Component는 클래스 선언 위에 붙입니다. 컴포넌트 스캔이 패키지를 훑다가 이 표시를 보면 그 클래스를 빈으로 등록합니다. 내가 만든 클래스라 애노테이션을 붙일 수 있을 때 쓰는 방법입니다.@Bean은 설정 클래스의 메서드 위에 붙입니다. 그 메서드가 돌려준 객체가 빈이 됩니다. 라이브러리에서 가져온 클래스처럼 소스를.. 2026. 8. 23. 이전 1 2 3 4 ··· 17 다음