본문 바로가기

두두의 IT

(172)
DAO, DTO, VO 차이 DAO (Data Access Object) DataBase의 data에 접근하기 위한 객체로, 데이터 삽입, 삭제, 조회 등 조작할 수 있는 기능을 수행함 DataBase 접근 로직과 비지니스 로직을 분리하기 위해 사용함 DB와 연결할 Connection 까지 설정되어 있는 경우가 많음 현재 많이 쓰이는 Mybatis 등을 사용할 경우 커넥션풀까지 제공되고 있기 때문에 DAO를 별도로 만드는 경우는 드뭄 DTO (Data Transfer Object) 계층 간(Controller, View, Business, Persistent Layer, DataBase) 데이터 교환을 하기 위해 사용하는 객체(Java Beans) 로직을 가지지 않는 순수한 데이터 객체 (getter & setter 메소드만 가진 ..
NodeJS Javascript는 브라우저에 내장되어 있다. NodeJS가 하는 일 - JS를 브라우저 밖으로 가지고 나와서 유저가 사용할 수 있게 함. 브라우저 밖에서 유저의 컴퓨터에서 돌아가게끔.. 브라우저 밖의 Javascript. Javascript를 쓰기 위해 브라우저를 사용하지 않아도 된다. ex) 로컬 PC에서 브라우저와 동일한 명령어를 다룰 수 있음 - Javascript를 이용해서 파일 시스템을 다룰 수 있다. ex) 서버 만들기, Web Scrapper 만들기, 웹페이지에 접속해서 정보들 수집하기, 모바일 앱 만들기, electron 어플 만들기, Next JS Typescript 프레임워크 Node.js 백엔드를 만들기 위한 프레임워크 NodeJS에는 규칙이 없다. 자유로워서 좋지만 스스로 구조를..
JUnit5 @BeforeAll(), @AfterAll()을 쓸 때는 static이 필요함 JUnit4부터는 public을 생략해도 됨
[DB] 정규화 https://spurious-heath-8ab.notion.site/1b287e97b7054d1697bab2491f241d70 정규화 이상현상(Anomaly) spurious-heath-8ab.notion.site 데이터 이상현상(Anomaly)란 무엇이며 어떤 것들이 있나요? 데이터의 중복으로 인해 릴레이션을 조작할 때 발생하는 비합리적 현상 갱신이상, 삭제이상, 삽입이상 정규화의 개념과 목적에 대해서 설명해 보세요 이상현상을 발생시키는 속성간의 종속성, 중복성을 제거하고 무결성을 보장하기 위해 릴렝션을 분해하는 과정 데이터의 중복 최소화 이상현상 발생 방지 : 데이터 구조의 안정성 유지 종속성 제거 2차 정규화에 대해서 설명해 보세요 부분함수 종속성 제거 - 1차 정규화를 만족하고 Relation의..
조회 빈이 2개 이상일 때 조회 대상 빈이 2개 이상일 때 해결 방법 1. @Autowired 필드명 매칭 먼저 타입 매칭을 시도하고 그 결과에 여러 빈이 있을 때 추가로 동작함 타입 매칭의 결과가 2개 이상일 때 필드명으로 빈 이름 매칭 2. @Qualifier -> @Qualifier끼리 매칭 -> 빈 이름 매칭 추가 구분자를 붙여주는 방법 주입시 추가적인 방법을 제공하는 것이지 빈 이름을 변경하는 것은 아니다 생성자/수정자에 @Qualifier 넣어주기 Qualifier는 Qualifier를 찾는 용도로만 사용하는게 명확하고 좋다. 3. @Primary 사용 @Autowired 시에 여러 번 매칭되면 @Primary가 우선권을 갖는다. 코드에서 자주 사용하는 메인 데이터베이스의 커넥션을 획득하는 스프링 빈이 있고, 코드에서 ..
lombok 설정 1. build.gradle dependencies { //lombok 라이브러리 추가 시작 compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' } 2. IntelliJ 메뉴 > Preferences > Plugins > lombok 설치 3. IntelliJ 메뉴 > Preferences > Build, Execution, Deployment > Compiler > Annotation Processors > Enable annota..
의존관계 자동 주입 의존관계 주입 방법 생성자 주입 생성자 호출 시점에 딱 1번만 호출되는 것이 보장됨 "불변, 필수" 의존관계에 사용 생성자가 딱 1개만 있으면 @Autowired를 생략해도 자동 주입 된다. (스프링 빈에만 해당함) 자주 사용 수정자 주입(setter) setter라 불리는 필드의 값을 변경하는 수정자 메서드를 통해서 의존관계 주입 "선택, 변경" 가능성이 있는 의존관계에 사용 자바빈 프로퍼티 규약의 수정자 메서드 방식을 사용하는 방법 필드 주입 코드가 간결해서 많은 개발자들을 유혹하지만 외부에서 변경이 불가능해서 테스트하기 힘들다는 치명적 단점이 있음 DI 프레임워크가 없으면 아무것도 할 수 없다. 사용하지 말자 (테스트코드, @Configuration 가능) 일반 메서드 주입 한번에 여러 필드를 주입..
컴포넌트 스캔 스프링 빈 등록 방법 1. XML 2. @Bean 3. @ComponentScan, @Component, @Autowired(생성자에서 여러 의존관계도 한 번에 주입 가능) 컴포넌트 스캔은 @Component 뿐만 아니라 다음 내용도 추가로 포함됨 @Component : 컴포넌트 스캔에서 사용 @Controller : 스프링 MVC 컨트롤러에서 사용. 스프링 MVC 컨트롤러로 인식 @Service : 스프링 비즈니스 로직에서 사용 @Repository : 스프링 데이터 접근 계층에서 사용. 스프링 데이터 접근 계층으로 인식하고, 데이터 계층의 예외를 스프링 예외로 변환해준다. @Configuration : 스프링 설정 정보에서 사용. 스프링 설정 정보로 인식하고 스프링 빈이 싱글톤을 유지하도록 추가 처리..

LIST