Java 84

스프링 프로젝트 리팩토링 전 코드(review)

많은 리팩토링과 다양한 기능을 추가해 포스트맨으로 시험해 봤습니다. 우선적으로 이번 프로젝트를 통해서 게시판 기능을 이용한 CRUD에 대해 다잡을 수 있었고, 시큐리티, jwt token에 대해서도 조금 생각해볼 수 있는 계기가 되었습니다. 팀마다 기능을 나누어 구현했기에, 팀과의 협력과 공유하는 것이 얼마나 중요한지에 대해 깨닫게 되었습니다. 리팩토링 전 코드 Entity Entity @Data @AllArgsConstructor @NoArgsConstructor @Entity public class Review { // 아이디 @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; // 상품 매핑 @JoinColumn(name..

Java/Spring 2022.08.22

Junit5을 이용한 테스트코드 작성(단위 테스트 코드)

프로젝트나 사람들과 협업을 하게되면 테스트 코드는 필수적이다. 테스트코드를 작성하는 이유는 다음과 같다. 개발단계 초기에 문제를 발견하게 도와준다. 개발자가 나중에 코드를 리팩토링 할 때 기존 기능의 올바르게 수행되는지 확인할 수 있다. 기능에 대한 불확실성을 감소시킨다. 시스템에 대한 실제 문서를 제공해준다. @SpringBootApplication public class BoardApplication { public static void main(String[] args) { SpringApplication.run(BoardApplication.class, args); } } 스프링부트 웹을 실행할 수 있는 이유 @SpringBootApplicaiton은 스프링부트의 자동 설정, 스프링 Bean 읽기..

Java/Spring 2022.08.15

ArrayList<E> 클래스 및 제네릭 함수 개념

ArrayList는 컬렉션 클래스 중 가장 많이 사용하는 함수이다. 컬렉션 프레임워크 ? 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미한다. 데이터르 저장하는 자료구조와 데이터를 처리하는 알고리즘을 구조화해 클래스로 구현해 놓은 것이다. List 클래스의 특징 중복 저장을 허용한다. 저장 순서가 유지된다. ArrayList 클래스는 배열을 이용하기 때문에 인덱스를 활용해 요소 접근이 편리하다. ArrayList arrList = new ArrayList; arrList.add(40); arrList.add(20); arrList.add(30); arrList.add(10); // for 문과 get() 메소드를 이용한 요소의 출력 for (int i = 0..

Java/Java Concept 2022.08.13

메소드 오버라이딩(Method Overriding) 개념

메소드 오버로딩이랑 메소드 오버라이딩을 구분할 필요가 있다. 메소드 오버로딩 vs 메소드 오버라이딩 메소드 오버로딩이란 서로 다른 시그니처(매개변수 목록)를 갖는 여러 메소드를 하나의 이름으로 정의하는 것이다. 메소드 오버라이딩이란 상속 관계에 있는 부모 클래스에서 이미 정의된 메소드를 자식 클래스에서 같은 시그니처를 갖는 메소드로 다시 재정의 하는 것을 의미한다. 자바에서 자식 클래스는 부모 클래스의 private 멤버를 제외하고 모든 메소드를 상속받는다. 이를 그대로 사용해도 되지만, 재정의해서 사용할 수도 있다. 상속받은 부모 클래스의 메소드를 재정의하기 위해 사용하는 것을 메소드 오버라이딩이라고 한다. 메소드 오버라이딩의 조건 자식 클래스 메소드의 선언부 = 부모 클래스 메소드의 선언부 메소드의 ..

Java/Java Concept 2022.08.09

상속(inheritance)

상속이란 기존 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것이다. 객체 지향 프로그래밍을 구성하는 특징 중 하나이다. 상속을 이용하면 기존 클래스의 모든 필드와 메소드를 물려 받아 새로운 클래스를 정의할 수 있다. 기존 클래스 : 부모클래스(parent class), 상위클래스(super class), 기초 클래스(base class) 새로운 클래스 : 자식클래스(child class), 하위클래스(sub class), 파생클래스(derived class) 상속의 장점 기존 클래스 재활용 계층적 관계 구성(상하관계 구분) 자식 클래스 사용법 (새롭게 만든 클래스) class 자식클래스이름 extends 부모클래스이름 즉 자식클래스 안에 부모클래스가 들어가있음을 확인할 수 있다. ※중요..

Java/Java Concept 2022.08.09

메소드의 구분(클래스 메소드, 인스턴스 메소드)

class LoginPage{ boolean success; //인스턴스 변수 void Login(){ success = true; } //인스턴스 메소드 static void classLogin(boolean success){ return success; } //클래스 메소드 } 반환형 앞에 static 키워드가 존재하면 클래스 메소드(static method)라 하며 그렇지 않으면 인스턴스 메소드(instance method)라고 한다. 그렇다면 이 둘의 차이는 무엇일까? 클래스 메소드는 인스턴스(객체)를 생성하지 않고도 바로 접근이 가능하다. System.out.println(LoginPage.classLogin(true)); // 클래스 메소드 LoginPage myLoginPage = new L..

Java/Java Concept 2022.08.09

필드의 구분(클래스 변수, 인스턴스 변수, 지역 변수)

자바에서 필드는 세 가지로 구분된다. 변수 생성시기 소멸시기 접근방법 클래스 변수 클래스가 메모리에 올라갈때 프로그램 종료시 클래스이름.변수이름 인스턴스 변수 인스턴스 생성시 인스턴스 소멸시 인스턴스이름.변수이름 지역 변수 블록 내에서 변수 선언시 블록을 벗어날시 변수이름 static int 변수이름 int 변수이름 //class 내에 사용하면 인스턴스 변수 + public class 내에 사용하면 지역 변수 클래스 변수는 모든 인스턴스(객체)가 같은 값을 공유하지만, 인스턴스 변수는 그렇지 않고 고유한 값을 지닌다. http://www.tcpschool.com/java/java_member_field 코딩교육 티씨피스쿨 4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파..

Java/Java Concept 2022.08.09

SpringBoot JPA(Java Persistence API) 사용 목적

유지, 보수와 효율성 증대 JPA를 사용하지 않고, SQL문으로 테이블을 생성한다면 일일히 CRUD를 작성해주어야 한다. 하지만, JPA를 사용한다면 일일히 CRUD문을 작성하지 않고 JPA에게 저장할 객체로 전달해주면 된다. 테이블 간에 연관관계를 정의하기 위해 사용 ex) entity가 2개일 때, 작성자 entity ↔ 게시글 entity간의 연관관계를 정의하기 위해서는 1 : 1(OnetoOne,일대일), 1 : n(OnetoMany,일대다), n: 1(ManytoOne,다대일)이 있다. 작성자 한 명은 여러 개의 게시글을 사용할 수 있으므로, 작성자 입장에서는 1 : n(일대다,OnetoMany) 관계지만, 게시글 입장에서는 다대일(ManytoOne)관계이다(여러 개의 게시글들을 한 명이 쓸 수..

Java/Spring 2022.08.05

DTO, DAO, Repository, Entity 개념

Entity(Domain) 데이터베이스에 쓰일 컬럼 및 여러 엔티티 간의 연관관계 데이터베이스의 테이블을 하나의 엔티티로 생각해도 됨 DB 테이블과 1:1 매핑 Repository Entity에 의해 생성된 DB에 접근하는 메소드를 사용하기 위한 인터페이스 Service와 DB를 연결하는 고리의 역할 DB에 적용하고자 하는 CRUD를 정의하는 영역 DAO(Data Access Object) DB에 접근하는 객체를 의미 Service가 DB에 연결할 수 있게 해주는 역할 DB를 사용하여 데이터를 조회하거나 조작 DTO(Data Transfer Object) DTO는 VO(value Object)이며, 계층간 데이터 교환을 위한 객체를 의미 (Read Only 개념을 담고 있음) Spring Boot의 서비..

Java/Spring 2022.08.04