본문 바로가기

Spring7

[TIL] 2022-12-22(39day) @Transactional 어노테이션 👉 @Transactional - 데이터베이스의 상태를 변경하는 작업 또는 한번에 수행되어야 하는 연산들을 의미. - begin, commit 을 자동으로 수행. - 예외 발생 시 rollback 처리를 자동으로 수행. 👉 @Transactional 성질 # 원자성(Atomicity) 한 트랜잭션 내에서 실행한 작업들은 하나의 단위로 처리한다. 즉, 모두 성공 또는 모두 실패. # 일관성(Consistency) 트랜잭션은 일관성 있는 데이타베이스 상태를 유지한다. (data integrity 만족 등.) # 격리성(Isolation) 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않도록 격리해야한다. # 영속성(Durability) 트랜잭션을 성공적으로 마치면 결과.. 2022. 12. 22.
[TIL] 2022-12-20(37day) 자주쓰이는 Lombok 어노테이션 👉 Lombok - Java에서 자주 반복되는 코드들을 어노테이션을 통해 자동으로 생성 해 주는 라이브러리 @AllArgsConstructor - 클래스에 존재하는 모든 필드에 대한 생성자를 자동으로 생성 (final 키워드, 혹은 @NonNull 이 붙은 멤버 변수만을 받는 생성자를 만들어줌) @NoArgsConstructor - 파라미터를 받지 않는 생성자를자동으로 생성 (필드들이 final로 생성되어 있는 경우에는 필드를 초기화할 수 없기 때문에 에러 발생) @RequriedArgsConstructor - 초기화 되지 않은 모든 final 필드, @NonNull과 같이 제약조건이 설정되어있는 모든 필드들에 대한 생성자를 자동으로 생성 @Builder - 빌더패턴을 .. 2022. 12. 20.
[TIL] 2022-12-19(36day) @Controller와 @RestController의 차이점 👉 @Controller @Target(value=TYEP) @Retention(value=RUNTIME) @Documented @Component public @interface Controller - Model 객체를 만들어 데이터를 담고 View를 반환 - View에 표시될 데이터가 있는 Model 객체를 만들고 올바른 View를 선택하는 일을 담당 - @ResponseBody를 사용하여 HTTP Response Body에 데이터를 담아 요청을 완료할 수 있다. - @Controller는 클래스를 Spring MVC 컨트롤러로 표시하는데 사용 - Client는 URI 형식으로 웹 서비스에 요청을 보낸다. - Mapping되는 Handler.. 2022. 12. 19.
[TIL] 2022-12-14(33day) AllInOneController의 한계점 👉 AllInOneController의 한계점 - 한 개의 클래스에 너무 많은 양의 코드가 존재 (코드 이해가 어려움: 처음부터 끝까지 다 읽어야 코드 내용을 이해할 수 있음) - 현업에서는 코드 추가 혹은 변경 요청이 계속 생김 ex) 관심 상품 등록 시 Client 에게 응답 (Response) 하는 값 변경(등록된 Product 전체 정보 → 등록된 Product 의 id) 최저가 (Myprice) 업데이트 조건 변경(Client 가 최저가를 0원 이하로 입력 → 에러 발생) DB 테이블 이름 변경(Product 테이블의 **lprice** → **lowprice** 변경) 👉 절차적 프로그래밍 vs 객체지향 프로그래밍 # 절차적 프로그래밍 - 초기 프로그.. 2022. 12. 14.
[TIL] 2022-12-13(32day) JPA 심화 👉 영속성 컨텍스트 - 엔티티를 영구 저장 하는 환경 # JPA 엔티티의 상태 - 비영속(New) : 영속성 컨택스트와 관계가 없는 새로운 상태 (해당 객체의 데이터가 변경되거나 말거나 실제 DB의 데이터와는 관련없고, 그냥 Java 객체인 상태) // 엔티티를 생성 Member minsook = new Member(); member.setId("minsook"); member.setUsername("민숙"); - 영속(Managed) : 엔티티 매니저를 통해 엔티티가 영속성 컨텍스트에 저장되어 관리되고 있는 상태 (데이터의 생성, 변경등을 JPA가 추적하면서 필요하면 DB에 반영) // 엔티티 매니저를 통해 영속성 컨텍스트에 엔티티를 저장 em.persist(minsook); - 준영속(D.. 2022. 12. 14.
[TIL] 2022-12-12(31day) PersonController API 만들기 👉 Controller 더보기 @RequiredArgsConstructor @RestController public class PersonController { private final PersonService personService; private final PersonRepository personRepository; @GetMapping("/api/persons") public List getPersons() { return personRepository.findAll(); } @PostMapping("/api/persons") public Person createPerson(@RequestBody PersonRequestDto requestDto) {.. 2022. 12. 12.