tuter77

2022.12.27 TIL 본문

TIL

2022.12.27 TIL

tuter77 2022. 12. 27. 14:40

<Java>

 

● 싱글톤 패턴

- 프로그램에서 인스턴스가 단 한 개만 생성되어야 하는 경우 사용하는 디자인패턴

- static 변수, 메서드를 활용하여 구현할 수 있음.

 

▷ 예시

 

public class Company {

private static Company instance = new Company();

 

private Company() {

 

}

 

public static Company getInstance() { //일반메서드로 선언하면 이 메소드를 호출하기 위해 인스턴스를 새로 하나 만들어야 해서 static으로 선언.

if(instance == null) { //방어적인 코드

instance = new Company();

}

return instance;

 

}

 

}

 

위 예시처럼 회사와 같이 하나의 인스턴스만 존재해야하는 경우 활용하는 패턴이다. 

 

public class CompanyTest {

public static void main(String[] args) {

Company company1 = Company.getInstance();

Company company2 = Company.getInstance();

 

System.out.println(company1);

System.out.println(company2);

 

Calendar calendar = Calendar.getInstance();

 

System.out.println(calendar);

}

이 처럼 테스트클래스 파일에서도, 새로 인스턴스를 생성하지 않고 getInstance 메서드를 호출하여 사용할 수 있다.

 

● 배열

 

▷ 배열의 정의

- 동일한 자료형의 순차적 자료구조로 인덱스 연산자[] 를 이용하여 빠른 참조가 가능하다.

- 물리적 위치와 논리적 위치가 동일하며, 순서는 0부터 시작한다.(끝은 n개의 배열에서 n-1)

- 자바에서는 객체 배열을 구현한 Arraylist를 많이 활용한다.

 

▷ 배열선언하기

int[] arr1 = new int [10];

int arr2[] = new int [10];

 

오늘은 spring 그룹스터디에 골머리를 싸매느라 공부가 잘 되지않았다.. 처음 해보는 무작정 게시판 만들기에서, delete 기능을 구현하는게 다였는데, 제대로 된건지 모르겠다.

 

<Spring>

 

아래는 직접 만든 게시판 기능구현 코드다.

 

▷ MainController

@GetMapping("/delete/{id}") //송영진
public ResponseEntity<Boolean> getDelete(@RequestParam Long id){
          return ResponseEntity.ok(boardService.deleteBoard(id));
  }

getmapping 메서드를 사용하여, Long으로 된 id 값을 파라미터로 받아,  getdelete 메서드를 적용시켜주는 코드다.

boardservice의 deleteboard(id) 메서드에는 boolean 값이 반환된다고하는데.. 정확히 이해가 가지 않았다.

 

▷ BoardServicelmpl

@Override
public boolean deleteBoard(Long boardRequestDTO) {
    boardRepository.deleteById(boardRequestDTO.longValue());
    return false;
}

내가 이해하기로는 이 파일에서 deleteBoard 메서드가 정의되고, false값을 반환 하는 것으로 보아, id값이 사라지는 형태를하고 있는 것 처럼 보인다. 

위 deleteById 메서드로 mainContoroller에서 입력받은 id값과 같은 값을 DB에서 찾아내고, false값을 반환해 해당 data를 사용하지 않겠다는 것으로 이해했다.

 

▷ BoardService

public boolean deleteBoard(Long boardRequestDTO);
//TODO: 영진

 

 

인텔리제이에서 springboot로 만들어 보았는데, 코드를 편이하게 변환시켜주는 롬복 부터 난관이었다. 

JPA는 어찌저찌 대충 이해하고 넘어간다고 해도, 코드가 롬복으로 바뀌니 자바도 익숙지 않은 내가 구현하기에 힘든부분이 많았다.

(Jdql 이 코드를 더 보기 좋게 바꿔주는것이 오히려 독이되었다..)

 

이 구문으로 연동된 Swagger 테스트 API에 구동하자, 

 

 이와 같은 결과가 나왔다. 

 

DB내에 해당 id값이 없어서 에러가 나는 건지는 내일 스터디 조원들에게 물어보며 알아봐야겠다.

 

 

 

'TIL' 카테고리의 다른 글

2022.12.29 TIL  (0) 2022.12.29
2022.12.28 TIL  (0) 2022.12.28
2022.12.26 TIL  (0) 2022.12.26
2022.12.23 TIL  (0) 2022.12.23
2022.12.22 TIL  (0) 2022.12.22