[Java] 자바 #19, workspace, project, package, class
- 프로그래밍 언어/Java
- 2019. 2. 15. 00:07
오늘은 이클립스를 사용하는데 있어서 기본적인 파일/폴더 구조를 설명해드리고자 합니다.
이클립스는 workspace라는 작업공간, 즉 폴더를 두어 프로젝트들을 관리합니다.
프로젝트 안에는 여러 패키지가 존재하고, 패키지들은 여러가지 클래스들을 모아놓은 집합과 같은 것들 입니다.
자세하게 살펴보겠습니다.
Workspace
- 워크스페이스는 이클립스를 실행할 때 다음과 같은 화면을 보셨을 것입니다.
Workspace라는 공간을 지정해주는 창으로. 이미 workspace로 잡혀있는 폴더나 새 폴더를 지정하면 그 폴더는 워크스페이스로 태어나게 됩니다. 워크스페이스로 지정이되면
- metadata
- recommenders
폴더가 생성이 됩니다. 복잡한 내용은 각설하고 간단히 이야기하자면, 이 폴더는 워크스페이스라는 표식을 남기는 폴더로서 이클립스가 해당 폴더를 워크스페이스로 이용하는 것에 대해 준비를 해두는 폴더로써 안에는 여러가지 파일이 들어 있습니다. 이 폴더들을 통해 워크스페이스가 운용됩니다.
Project
프로젝트는 워크스페이스에 생성하는 프로그램의 기초가 되는 단위입니다. 보통 프로그램이란 하나 이상의 프로젝트로 구성이 됩니다. 초급 수준에서는 그냥 "1개의 프로젝트는 1개의 프로그램이다" 라고 말해도 적당할 것 같습니다. 보통은 워크스페이스의 성격에 따라 관련있는 프로젝트들을 두어 관리하며, 이는 패키지에서 더 심화하여 나타날것입니다.
Package
패키지는 클래스를 모아두는 바구니로써 사실상 폴더의 기능과 그다지 다르지 않습니다. Class 뿐만 아니라 웹개발에서는 xml을 이용한 Spring mybatis 기능을 패키지로 관리하여 개발합니다. 이러한 패키지명은 통상적으로 다음과 같이 명명합니다.
프로젝트명.중간관리명.세부관리명
실제 물리적으로 프로젝트명 패키지 폴더안에 중관관리명 폴더가 있고 그 안에 세부관리명 폴더가 존재합니다.
자바를 이용해서 어플리케이션을 런칭할때 이러한 패키지 구조를 따르지 않으면 런칭을 시켜주지 않는다고도 하니 꼭 프로젝트를 진행하실 때 이러한 구조로 습관을 들이는 것이 중요해 보입니다.^^
Class
클래스는 지난 포스팅에서 언급했드시 1개의 자바파일당 1개의 클래스만을 선언해야 좋은 구조라고 할 수 있습니다. public 키워드를 가진 클래스만이 파일명과 같아야 합니다. 클래스의 종류로는 여러가지가 있지만 대표적으로 DTO, DAO, Service 세가지가 있습니다. 이는 웹개발에서의 Class 구조이나 (필자가 웹개발자이므로) 초급자가 콘솔환경에서 프로젝트를 진행할 때도 주로 사용되는 Class 구조이므로 들어 두시면 좋을 것 같습니다.
DTO(Data Transfer Object)
데이터 클래스를 의미합니다. 예를 들면, 학생 성적같은 것이겠네요. 학생성적관리 프로그램으로 예를 들면, 말그대로 학생 성적 데이터들 입니다. 누구는 100점 누구는 50점과 같은 데이터 그 자체입니다. 다른 행위는 하지않고 정보의 전달 기능만을 합니다.
DAO(Data Access Object)
데이터를 담고있는 클래스는 DTO지만 사실 데이터가 들어있는 클래스란 것은 없습니다. 데이터는 DB에 저장되어있을 뿐, 이를 전송하는 매체가 DTO일 뿐입니다. 그럼 DTO에 넣어줄 정보를 가져오는 역할은 누가할까요? 여기는 DAO 설명 구간입니다. 당연히 DAO입니다. DAO에서는 데이터베이스와의 연동을 목적으로하는 기능만을 수행하고 그 외의 기능은 대부분 Service 클래스에서 맡아서 처리합니다.
Service
DAO가 가져온 데이터를 가공하고 처리하는 클래스입니다. 학생명 데이터를 출력하거나 50이라는 점수데이터에 "점"이라는 문자열을 붙여서 출력을 하거나 등 DAO에서 가져온 데이터를 User에게 보여주기위한 단계를 제공하는 서비스 클래스입니다.
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] 자바 #21, 상속(Inheritance) (0) | 2019.02.17 |
---|---|
[Java] 자바 #20, 생성자와 Getter,Setter 메소드 (2) | 2019.02.16 |
[Java] 자바 #18, 정적 멤버 static (정적 키워드) (1) | 2019.02.13 |
[Java] 자바 #17, 클래스(Class)와 접근제한자. (0) | 2019.02.11 |
[Java] 자바 # 16, Array(배열) [feat.향상된 for문] (0) | 2019.02.11 |