1. HTTP 개관 웹 클라이언트와 서버 웹 서버는 웹 콘텐츠를 저장하고 있다. HTTP 프로토콜로 의사소통하기 때문에 HTTP 서버라고 한다. 웹 클라이언트로부터 HTTP 요청을 받으며, HTTP 응답을 돌려보내준다. 리소스 웹 서버는 웹 리소스를 관리하고 제공한다. (웹 콘텐츠와 같은 여러 정적, 동적 콘텐츠) 미디어 타입 수천 가지의 데이터 타입이 있기 때문에 , 이를 위해 HTTP는 객체 각각에 데이터 포맷 라벨을 붙인다. MIME(Multipurpose Internet Mail Extensions) → 다목적 인터넷 메일 확장 기존에는 전자 메일 시스템 때문에 발명됨, 확장이 되어 HTTP 멀티미디어 콘텐츠에도 사용된다. MIME 타입은 / 으로 구분되어 주 타입, 부 타입으로 이루어진 문자열 ..
YAML(YAML Ain't Markup Language)은 무엇을 의미할까요? 재귀적인 유머를 가진 이 단어는 사람이 쉽게 읽을 수 있는 데이터 직렬화 양식입니다. .yml, .yaml 확장자를 가지며 들여쓰기를 통한 계층 구조를 가짐으로써 사람이 읽기 좋은, 사람이 편한 설정 파일입니다. yaml 파일과 다른 설정 파일의 비교를 통해 편리함을 강조해보자면 application.properties -> 스프링부트가 애플리케이션을 구동할 때 자동으로 로딩하는 파일 -> key - value 형식으로 값을 정의하면 애플리케이션에서 참조하여 사용 가능 environments.dev.url=https://dev.example.com environments.dev.name=Developer Setup envir..
도서관 관리 프로그램 과제에 대한 코드 리뷰를 받았는데 아래의 코드에 멘토님께서 이런 말씀을 해주셨습니다. 디미터의 법칙을 듣고 "SOLID와 같은 객체지향적인 코드를 위한 또다른 방법인가?" 라고 생각했었는데 알아보니 디미터의 법칙은 다른 객체가 어떠한 자료를 갖고 있는지 속사정을 몰라야 한다 라는 의미입니다. 이해 하기 쉽게 여러 개의 .(도트)를 사용하지 말자 라고 말하기도 합니다. 한 번 코드로 예시를 들어보겠습니다. 아래는 과제에서 사용한 Book 객체와 Repository 클래스의 findByTitleContaining 메서드입니다. @Getter public class Book { private int id; private String title; private String author; p..
지원 계기와 데브코스인 이유 일단 저의 경우 자바/스프링으로 협업해본 프로젝트 경험이 없습니다. (전공자 맞나) 프로젝트나 어떤 활동을 할 때에는 그것을 위한 지식이 충분해야 참여할 수 있다는 생각때문에, 프로젝트 참여에 있어 지레 겁을 먹어 참여하지 않았던 것 같습니다. 그렇기에 저에게는 프로젝트 경험이 필요했고, 데브코스가 이 경험을 채울 수 있는 기회라고 생각하여 지원하였습니다. 프로그래머스의 데브코스를 선택한 이유는 크게는 아래의 3가지 이유때문입니다. 선발 절차가 존재하는 부트캠프 ( 지원하는 모든 사람을 그냥 받지 않는다 ) 소수의 인원과 온라인으로 진행되는 커리큘럼 클라우드를 접해볼 수 있는 기회 ( 접해본 적이 없기에 ) 5기 선발 기준으로 선발 과정은 지원서 작성 -> 코딩 테스트 -> ..
스프링 트랜잭션 추상화 서로 다른 데이터 접근 기술들은 트랜잭션을 처리하는 방식의 차이가 있다. JDBC 트랜잭션 public void accountTransfer(String fromId, String toId, int money) throws SQLException { Connection con = dataSource.getConnection(); try { con.setAutoCommit(false); //트랜잭션 시작 //비즈니스 로직 bizLogic(con, fromId, toId, money); con.commit(); //성공시 커밋 } catch (Exception e) { con.rollback(); //실패시 롤백 throw new IllegalStateException(e); } fi..
여기서의 포스팅은 맛보기 수육 Spring Data의 등장 관계형 데이터베이스 중심의 세상에서 여러 데이터 관련 신흥 세력(기술)들이 등장 기술이 다른 것이지, "데이터"를 보관하고 관리한다는 부분에 있어 공통점이 있는 것을 발견 동일 인터페이스 기반, 페이징 처리 등 추상화를 통해 공통으로 기술을 제공할 수 있게 된다. 공통 기능 제공 - https://spring.io/projects/spring-data Spring Data Spring Data’s mission is to provide a familiar and consistent, Spring-based programming model for data access while still retaining the special traits of t..
맛보기 수육 JPA(Java Persistence API) - 자바 진영에서 ORM 기술 표준으로 사용되는 인터페이스의 모음이다. ORM(Object-Relational Mapping) - Class와 RDB(Relational DataBase)의 테이블을 매핑(연결)한다는 뜻 JPA가 SQL Mapper(JdbcTemplate, MyBatis)보다 좋은 점 SQL을 작성하지 않고 DB를 조작할 수 있다. 유지보수 측면에서 도움이 된다. ( 쿼리를 새로 작성하지 않음, 매핑 정보가 Class ) -> 추후 강의(JPA강의)에서 더욱 자세하게 정리 ORM의 존재 의의 - SQL 중심적인 개발의 문제점 RDB에 접근하기 위한 언어는 SQL, 우리는 CRUD를 무한 반복하며 쿼리를 작성한다. 매핑 작업을 할수..
이번에 정보처리기사 시험에 합격하였습니다. 컴퓨터공학 전공 과목을 총 출동시켜 시험을 보는 과정이라 생각했습니다. 네트워크, 데이터베이스, 프로그래밍, 소프트웨어 공학 등등.. 공부했던 과목들이 모두 포함되어 있었습니다. 학교 공부 복습하는 겸, 그리고 남들 다 따는 것 나도 따야지 라는 마음으로 응시했던 것 같습니다. 필기는 cbt형식으로 진행됩니다. 그렇기에 어려운 부분은 없고, 기출만 3개년치(개정 이후) 돌린 후에 응시하여 합격했습니다. 실기가 어려운 부분이라 생각합니다. 서술형, 단답형, 프로그래밍 문제가 출제되는데, 이를 풀기 위해선 자세히 알아야 하기 때문입니다. 그래도 다행인 부분은 최근 서술형 문제가 줄어들고 있고, 프로그래밍 문제가 많이 출제되고 있습니다. 만일 시험에 대비하시는 분들이..
MyBatis의 특징, 언제 사용해야 하는지 JdbcTemplate보다 더 많은 기능을 제공하는 SQL Mapper SQL을 XML에 편리하게 작성할 수 있다. ( 자바 코드에서 사용하지 않아 혼동하지 않을 수 있음 ) 동적 쿼리를 편안하게 작성할 수 있다. // 자바에서 동적 쿼리 String sql = "select id, item_name, price, quantity from item"; //동적 쿼리 if (StringUtils.hasText(itemName) || maxPrice != null) { sql += " where"; } boolean andFlag = false; if (StringUtils.hasText(itemName)) { sql += " item_name like conca..
DTO(Data Transfer Object) - 데이터 전송 객체 기능은 없고, 데이터를 전달하는 용도로 사용하는 객체 용도를 명확하게 하기 위해 접미어로 사용하자 JdbcTemplate spring-jdbc 라이브러리에 포함, 스프링을 사용한다면 별도의 설정 없이 사용할 수 있다. 템플릿 콜백 패턴을 사용해서, 대부분의 반복 작업을 대신 처리해준다. SQL을 작성하여 파라미터를 설정하면 사용할 수 있다. ( ? 대신 : name 사용 가능 ) 동적 쿼리 문제를 해결하지 못한다. 파라미터 전달 방법 1. Map 사용 2. MapSqlParameterSource(SqlParameterSource의 구현체) 메서드 체인을 통해 편리하기 Sql 타입을 지정할 수 있다. 3. BeanPropertySqlPar..