2017. 8. 9 - pobi

2017.8.9 - 포비 강의

수업 시작 전 이야기

현재 클래스에 수준 차이가 있다.
그래서 다음주부터 클래스를 두개로 나누어서 수업을 진행.
다음주부터 월래 4주차부터 계획된 자바 수업을 한다.
수업은 메소드를 나누는것, 클래스를 나누는 것, 테스트를 하면서 프로그래밍을 하는 것 정도로 생각하고 있다.
각 클래스의 목표를 다르게 해서 수업을 진행할 것이다. (요구사항을 다르게.)
일단 진행하고 조금 힘들면 피드백을 해서 바꾸는 것으로 한다.

데이터베이스(DataBase)

DB에서 기본적으로 알아야하는 것들.

  • Primary Key Column : 데이터들을 하나 하나 식별할 수 있는 키
  • foreign key(fk) : 테이블이 여러개 존재하고 데이터들이 각 테이블에 존재할때 서로 데이터를 참조하게 하는 데이터들 공통된 데이터들을 서로가 참조하게 해줄 수 있음.???
  • 쿼리 또는 SQL : 데이터를 찾을때나 처리할때 필요한 언어.
  • 생활코딩 MySQL강의를 참조하면 좋다.

  • 프로그래밍을 할때 ER다이어그램을 생각하고 프로그래밍을 해야하나?
    • 객체지향을 프로그램이 할때도 클래스 다이어그램을 그리고 시작하는게 좋다.
    • 나중에 보면 테이블구조와 클래스구조가 달라야하는데 똑같다고 생각하면 잘못됫다고 생각해야한다.

ORM(Object Relationship Mapping)

해외에서는 ORM프레임워크를 자주 사용한다. 하지만 우리나라에서는 Mybatis를 많이 사용한다. 이유는 새로운 것을 배우기 귀찮기도 하지만 이미 구축되어있는 시스템이 있고 학습비용이 매우 낮아서 회사 입장에서는 빠르게 배울 수 있는것을 배우게하여 사용하는게 비용면에서 좋아서 현업에서 자주 사용되는 것같다.
ORM은 학습비용은 높지만 한번 배워두면 생산성에 매우 높다.

JPA

ORM을 쉽게 사용할 수 있게하는 도구

  public interface CrudRepository<T, ID extends Serializable> extends Repository<T, ID> {
      ...
  }

T와 ID를 지정하는 이유는 리턴 타입과 매개인자의 타입을 강제하기 위해서 이다.

JPA를 사용하는 이유는 로직을 만드는데 시간을 써야하는데 쿼리를 만드는데 많은 시간을 쏟는 것은 시간낭비이기 때문이다. 쿼리를 짜는 시간에 리펙토링, 테스트 코드, 객체지향에 힘을 쏟는게 좀 더 의미있는 것 같다.

  • 프레임워크와 라이브러리에 대한 의존성을 줄여야 하지않는가?
    • 학습단계에서는 맞는 말이다. 프레임워크에 의존해서 공부하면 실력이 늘지 않는다. 하지만 현업에서는 프레임워크를 사용하지 않으면 개발비용이 너무 높기 때문에 회사가 망할 수 있다. 포비의 생각은 학습단계에서 프레임워크를 경험해보는 것은 좋다. 하지만 회사에 취직해서 회사 프로젝트와 별개의 프레임워크를 사용하지 않는 개인 프로젝트를 해봐야 한다. 자바 프로그래밍을 통한 객체지향 설계와 리펙토링, 테스트 코드 작성을 해봐야 기본 실력이 쌓이고 중급 개발자로 나아갈 수 있다. 공부할때는 프레임워크를 두루 사용해봐도 좋지만 반드시 프레임워크 없이 프로젝트를 하는 경험을 해야한다.

실습

  • getter, setter 매서드를 쓰지말고 직접 변수에 대입해라. 왜냐하면 getter,setter 매서드를 사용하면 중간에 값을 바꿔치는 버그가 발생할 수 있다.
  • 중복되는 로직은 domain 객체로 빼줘야한다. 항상 객체지향적인 사고를 할려고 노력하자.

  • this는 무엇입니까?
    • this를 이해할려면 인스턴스의 개념에 대해 이해해야한다.
    • User class를 만들면 User에 대한 인스턴스가 만들어졌다고 한다.
    • this 명령어는 자기 자신의 인스턴스를 가리키는 명령어이다.
    • this.name은 전역변수로 선언된 name을 가리킨다.
    • 객체지향에서는 2개의 인스턴스(값이 다른 인스턴스)로 데이터를 처리하는데 사용하기 위해 this를 사용한다.
    • 클래스만 쓴다고 해서 자바를 자바답게 쓰는게 아니다.
    • 자바를 자바답게 쓸려면 인스턴스를 이해해야한다. (객체 = 인스턴스)
    • 메소드를 나누는것, 클래스를 나누는 것을 끊임없이 연습할 것.
  • ==과 equals() 메소드의 차이점은 무엇?
    • 중요한 차이점이 존재한다. 공부해야함.
  • Http의 header라는 영역에 데이터를 넣어서 보내 주는데 브라우저에서 그 데이터를 가지고 있다가 매번 서버에게 그 데이터를 보내주는 방식 - Cookie

  • SSL, TLS
    • https로 데이터를 주고 받을때는 클라이언트에서 암호화를 해서 보내고 서버에서 해독을 해서 네트워크 상에서는 정보가 해킹을 덜 당할 수 있다.
  • Http는 기본적으로 무상태 이지만 버전이 올라가면서 웹소켓이라는 기능을 통해 상태기반으로 동작할 수 있게 하였다.

    push 방식 vs 폴링방식

push는 웹소켓.
폴링은 브라우저에서 몇초마다 요청을 보냄.

Comments