31일차 - Spring강의(Entity 연관 관계)
·
Java & Spring/Spring
□ 1 대 1 관계(@OneToOne)▷ 단방향 관계외래 키 주인 정하기 : 1대1 관계에서는 외래 키 주인을 직접 지정해야한다.외래 키의 주인만 외래 키를 등록, 수정, 삭제 할 수 있다.주인이 아닌 쪽은 읽기만 가능하다.- 음식 Entity가 외래 키의 주인인 경우- 음식 Entity 코드코드 보기@Entity@Table(name = "food")public class Food { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private double price; @OneToOne @JoinColumn(name = "user_id") p..
29일차 - Spring강의(인증과 인가)
·
Java & Spring/Spring
□ 인증과 인과인증(Authenication)해당 유저가 실제 유저인지 인증하는 개념지문인식, 로그인 등인가(Authorization)해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 개념관리자 페이지, 관리자 권한 등서버와 클라이언트는 http라는 프로토콜을 이용하여 통신하는데 그 통신은 비연결성(Connectionless) 무상태(Stateless)로이루어진다.비연결성(Connectionless) : 서버와 클라이언트가 연결되어 있지 않다는 것, 이유는 리소스 절약을 위해서무상태(Stateless) : 서버가 클라이언트의 상태를 저장하지 않는다는 것□ 인증의 방식쿠키-세션 방식쿠키 : 클라이언트에 저장될 목저으로 생성한 정보를 담은 파일세션서버에서 일정시간동안 클라이언트 상태를 유지하기 위해..
28일차 - Spring강의(Bean 수동 등록, Type중복 시 Bean 주입)
·
Java & Spring/Spring
□ Bean 수동 등록@Component를 사용하면 자동으로 해당 클래스를 Bean으로 등록해줌기술적인 문제나 공통적인 관심사를 처리할 때 사용하는 객체들을 수동으로 등록공통 로그처리와 같은 비즈니스 로직을 지원하기 위한 부가적이고 공통적인 기능들을 '기술지원 Bean'이라 부르고 수동등록 함수동 등록된 Bean에서 문제가 발생 했을 때 해당 위치를 파악하기 쉬운 장점이있음@Configurationpublic class PasswordConfig { @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); }}Bean으로 등록하고자 하는 객체를 반환하는 메서드를 선언그 매서드 위에 ..
26일차 - Spring강의(Entity, 영속성 컨텍스트)
·
Java & Spring/Spring
□ EntityJPA에서 관리되는 클래스 객체를 의미Entity 클래스는 DB테이블과 매핑되어 JPA에 의해 관리됨@Entity // JPA가 관리할 수 있는 Entity 클래스 지정@Table(name = "memo") // 매핑할 테이블의 이름을 지정public class Memo { @Id private Long id; // nullable: null 허용 여부 // unique: 중복 허용 여부 (false 일때 중복 허용) @Column(name = "username", nullable = false, unique = true) private String username; // length: 컬럼 길이 지정 @Column(name = "contents"..
25일차 - Spring강의(IoC와 DI)
·
Java & Spring/Spring
□ 좋은 코드란논리가 간단해야 한다.중복을 제거하고 표현을 명확하게 한다.처음 보는 사람도 쉽게 이해하고 수정할 수 있어야 한다.의존성을 최소화해야 한다.새오룬 기능을 추가 하더라도 크게 구조의 변경이 없어야 한다.※ 의존성이란?코드 보기public class Consumer { void eat() { Chicken chicken = new Chicken(); chicken.eat(); } public static void main(String[] args) { Consumer consumer = new Consumer(); consumer.eat(); }}class Chicken { public void eat() { ..
25일차 - Spring강의(3 Layer Architecture)
·
Java & Spring/Spring
□ 3 Layer ArchitectureController클라이언트의 요청을 받음요청에 대한 로직 처리는 Service에게 전담Service에서 처리 완료된 결과를 클라이언트에게 응답Service사용자의 요구사항을 처리(비즈니스 로직)하는 실세DB저장 및 조회가 필요할 때는 Repository에게 요청RepositoryDB관리(연결, 해제, 자원관리)DB CRUD작업을 처리□ Controller에서 Service분리해보기- 분리 전(Controller)코드 보기@PostMapping("/memos")public MemoResponseDto createMemo(@RequestBody MemoRequestDto requestDto) { // RequestDto -> Entity Memo memo ..
21일차 - Spring강의(Spring MVC)
·
Java & Spring/Spring
□ Spring MVCMVC란 Model-View-Controller의 약자로, 소프트웨어 디자인 패턴 중 하나MVC 패턴은 소프트웨어를 구성하는 요소들을 Model, View, Controller로 구분하여 각각의 역할을 분리 Model데이터와 비즈니스 로직을 담당데이터베이스와 연동하여 데이터를 저장하고 불러오는 등의 작업을 수행합니다.View사용자 인터페이스를 담당사용자가 보는 화면과 버튼, 폼 등을 디자인하고 구현ControllerModel과 View 사이의 상호작용을 조정하고 제어사용자의 입력을 받아 Model에 전달하고, Model의 결과를 바탕으로 View를 업데이트- 사용자가 (HTTP) API 요청했을 때 서버의 서블릿의 동작방식사용자가 Client(브라우저)를 통해 서버에 HTTP Req..
21일차 - Spring강의(테스트 코드, lombok)
·
Java & Spring/Spring
□ 테스트 코드 방법1)클래스 명에 우측 클릭(혹은 command + n)Generate클릭Test클릭혹은 (command + shift + t)로 가능ok를 눌러 생성 - 테스트 해보기테스트 코드는 main메서드 없이 사용이 가능하다.Test애노테이션을 추가DisplayName을 통해 테스트 이름을 정하고Assertions.assertEquasl(a,b)를 통해 예상값a가 기대값b와 일치하는지 확인한다.1) 테스트가 정상적으로 진행된경우2) 테스트의 예상값이 기대값과 다른경우 □ lombok필드가있는 클래스를 생성명령어(@~~)입력gradle의 build실행build - classes경로에 만들어진 코드파일 생성Getter, Setter : 클래스 필드의 getter, setter메서드 생성AllArg..