Backend

    [Backend]IntelliJ(인텔리제이) 서버 실행 시, 로그 창 비교

    들어가며 인텔리제이(IntelliJ)에서 서버를 실행하면 서버와 관련된 정보 및 로그를 보여주는 창인 "Services" 창이 있음. 이 창에서는 실행시킨 서버에 대한 로그를 볼 수 있는데, 거기엔 "Server" 탭과 "Tomcat Localhost Log" 탭, 그리고 "Tomcat Catalina Log" 탭이 있음. 처음에는 그냥 서버 실행하면 먼저 활성화되는 Server 탭의 로그만 봤고, 거기에 있는 로그들이 전부인 줄 알았음. 누가 이걸 볼지는 모르겠지만, 나와 같은 실수를 최대한 빨리 고치기를 바라며 이 글을 쓰게 됐음 ! 서버 실행시, 로그 창 비교 Server 탭 얘는 현재 프로젝트에서 설정한 서버 구성과 관련된 정보를 보여줌. 서버의 이름, 상태(실행 중인지 중지된 상태인지), 호스트..

    [JPA]JPA를 왜 사용해야 하는가?

    JPA를 왜 사용해야 하는가? SQL 중심적인 개발에서 객체 중심으로 개발 생산성 유지보수 패러다임의 불일치 해결 성능 데이터 접근 추상화와 벤더 독립성 표준 생산성 저장 jpa.persist(member) 조회 Member member = jpa.find(memberId) 수정 -> 개꿀 member.setName("변경할 이름") 삭제 jpa.remove(member) 유지보수 기존 필드 변경 시 모든 SQL 수정 JPA 필드만 추가하면 됨, SQL은 JPA가 처리 JPA와 패러다임의 불일치 해결 (관계형 데이터베이스(RDBMS)와 객체의 패러다임의 불일치 해결) JPA와 상속 저장 개발자가 할 일 jpa.persist(album); 나머진 JPA가 처리 INSERT INTO ITEM ... INSE..

    [JPA]JPA란?

    JPA Java Persistence API 자바 진영의 ORM 기술 표준 ORM Object-relational mapping(객체 관계 매핑) 객체는 객체대로 설계 관계형 데이터베이스는 관계형 데이터베이스대로 설계 ORM 프레임워크가 중간에서 매핑 대중적인 언어에는 대부분 ORM 기술이 존재 JPA는 어플리케이션과 JDBC 사이에서 동작 JPA 동작 - 저장, 조회, 쿼리를 개발자가 만드는게 아니고 JPA가 만들어주는 거임 여기서 중요한건 패러다임의 불일치 해결! JPA는 표준 명세 JPA는 인터페이스의 모음 JPA 2.1 표준 명세를 구현한 3가지 구현체 하이버네이트(대부분 이거 씀), EclipseLink, DataNucleus

    [JPA]SQL 중심적인 개발의 문제점

    1. 무한 반복, 지루한 코드 CRUD 맨날 하는거 맨날 반복,,, 2. 설계 다 했는데 기획자가 마지막에 연락처 추가해달라 했을 경우 그럼 객체에 연락처 칼럼 넣고, 쿼리들을 한땀한땀 다 수정해야 함 3. 개발자 = SQL 매퍼 4. 객체의 상속 관계를 DB에 밀어 넣을 때 슈퍼타입/서브타입 이라는 관계를 이용해서 어렵게 어렵게 DB에 넣음 여기까진 ㅇㅋ 어떻게든 했어 근데? DB에 데이터를 넣을 때는 쿼리를 2번 작성해야 함. 부모 테이블 한번, 자식 테이블 한번 여기까지도 ㅇㅋ 근데 조회할 때는? 조인 쿼리를 만들고 결과를 생성해서 조회해야 함 -> 점점 복잡함... 하지만 자바 컬렉션을 조회한다고 생각하면 그냥 부모 타입으로도 조회할 수 있고, 그냥 id로 조회할 수 있고 암튼 쉬워짐 ! 5. 객..

    [Backend]Servlet의 Life Cycle(생명주기)

    [Backend]Servlet의 Life Cycle(생명주기)

    Servlet Life Cycle 서블릿 클래스는 javaSE에서의 class와는 다르게 main method가 없다. 즉 객체의 생성부터 사용(method call)의 주체가 사용자가 아닌 Servlet Container(Servlet Engine이라 함. 얘를 WAS라 함 우리는 WAS 중에 톰캣이라는 애를 씀)에게 있다. 클라이언트가 요청을 하게되면 Servlet Container는 Servlet 객체를 생성(한번만)하고, 초기화(한번만)하며 요청에 대한 처리(요청시마다 반복)를 하게 된다. 또한 Servlet객체가 필요없게 되면 제거하는 일까지 Contatiner가 담당하게 된다. (WAS가 쓰레드를 처리해줘서 가능). 웹페이지에 드가는 사람이 한명일 수는 없자너 서블릿의 생명주기 메서드 init..

    [Backend]Eclipse에서 동적 웹 프로젝트 및 서블릿 생성하기

    [Backend]Eclipse에서 동적 웹 프로젝트 및 서블릿 생성하기

    동적 웹 프로젝트(Dynamic Web Project)란? 말 그대로 동적인 웹 프로젝트이다. PHP, JSP, ASP, Servlet 등과 같은 파일들을 만드는 프로젝트이다! 그럼 이제 Eclipse에서 어떻게 생성을 하는지 볼게여 Dynamic Web Project 생성 방법 아 맞다 그리고 이거 동적 웹 프로젝트 생성할 때는 Perspective를 Java EE 버전으로 바꾸고 마우스 우클릭을 해야 이 사진처럼 보임!!! 서블릿(Servlet)이란? 클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술 클라이언트가 어떤 요청을 하면 그에 대한 결과를 응답해주어야 하는데, 이런 역할을 하는 자바 프로그램이라고 보면 됨!!! src에는 ja..

    [Backend]Web Architecture

    [Backend]Web Architecture

    Web Architecture 우리가 지금 사용하고 있는 웹 페이지는 이렇게 생겼음 클라이언트가 서버에 요청을 함 -> 그 요청이 괜찮은? 가능한? 요청인지 서버에 물어봄 -> 가능하면 서버에서 로직을 처리하고 데이터를 줌(응답) 뭐 이런식으로 굴러감 웹서버는 접속, 응답 처리 밖에 못해서 어플리케이션 서버(Web Container)가 필요함 어플리케이션 서버는 language 실행 가능(로직 처리) 요즘은 웹서버랑 어플리케이션 서버랑 같이 감(WAS라고 함) 우리는 톰캣이라는 WAS를 쓸 것임(WAS에는 웹로직, 웹스퀘어, 제우스 등 많은 서버가 있음) → 자바, 스프링은 얘네 다 쓸 수 있음) 순서? data get - 데이터를 받아라~ logic - 로직을 처리하기 위함 비즈니스 로직(데이터베이스 ..