목록[백엔드] (121)
개발자로 후회없는 삶 살기
서론※ 과거에 기록한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술합니다. 본론정규화란 ERD에서 중복 요소를 찾아 제거해 나가는 과정입니다. 제 1, 2, 3차 정규화 정도까지만 알면 됩니다. 1. 1차 정규화1차 정규화는 속성의 데이터는 단일 값을 가져함을 의미합니다. 그렇다고 몇 개인지도 모를 취미의 개수를 여러 컬럼으로 만드는 것도 안됩니다. 이럴 땐 행으로 늘립니다. 행으로 늘리면 사원 번호가 중복 될 수 있기에 사원번호와 취미를 pk로 갖는 테이블을 만들어야 합니다. 이 모양은 M:N 관계에서 많이 본 매핑 테이블의 형태입니다. 따라서 사원 테이블과 취미 테이블이 양쪽에 있을 수 있습니다. 이는 수강 과목의 모습과 유사합니다. 과목과 취미는 과목명이나 취미 이름 외에 다..
서론 ※ 이 포스트는 다음 강의의 학습이 목표임을 밝힙니다. https://www.inflearn.com/roadmaps/149 김영한의 스프링 부트와 JPA 실무 완전 정복 로드맵 - 인프런 | 로드맵 Java, JPA 스킬을 학습할 수 있는 개발 · 프로그래밍 로드맵을 인프런에서 만나보세요. www.inflearn.com:443 본론 실무에서 jpa를 바로 도입하면 망하는 이유는 매핑을 제대로 못해서 그렇습니다. 이번 강의에서는 객체와 테이블을 제대로 설계하고 매핑하는 방법과 jpa 동작방식을 정확히 배웁니다. 1) 객체와 테이블을 제대로 설계하고 매핑하는 방법 2) 복잡한 관계 매핑 3) jpa 동작방법 jpa가 제대로 동작하는 방법을 이해하지 못하면 너무 추상화된 기술이기에 에러 해결을 못합니다...
서론※ 과거에 기록한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술합니다. 본론테이블을 만들 때는 만드는 규칙이 있습니다. 테이블을 정확하고 효율적으로 설계하는 법을 알아봅니다. - 기본키와 외래키1. 기본키기본키와 외래키는 DB 설계에서 참조 관계를 다룰 때 정확이 설계해야 하는 부분입니다. 테이블에 동일한 인물이 두 명있거나 같은 데이터가 들어있는 것을 방지하기 위해 pk를 만들어야 합니다. '1001' pk를 중복 입력하면 중복 에러가 발생합니다. 한 번 pk를 넣어두면 같은 pk를 또 넣을 수 없어서 중복을 방지 할 수 있습니다. 기본키는 컬럼 여러개를 조합해서 만들수 도 있는데 후보키 개념의 '유일성과 최소성'을 만족할 수 있으면 기본키의 후보가 될 수 있습니다. 예시로 '학생..
서론 스프링 MVC와 데이터 접근 기술을 완강하고 기존 중간점검을 리팩토링합니다. 기획 단계에서 리팩토링 요구사항과 트랜잭션 요구사항이 추가됩니다. 설계는 동일하여 배제하고 진행하겠습니다. 본론 - 프로젝트 기획 단계 => 요구사항 분석 중간점검 2 상품관리 프로젝트를 리팩토링 합니다. => 서비스 기능 설계 정리 1. 설계 : 동일 2. 기능 : 동일 - 개발 시작 1. 도메인별 역할 개발 1) 회원 도메인 기존 패키지 구조를 리팩토링했습니다. 2) 상품 도메인 역시 동일하게 유연성보다 실용성을 따져서 인터페이스를 없애고 빠르게 개발할 수 있는 구조를 선택하여 리팩토링했습니다. JPA를 사용하면 스프링 데이터 JPA와 QueryDSL을 서비스에서 둘 다 사용하도록하여 실용성을 따졌을 것입니다. 2. 도..
서론 ※ 이 포스트는 다음 강의의 학습이 목표임을 밝힙니다. https://www.inflearn.com/roadmaps/373 본론 - 트랜잭션 활용 지금까지 배운 트랜잭션 전파에 대한 내용을 실제 예제로 알아봅니다. - 요구사항 예제를 위한 간단한 요구사항을 만듭니다. 회원을 등록하고 조회할 수 있어야하고 회원에 대한 변경 이력을 추적할 수 있도록 회원 데이터가 변경될 때 변경 이력을 DB LOG 테이블에 남겨야 합니다.(회원가입을 하면 회원 DB에도 저장이되고 로그 DB에도 저장이 되어야합니다.) 회원을 가입하거나 수정할 때 왜 가입하고 왜 수정했는지 테이블에 남겨야하는게 요구사항입니다. 여기서는 가입시에만 남깁니다. - 구현 -> 도메인 @Entity @Getter @Setter public cl..
서론 ※ 이 포스트는 다음 강의의 학습이 목표임을 밝힙니다. https://www.inflearn.com/roadmaps/373 우아한형제들 최연소 기술이사 김영한의 스프링 완전 정복 - 인프런 | 로드맵 Spring, MVC 스킬을 학습할 수 있는 개발 · 프로그래밍 로드맵을 인프런에서 만나보세요. www.inflearn.com:443 본론 - 스프링 트랜잭션 전파 트랜잭션이 둘 이상이 있을 때 어떻게 동작하는지 알아보고 전파를 알아봅니다. 스프링 동작 원리도 더 깊이있게 이해할 수 있습니다. > 트랜잭션을 사용 중인데 그 안에서 또 트랜잭션을 쓰는 복잡한 경우에 스프링이 이를 어떻게 해결하는지 알아봅니다. 이를 이해하면 스프링의 트랜잭션을 완성할 수 있습니다. - 구현 @Autowired privat..
서론 ※ 이 포스트는 다음 강의의 학습이 목표임을 밝힙니다. https://www.inflearn.com/roadmaps/373 우아한형제들 최연소 기술이사 김영한의 스프링 완전 정복 - 인프런 | 로드맵 Spring, MVC 스킬을 학습할 수 있는 개발 · 프로그래밍 로드맵을 인프런에서 만나보세요. www.inflearn.com:443 본론 - 스프링 트랜잭션 소개 트랜잭션이 왜 필요한지 앞서 학습했습니다. 내부 원리를 알아봤고 이번 시간부터 더 깊이있게 학습하고 다양한 기능들을 자세히 알아보겠습니다. -> 복습 public void accountTransfer(String fromId, String toId, int money) throws SQLException { Connection con = d..
서론 ※ 이 포스트는 다음 강의의 학습이 목표임을 밝힙니다. https://www.inflearn.com/roadmaps/373 우아한형제들 최연소 기술이사 김영한의 스프링 완전 정복 - 인프런 | 로드맵 Spring, MVC 스킬을 학습할 수 있는 개발 · 프로그래밍 로드맵을 인프런에서 만나보세요. www.inflearn.com:443 본론 - 스프링 데이터 JPA 예제와 트레이드 오프 여러가지 배운 데이터 접근 기술을 실무에 사용할 때 팁을 배워봅니다. 스프링 데이터 JPA 예제를 보면 서비스가 레포 구현체V2를 사용하고 레포가 스프링 데이터 JPA 프록시 구현체를 썼습니다. 중간에서 레포 구현체 V2가 어댑터 역할을 해서 서비스 코드를 전혀 변경하지 않아도 되는 장점이 있었습니다. -> 고민 여기서..