1 minute read

Java DAO,DTO,Repository

순서

  1. 모델객체 만들고

  2. 기능제공하는 레파지토리 만들고

  3. 화면에 뿌린다. (jsp)

    실습 목표

dto data transfer object

DAO 패키지는 database와 밀접하다.

product를 제공하고 별도로 뿌려주는 클래스를 만들자.

image-20220613105028528

일반적으로 ~Repository 자바 파일명을 설정해준다.

이 파일은 products의 데이터들을 받는다. 이때 어떤 데이터 구조로 받을 것인가?

List or ArrayList?

image-20220613110759474

List와 ArrayList

List

Types of Linked List - GeeksforGeeks

Next에 다음 데이터의 레퍼런스 저장. 주소를 가리킴.

항상 삽입과 삭제의 속도가 동일하다.

데이터를 삽입 했을 때, (내장함수에서) 전자 A와 C의 Node값을 지정해줘 링크연결을 한다.

B데이터를 삭제했을 때 전자의 넥스트에서 C데이터를 가리키도록 주소만 바꾸면 됨.

링크가 끊어진 B는 알아서 JVM이 삭제한다.

요약

삽입, 삭제가 빈번할 떄 항상 동일 성능. but ArrayList보다 검색이 느리다.

메모리 조금 더 많이 먹는다. (Node값 두개 지정)

동적배열(Array)

ArrayList는 일반적으로 배열(Array)와 같다고 볼 수 있다.

01-자료구조: 배열(Array)->정적배열(Static Array) : 네이버 블로그

Array에서 데이터를 추가했을 때, 그냥 뒤에 갖다 붙임.

Array에서 만약 0번 index 값을 삭제했을 때,

뒤의 1,2,3,4…가 모두 한칸 씩 이동.

만약 데이터가 1억개 이면 하나 삭제 했을 때 데이터의 복사 붙여넣기가 1억번 실행됨.

요약

크기가 커질수록 삽입, 삭제가 느려짐.

내부적으로 배열이라 성능이 일단 빠르다.

리스트(상위 개념) 구조에 포함되는 것들. 각각의 기능들이 있으므로 적재적소에 맞는 리스트를 쓰자.

image-20220613111012239

출처 : https://docs.oracle.com/javase/8/docs/api/java/util/List.html</a>

자료구조를 선택했다면, 예를 들어 sort 기능을 만들면

	public static List<Product> sort(List<Product> products) { //여기에 상위 개념인 List를 붙여주어 사용자들이 입맛에 맞게 변형하여 쓸 수 있도록,
		return new LinkedList<>();
	}


🔽만약 나는 List 에서 stack을 사용하고 싶어. 그러면 사용자가 Stack으로 형 변형을 해줄 수 있다.

sort(products);
		Stack stack = (Stack) sort(products2);

❓ 의문점

  1. List<product> products = new LinkedList<>();

    List<product> products = new ArrayList<>();

    여기서 앞에는 List, 뒤에는 LinkedList 어쩔때는 뒤가 ArrayList, 앞이 List.

    무슨 차이일까?






References

캡슐화 : https://www.geeksforgeeks.org/types-of-linked-list/

인스턴스 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=justkukaro&logNo=220396540585

Updated:

Leave a comment