일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- SQL
- HashSet
- 부트캠프
- java
- html tag
- stringbuffer
- 코드업
- 기본생성자
- 에러
- 상속
- 브랜치
- 자바
- DTO
- entity
- Python
- 알고리즘
- 부스트코스
- 프로그래머스
- HTML
- @NoArgsConstructor
- 깃허브
- 캡슐화
- lv1
- @AllArgsConstructor
- github
- git
- @builder
- 파이썬
- Codeup
- CRUD
- Today
- Total
목록자바(Java) (25)
잉?

JPA를 배우고 CRUD를 적용하면서, 문득 작성해야 하는 코드들에 대해 의문이 들었다. 물론 어렴풋이 이유를 이해하고 있지만, 그 이해가 깊지 않아 이번 기회에 확실히 짚고 넘어가고자 한다.특히, 연관관계 매핑을 설정할 때 영속성 컨텍스트의 중요성을 깨달았다. 단순히 "다대다, 일대다 관계를 맺어줘야 할 것 같다"는 막연한 이유로 매핑을 추가하는 것이 아니라, 불필요한 매핑은 성능 저하를 초래할 수 있음을 인지하고 명확한 필요성을 느낄 때만 매핑을 작성해야 한다는 점을 깨달았다.또한, JPA의 영속성 컨텍스트가 어떻게 동작하는지 흐름을 이미지로 이해하고, 이를 기반으로 @Transactional 어노테이션을 사용하지 않았을 때 어떤 문제가 발생할 수 있는지 알아보자.출처 : 인프런 김영한님의 ‘자바 O..

회원가입 시 username과 password의 구성이 알맞지 않으면 에러메시지와 statusCode: 400을 Client에 반환하기 요구사항에 맞게 코드를 작성하려 한다. UserController.java @PostMapping("/user/signup") public ResponseEntity signup(@RequestBody @Valid SignupRequestDto requestDto) { try{ userService.signup(requestDto); }catch (IllegalArgumentException e){ return ResponseEntity.badRequest().body(new ApiResponseDto("중복된 username입니다.", HttpStatus.BAD_REQ..
Mockito란? 단위 테스트를 위한 프레임워크이다. 가짜 객체인 Mock을 생성해 주고 관리하고 검증할 수 있도록 지원해 주는 프레임워크이다. service의 update메서드를 테스트하기 위해서는 service 객체를 생성할 때 필요한 repository를 전달해 줘야 한다. 하지만 이러한 인터페이스들을 어떻게 전달해야하는지 막막할 때 Mockito를 사용한다고 보면 된다. Mock object(가짜 객체)? 개발한 프로그램을 테스트할 때 테스트를 수행할 모듈과 연결되는 다른 모듈을 흉내 내는 가짜 모듈을 생성하는 객체이다. 분리되기 어려운 클래스들을 가짜객체를 통해 분리한다. 여기서 분리되기 어려운 클래스들의 예시로는 Controller, Service, Repository가 있다. Controll..

- x축이 Time - y축이 Costs 1. 개발 2. 단위 테스트(Unit Test) 3. QA Testing 4. Prodiction(실 서비스 운영 환경) 버그를 사전에 발견하여 기하급수적인 비용의 증가가능성을 사전에 방지하기 위해 단위 테스트를 진행한다. [단위 테스트? (Unit Test)] 단위 테스트는 작은 단위로 쪼개 각 단위가 정확하게 동작하는지 예상대로 동작하는지 검사 및 확인하는 테스트이다. 단위의 크기가 작을 수록 복잡성이 낮아진다. 따라서 단위의 크기를 작게하여 최대한 간단하고 쉽게 작성해야 한다. 만약 방대한 코드를 가진 소프트웨어에 버그가 발생되었다. 디버깅을 통해 범위는 좁혀졌지만 어떤 클래스에 버그가 있는지 정확히 알지 못한다. 이 클래스에 버그가 있는것 같아서! 코드를 ..
상속(Inheritance) 기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것을 의미한다. extends와 implements 차이 메서드 또는 변수를 ‘구현’할 것인가 ‘사용’할 것인가에 따라 상속의 형태가 달라진다. extends 부모에서 선언, 정의하고 자식은 메서드, 변수를 그대로 사용 가능하다. 다중상속 불가능 일반 클래스와 abstract 클래스 상속에 사용된다. class가 class를 상속받을 때 사용 interface가 interface를 상속받을 때 사용 implements 부모 객체는 선언만 하고 정의는 자식에서 오버라이딩해서 사용 가능하다. 다중상속 가능 class가 interface를 사용할 때 implements를 쓴다. interface가 class를 사..
캡슐화(Encapsulation) 클래스 안에 서로 연관 있는 속성과 기능들을 하나의 캡슐로 만들어 데이터를 외부로부터 보호하는 것이다. 즉, 클래스의 내부 변수와 메서드를 하나로 패키징 하는 것이다. 정보은닉 캡슐화를 하는 중요한 목적 중 하나이다.(캡슐화 ≠ 정보은닉) 접근제어자를 통해 데이터를 보호하고, 보호된 변수는 getter나 setter 등의 메서드를 통해서만 간접적으로 접근이 가능하도록 하는 것이 캡슐화의 중요한 목적이다. 접근제어자 private < default < protected < public 순으로 많은 접근을 허용한다. private : 해당 클래스 안에서만 접근이 가능하다. default : 접근 제어자를 별도로 설정하지 않는다면 변수나 메서드는 default 접근 제어자가 ..
OOP(객체 지향 프로그래밍) - 객체를 기준으로 코드를 나누어 구현한다. - 자바의 경우 그 구성 부분 단위가 클래스이다. - (클래스는 설계도 / 구현체는 인스턴스) - OOP는 절차지향에 비해 사람의 사고방식과 비슷하다. OOP 대표적인 특징 💡 캡슐화(Encapsulation) 클래스 안에 서로 연관 있는 속성과 기능들을 하나의 캡슐로 만들어 데이터를 외부로부터 보호하는 것이다. 즉, 클래스의 내부 변수와 메서드를 하나로 패키징 하는 것이다. [JAVA] 캡슐화(Encapsulation)와 추상화(Abstraction)에 대해 알아보자 캡슐화(Encapsulation) 클래스 안에 서로 연관있는 속성과 기능들을 하나의 캡슐로 만들어 데이터를 외부로부터 보호하는 것이다. 즉, 클래스의 내부 변수와 ..
Service는 비즈니스 로직이 있는 곳이다. DB 저장 또는 조회가 필요할 때 Repository에 요청하는 곳이기도 한데 요청하기 위해서는 DTO에서 Entity로 변환해줘야 한다. 그리고 요청받은 데이터(Entity)를 다시 DTO로 변환해서 컨트롤러(Controller)로 보내줘야 한다. 좀 더 자세한 정보는 https://dahlia15.tistory.com/73 그 과정을 살펴보겠다. Service public CommentResponseDto createComment(Long id, CommentRequestDto requestDto, UserDetailsImpl userDetails) { // dto -> entity Blog blog = blogRepository.findById(id)...