일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Resource #
- Java#컴파일러#자바컴파일러#
- Java#java#메모리영역#클래스로더#가비지컬렉터
- java
- Java#JAVA#매개변수
- Java#정처기#비트연산자#정보처리기사
- 항해99 #항해플러스 #주니어개발자 #주니어개발자역량강화 #주니어개발자멘토링 #개발자사이드프로젝트 #코딩부트캠프 #코딩부트캠프후기
- 개발자도서#개발자책#도메인#DDD#도메인주도개발시작하기#개발스터디#
- #java#JAVA#프로그래밍#웹개발자
- Spring#spring#스프링#스프링프레임워크#스프링자동주입#스프링생성자#스프링기본#국비지원#국비교육#국비지원스프링
- 자바#Java#배열예시#연습#기초다지기
- 쿼리스트링#쿼리문자열#바인딩
- 국비지원JAVA#국비지원자바#프로그랭#JSP#국비지원JSP#국비교육JSP#웹개발자#코딩
- Java#java#자바#다오#디티오#브이오#dao#dto#vo
- 국비지원#국비교육
- 국비지원JAVA
- 자바
- 국비지원JAVA#국비교육JAVA#국비지원자바#국비교육자바#JSP#SERVLET#서블릿#
- Spring#spring#스프링#스프링프레임워크#스프링의존성주입#스프링생성자#스프링기본#국비지원#국비교육#국비지원스프링
- spring#Spring#RequestBody#ResponseBody
- html#HTML#프론트엔드#개발자#코딩#국비지원#국비교육#국비지원프론트엔드#국비지원HTML#국비지원html#국비프론트엔드
- 항해플러스#항해#항해플러스3기#회고
- 프로그래밍
- 국비지원자바#국비교육자바#국비지원java#국비교육java#자바스크립트#프론트엔드
- #
- 국비지원#국비교육#국비지원자바#국비교육자바#css#HTML#JAVA
- IntelliJ#인텔리제이#인텔리#단축키
- tibero#티베로#이중화#failvover
- 레스트컨트롤러
- 개발자#it도서#도메인#DDD#ddd
Archives
- Today
- Total
개린이 개발노트
[Java] DAO, DTO, VO 공부하기!!! 본문
728x90
1. DAO (Data Access Object)
DAO는 Data Access Object의 약자로, DB의 데이터에 접근하기 위한 객체를 가리킨다. DB에 접근하기 위한 로직을 분리하기 위해 사용한다. 직접 DB에 접근하여 data를 삽입, 삭제, 조회 등 조작할 수 있는 기능을 수행한다.
MVC 패턴의 Model에서 이러한 일을 수행한다.
- 예시
@Repository
public class UserDao {
private JdbcTemplate jdbcTemplate;
@Autowired
public void setDataSource(DataSource dataSource){
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
public long createUser(PostUserReq postUserReq){
String createUserQuery = "INSERT INTO Users(email, profilePicUrl, name, password)\n" +
"VALUES\n" +
" (?, ?, ?, ?);";
Object[] createUserQueryParams = new Object[]{postUserReq.getEmail(), postUserReq.getProfilePicUrl(),
postUserReq.getName(), postUserReq.getPassword()};
// 데이터 삽입 쿼리
this.jdbcTemplate.update(createUserQuery, createUserQueryParams);
String getNewUserIdQuery = "SELECT LAST_INSERT_ID();";
return this.jdbcTemplate.queryForObject(getNewUserIdQuery, long.class);
}
}
2. DTO (Data Transfer Object)
DTO는 Data Transfer Object의 약자로, 계층 간(Controlelr, View, Business Layer) 데이터 교환을 위한 Java Bean를 의미한다. DTO는 로직을 가지지 않는 데이터 객체이고, getter, setter 메소드만 가진 클래스를 의미한다.
- 예시
@Getter
@Setter
public class GetUserRes {
private long userId;
private String userName;
private String email;
private String password;
}
3. VO (Value Object)
VO는 Value Object의 약자로, Read-Only 속성을 가진 값 오브젝트이다. 자바에서 단순히 값 타입을 표현하기 위하여 불변 클래스(Read-Only)를 만들어 사용한다. 따라서 getter기능만 존재한다.
- 예시
@Getter
public enum BaseResponseStatus {
SUCCESS(true, 1000, "요청에 성공하였습니다."),
REQUEST_ERROR(false, 2000, "입력값을 확인해주세요."),
RESPONSE_ERROR(false, 3000, "값을 불러오는데 실패하였습니다."),
DATABASE_ERROR(false, 4000, "데이터베이스 연결에 실패하였습니다.");
private final boolean isSuccess;
private final int code;
private final String message;
private BaseResponseStatus(boolean isSuccess, int code, String message) {
this.isSuccess = isSuccess;
this.code = code;
this.message = message;
}
}
위 코드는 BaseResponseStatus라는 enum으로 요청의 상태를 저장한 enum이다. 즉, 값은 고정되어 있고 불변하는 클래스이다.
❓ DTO vs VO
- DTO는 가변의 성격을 가진 클래스이며 데이터 전송을 위해 존재한다. 따라서 getter와 setter 기능을 모두 가지고 있다.
- 그에 반해, VO는 값 그 자체의 의미를 가진 불변 클래스(Read-Only)를 의미한다. 따라서 getter 기능만 존재한다.
→ DTO는 인스턴스 개념이라면, VO는 리터럴 개념으로 이해하면 편하다.
참조-
https://velog.io/@leesomyoung/Java-DAO-DTO-VO%EC%9D%98-%EA%B0%9C%EB%85%90
728x90
'자바Java' 카테고리의 다른 글
Java 자바 배열 연습 (0) | 2023.11.24 |
---|---|
Java 정처기에 자주 나오는 자바 비트 연산자 (1) | 2023.11.23 |
Java (public, static, void , 매개변수 이해하기) (0) | 2023.11.22 |
Java 메모리영역, 클래스로더, 가비지 컬렉터 (0) | 2023.11.22 |
Java 컴파일러란? (1) | 2023.11.22 |