본문 바로가기

Java

(14)
DTO, Domain(Entity) 1. DTO (Data Transfer Object) - 계층간(Layer) 데이터 교환을 위한 객체, 데이터 전송 객체 - Request, Response - DB에서 - 로직을 갖지 않는 순수한 데이터 객체, Getter/Setter 메서드만 가짐 - toEntity() 메서드를 통해서 DTO에서 필요한 부분을 이용하여 Entity로 만든다. * VO는 DTO와 동일한 개념이지만, Readonly의 속성을 가짐 ** VO는 특정한 비즈니스 값을 담는 객체이고, DTO는 Layer간의 통신 용도로 오고가는 객체를 말함 2. Domain / Entity - DB 테이블과 매칭되는 객체 - RDBMS를 객체화 시킨것이라고 생각 - Getter만 존재 (Setter X) - of() 일하다 든 질문사항 DT..
Checks failed: Couldn't check commit: Element: class com.intellij.psi.impl.compiled.ClsClassImpl #JAVA because: different providers: Git Commit 하는데 갑자기 발생한 Error 태어나서 처음 본 에러라 너무 당황스러웠다. Checks failed: Couldn't check commit: Element: class com.intellij.psi.impl.compiled.ClsClassImpl #JAVA because: different providers: com.intellij.psi.ClassFileViewProvider{vFile=jar://C:/Program Files/Java/jdk1.8.0_333/jre/lib/rt.jar!/java/lang/String.class, vFileId=163424, content=VirtualFileContent{size=18922}, eventSystemEnabled=true}(58dc..
spring / spring bean 등록하는 방법 2가지 _ 2 자바코드로 직접 스프링 빈 등록 project 안에 Config Class 생성 @Configuration : annotation 기반 환경설정을 돕는 곳 @Bean : Spring bean 등록 annotation @Configuration public class SpringConfig { @Bean public MemberService MemberService() { return new MemberService(MemberRepository()); //autowired }; @Bean public MemberRepository MemberRepository() { //MemberRepository 는 Interface이기 때문에 구현체인 MemoryMemberRepository를 return return new MemoryMembe..
spring / spring bean 등록하는 방법 2가지 _ 1 Component Scan(컴포넌트 스캔 및 자동 의존관계 설정) Spring Bean을 등록하는 방법에는 2가지가 있다. - component를 추가해서 spring이 알아서 찾도록 하는 방법과 - java code를 작성해서 spring아 등록해줘. 라고 이야기하는 방법 1. Component annotation ( 컴포넌트 스캔 및 자동 의존관계 설정) Spring이 뜰 때, Spring Container라는 통이 생김 이때 @Controller가 있으면 해당 객체를 생성해서 Container에 넣어서 관리 (= Spring Container에서 Spring Bean이 관리됨) 1) Component Scan @Controller, @Service, @Repository 등 Spring이 올라올때 Component Annotation이 있으면 Spring Cont..
spring / 회원 service test case 작성 (ifPresent, 지난번 repository를 만들어서 test 하는데 이어서 service를 만들어서 test case를 작성했다. service와 repository의 차이라고 하면 service: 비지니스에 의존해서 설계하기때문에 함수명도 비지니스스럽게 사용 repository : 단순히 기계적으로 개발스러운 용어를 많이 사용 service에서는 비지니스를 처리하는 부분으로 비지니스 처리하는 모든 로직이 들어간다고 생각하면 된다. 새로 배운것 1. Optional 객체를 통한 null체크 ifPresent memberRepository.findByName(member.getName()) .ifPresent(m -> { throw new IllegalStateException("이미 존재하는 회원입니다."); }); ..
Intellij / spring 단축키 정리 window 버전 ctrl +alert + v : 알아서 return 타입 및 변수 지정해줌 memberRepository.findByName(member.getName()); Optional result = memberRepository.findByName(member.getName()); shift + alert +ctrl + t : 자동으로 리팩토링 Extract Method 클릭 후 함수명 지정하면 따로 method로 해당 부분을 뺄 수 있다. memberRepository.findByName(member.getName()) .ifPresent(m -> { throw new IllegalStateException("이미 존재하는 회원입니다."); }); validateDuplicateMember(..
spring / 회원 repository test case 작성 domain은 DTO repository는 DAO 인듯 하다. domain에 Member라는 객체 생성(회원정보 - id, name) repository는 memberRepository를 interface로 만들어서 memoryMemberRepository가 implements 해서 사용 새로 배운것 1. Optional 객체 이러한 Optional 객체를 사용하면 예상치 못한 NullPointerException 예외를 제공되는 메소드로 간단히 회피할 수 있습니다. 즉, 복잡한 조건문 없이도 널(null) 값으로 인해 발생하는 예외를 처리할 수 있게 됩니다. (출처 | http://tcpschool.com/java/java_stream_optional) Optional.ofNullable(store.g..
spring / 웹 개발 기초 1. 정적 컨텐츠 - 파일 그대로 웹브라우저에 내려서 보여주는 것 ex. html (가공없이 html 파일 소스 그대로 반환됨) 2. MVC와 템플릿 엔진 (html로 내리냐) - html을 그냥주는게 아닌, 서버에서 동적으로 바꿔서(rendering) 내리는 것 ex. jsp, php - MVC : Model View(화면그리기) Controller (viewResolver가 해당 html을 찾고, Html을 변환 후, 웹브라우저로 나타냄. 변환을 하고 안하고가 정적 컨텐츠와의 큰 차이) 3. API (data로 바로 내리냐) - 클라이언트랑 개발 시 서버에서 json 데이터 포맷으로 데이터 전달 - vue.js react 사용시 - 서버끼리 통신 시 (html 파일 아닌, 데이터 전달) @Respon..