///////
Search

1018_백엔드 회고

알고리즘

정사각형 별찍기

직사각형 별찍기

String.repeat() : 문자열을 반복한 값을 반환하는 메서드
예제) ‘abc’.repeat(2); —> ‘abcabc’

xshell에 도커 mysql 띄우기

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=12345678 mysql
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=12345678 mysql 를 입력할때마다 MySQL Workbench 계정이 초기화가 된다.

build.gradle

Alt + insert 를 누른뒤 Add dependency… 클릭
MySQL Connector 을 Add 해준다
빨간원에 있는 돌고래를 꼭 눌러준다!

Insert , Select 구현

SELECT
INSERT

AddANDSelect() 테스트 만들기

Alt + Enter 눌러서 create Test 생성
UserDaoTest도 edit configurations에 들어가서 환경변수(Envirionment variables)를 입력해준다

관심사의 분리

1.Method로 분리

DB접속하는 부분이 Insert , Select 메서드에 공통으로 적용되므로 getConnection() 으로 따로 분리하여 코드의 중복을 제거한다.
Connection conn = getConnection() 으로 DB 연결 부분이 간단해진 것을 알 수 있다.

2.Abstract Class(추상 클래스)로 분리

Abstract Class란? Abstract Method를 최소한 1개를 포함 하고있는 Class , 꼭 구현체를 구현해 줘야 한다. 공통 부분을 남기고 변화가 있는 부분을 abstract method로 만드는 것
추상 클래스 생성
Implement Class (추상 클래스를 구현한 클래스 생성)
Test Code 수정
문제점 : 상속을 사용했다는 단점이 있다. 상속 자체는 간단해 보이고 사용 하기도 편리하게 느껴지지만 사실 많은 한계점이 있다. 이미 UserDao가 다른 목적을 위해 상속을 사용하고 있다면 다중상속이 불가능하므로 UserDao에 상속을 적용하기 힘들게 된다.

2-2 Class로 분리

AwsConnctionMaker 추가하고 초기화
AwsConnctionMaker 클래스
add()에서 AwsConnectionMaker를 사용하게 변경
Class로 분리 했을 때 문제점 : 다시 UserDao와 특정 Class가 강하게 결합된다.