-
명명 규칙
-
웹사이트 주소를 반대로 기재한 모양으로 패키지 이름 부여
-
소문자 사용 (대문자는 사용 가능하나, 사용하지 않는 것이 좋음)
-
점( . ) 으로 구분
-
-
dao
-
Data Access Object 의 약자로 데이터베이스의 data에 접근하기 위한 객체입니다.
-
DataBase 접근을 하기 위한 로직과 비지니스 로직을 분리하기 위해 사용합니다.
-
DAO의 경우는 DB와 연결할 Connection 까지 설정되어 있는 경우가 많습니다.
-
그래서 현재 많이 쓰이는 Mybatis 등을 사용할 경우 커넥션풀까지 제공되고 있기 때문에 DAO를 별도로 만드는 경우는 드뭅니다.
-
-
dto
-
DTO(Data Transfer Object) 는 계층간 데이터 교환을 위한 자바빈즈를 의미합니다.
-
여기서 말하는 계층간의 의미는 Controller, View, Business Layer, Persistent Layer 등을 말하며 각 계층간 데이터 교환을 위한 객체를 의미합니다.
-
DTO는 로직을 가지지 않는 순수한 데이터 객체이고 getter, setter 메소드만 가진 클래스를 의미합니다.
-
자바에서 프로퍼티라는 개념을 사용하기 위해 지켜야 할 약속이 있습니다.
-
setter/getter 에서 set과 get 이후에 나오는 단어가 property라고 약속하는 것입니다.
-
즉 멤버변수는 아무렇게 지어도 영향이 없고 getter/setter 로 프로퍼티(데이터)를 표현한다는 것이다.
-
-
-
vo
-
VO(Value Object) 는 DTO와 혼용해서 쓰이긴 하지만 미묘한 차이가 있습니다.
-
VO는 값 오브젝트로써 값을 위해 쓰입니다. 자바는 값 타입을 표현하기 위해 불변 클래스를 만들어서 사용하는데, 불변이라는 것은 readOnly 특징을 가집니다.
-
DTO와 VO의 공통점은 넣어진 데이터를 getter를 통해 사용하므로 주 목적은 같습니다. 그러나 DTO의 경우는 가변의 성격을 가진 클래스 입니다(setter 활용). 그에반해 VO는 불변의 성격을 가졌기에 차이점이 있습니다.
-
-
jar
-
Java ARchive
-
하나의 Application 기능이 가능하도록 java 파일을 압축하고 지원
-
엔터프라이즈 Java Bean(클래스 파일)과 EJB 전개 디스크립터를 포함한 EJB 모듈은 .jar 확장을 사용하여 JAR 파일로 압축
-
실행 조건 : Java 설치
-
-
war
-
Web ARchive
-
Web Application을 지원하기 위한 압축 방식
-
서블릿 클래스 파일, JSP 파일, 지원 파일, GIF 및 HTML 파일을 포함하는 웹 모듈은 확장자가 .war (웹 아카이브)인 JAR 파일로 패키지, jsp, servlet, gif, html, jar 등을 지원함
-
단독으로 실행은 불가하며 서버 컨테이너(was)에 의해 실행되어야 하므로 배포디스크립터(web.xml)가 담겨있음
-
실행 조건 : Java EE Web Profile 호환 응용 프로그램 서버 필요
-
내부 조건 : WEB-INF 폴더에 포함된 web.xml 파일 필요
-
-
maven Lifcycle -> package
-
target 디렉토리에 jar 파일 생성
-
프로그램
-
파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태를 말한다.
-
아직 실행되지 않은, 실행 가능한 파일
-
-
프로세스
-
운영체제로부터 자원을 할당받은 작업의 단위.
-
실행되고 있는 프로그램
-
-
쓰레드
- 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위.
-
프로세스 vs 쓰레드
-
프로세스는 실행될 때 (메모리에 올라갈 때) 운영체제로부터 시스템 자원을 할당받는다.
-
운영체제는 프로세스마다 각각 독립된 메모리 영역을, Code/Data/Stack/Heap의 형식으로 할당해 준다.
-
각각 독립된 메모리 영역을 할당해 주기 때문에 프로세스는 다른 프로세스의 변수나 자료에 접근할 수 없다.
-
이와 다르게 스레드는 메모리를 서로 공유할 수 있다.
-
프로세스가 할당받은 메모리 영역 내에서 Stack 형식으로 할당된 메모리 영역은 따로 할당받고, 나머지 Code/Data/Heap 형식으로 할당된 메모리 영역을 공유한다.
-
따라서 각각의 스레드는 별도의 스택을 가지고 있지만 힙 메모리는 서로 읽고 쓸 수 있게 된다.
-
-
하는 것 doing
-
객체를 생성하거나 계산을 하는 등 스스로 하는 것
-
다른 객체의 행동을 시작시키는 것
-
다른 객체의 활동을 제어하고 조절하는 것
-
-
아는 것 knowing
-
개인적인 정보에 대해 아는 것
-
관련된 객체에 대해 아는 것
-
자신이 유도하거나 계산할 수 있는 것에 대해 아는 것
-
-
@MockBean
- 해당 빈의 껍데기만 가져오는 것으로, 모든 method가 동작하지 않게 된다.
- 따라서, method가 리턴하기 원하는 값으로 설정해줘야 한다.
-
@SpyBean
- 일단 모든 method가 원래대로 잘 동작 한다.
- 하지만 MockBean과 같이, method의 리턴 값도 설정할 수 있다.
-
예외 클래스를 따로 만들고, 하나의 try 내에서 모두 실행, 여러 catch 문에서 처리
-
추상 클래스 지양, 인터페이스로만 구현
-
restTemplate 사용
-
모든 객체는 하나의 역할만 수행하므로, 하나의 인터페이스만으로 처리
-
모든 네이밍은 self-descriptive 하게, 명확하게