분류 전체보기510 데이터베이스(DB) 의 필요성,정의,특징 학습을 할때나, 물건(툴 등)을 다루기에 앞서 왜 필요한지를 먼저 알면 어떤 용도로 사용하고 그것을 더 효율적으로 활용할 수 있을지에 대해 이해하기 쉽다고 생각한다. 데이터베이스 개론에서는 정보와 데이터를 구분해서 설명하는데, 정보는 목장에서 방금 짠 원유로 , 데이터는 팩에 담은 우유 로 빗대어 설명한다. 가치있는 정보를 얻으려면, 현재 상황을 정확히 관찰하고 측정해 의미있는 데이터를 많이 수집해야 한다. 많은 데이터를 수집하고 그 데이터를 효율적으로 저장했다가 필요할 때 꺼내어 쓸 수 있어야 한다. 이런 역할을 하는 것이 데이터베이스이다. 데이터베이스의 정의는 총 4가지로 분류할 수 있다. 1. 공유데이터 특정 조직의 여러 사용자가 함께 소유하고 이용할 수 있다. 2. 통합데이터 데이터 중복성(똑같은.. 2022. 10. 17. @OneToOne 는 1:1 을 보장하지않는다 + unique 제약조건 @OneToOne ( 1:1 ) 매핑을 하면 데이터 입력 시 1:1 을 보장할까?? 위의 내용에 대해 테스트를 해보았다. Member 클래스, Locker 클래스가 있다. 조건은 Member 1명당 1개의 Locker만 사용할 수 있다. Member 클래스가 연관관계의 주인이 되며, Locker 클래스에서는 mappedBy를 사용해 양방향으로 연결해준다. 테스트 내용 : 1명의 락커에 1명 이상의 멤버가 들어가는지 확인한다. public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String username; @OneToOne @JoinColumn(name = "locker_id") priv.. 2022. 10. 17. No validator could be found for constraint 'javax.validation.constraints.NotBlank' validating type 'java.lang.Integer' 역시 혼자 만들다보니 사소한 에러가 많이 발생한다. 아주 단순한 오류여도 아! 하면서 깨닫는게 확실히 많아지는 걸 느낀다. 에러내용 javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.NotBlank' validating type 'java.lang.Integer'. Check configuration for 'age' 에러원인 @NotBlank(message = "나이는 필수값입니다.") private int age; age 에 있는 @NotBlank 가 원인이었다. @NotBlank or @NotEmpty 는 String 타입에서만.. 2022. 10. 14. Request processing failed; nested exception is java.lang.IllegalStateException: Ambiguous handler methods mapped for ... 에러내용 org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: Ambiguous handler methods mapped for '/members/1': {public com.jong.post.domain.member.response.MemberResponse com.jong.post.domain.member.controller.MemberController.findByUsername(java.lang.String), public com.jong.post.domain.member.response.MemberResponse .. 2022. 10. 14. 빈을 등록하기 위한 방법 @Configuraion, @Bean, @Component Spring IOC 컨테이너가 관리하는 자바 객체를 빈(Bean) 이라고 부른다. 일반적인 자바 프로그램에서는 각 객체들이 프로그램의 흐름을 제어하고,객체를 직접 생성하고 조작을 했다. Class 를 생성하고 new 를 입력해서 원하는 객체를 직접 생성 후 사용했다. 즉 , 모든 작업자가 제어하는 구조로 흘러갔다. IOC(제어의역전) 가 적용될 경우, 객체의 생성을 특별한 주체에 맡긴다. 이러한 경우, 사용자는 객체를 직접 생성하지 않으며, 사용자가 제어권을 다른 주체에 넘긴다. new 를 이용하여 생성된 객체가 아니라, Spring에서 관리되는 자바 객체를 사용한다. Spring 에 의해 생성되고 관리되는 자바 객체를 Bean 이라고 한다. Bean 은 싱글톤으로 관리된다 @Configuration +.. 2022. 10. 14. DispatchServlet(디스패처 서블릿) 에 대해 알아보자. DispatchServlet 의미 (Dispatch = 파견, 보내다) http 에서 들어온 모든 요청을 가장 앞단에서 받아 적합한 컨트롤러에 위임하는 프론트 컨트롤러이다. * 프론트 컨트롤러 : 서블릿 컨테이너의 제일 앞단에서 서버에 들어오는 클라이언트의 모든 요청을 받아 처리하는 컨트롤러 요청을 받아 어떤 controller 에게 위임을 할지 handlerMapping 을 통해 확인 후 HandlerAdapter를 통해 위임을 진행한다. Spring MVC 는 디스패처 서블릿이 등장함에 따라, web.xml 에서 각각 url 매핑을 등록하던 작업을 스킵하고 모든 요청을 핸들링하고 공통작업을 처리하면서 편리하게 이용이 가능해졌다. 모든 요청을 디스패처 서블릿이 받아 편리해진 것은 사실이다. 하지만, 이.. 2022. 10. 14. @Controller 와 @RestController 의 원리 @Controller 해당 어노테이션의 목적은 Model 객체를 만들어 데이터를 담고 view를 반환하기 위함이다. 아래와 같은 과정으로 요청과 응답이 진행된다. @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Component public @interface Controller 클라이언트에서 uri 형식을 통해 요청을 보낸다. DisPathcherServlet 에서 해당 요청을 받아 HandlerMapping 을 통해 위임할 Controller를 찾는다. Controller 에서는 비즈니스 로직을 진행하여 데이터를 받는다. HandlerAdapter는 View Name을 받아 DispatcherServlet 에게 전달.. 2022. 10. 13. @valid 를 사용해보자 (유효성 검사) https://josteady.tistory.com/683 유효성 검사(Validation) 유효성 검사 / 데이터 검증 (Validation) - 서비스의 비즈니스 로직이 옳바르게 동작하기 위해 사용되는 데이터에 대한 사점 검증하는 작업 - 데이터의 검증은 여러 계층에서 발생 - 데이터에 대 josteady.tistory.com 해당 포스팅에 이어 게시판관련 프로젝트를 만들면서 알게된점과 사용한 코드에 관해 정리하려고 한다. 아직 유효성검증 관련해서 궁금하고 미흡한 부분이 많아, 게시판(post) 관련해서 간단하게 작성했다. @Getter @Setter @NoArgsConstructor public class CreatePostDto { @NotBlank(message = "제목은 필수 값입니다.") .. 2022. 10. 13. Where 다중 파라미터 사용 - 동적쿼리 동적쿼리를 다룰 수 있는 방법 2번째이다. 첫번째는 BooleanBuilder를 사용한 방법이였다. //Where 다중 파라미터 사용 @Test void 동적쿼리_whereParam() { String username = "member1"; Integer ageParam = 10; List result = searchMember2(username, ageParam); assertThat(result.size()).isEqualTo(1); } searchMember2 메서드를 확인해보면 아래와 같다. // 메서드 명으로 쉽게 의도를 알아차릴 수 있다. private List searchMember2(String usernameCond, Integer ageCond) { return queryFactory .. 2022. 10. 12. 이전 1 ··· 23 24 25 26 27 28 29 ··· 57 다음