WEB 158

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술(서블릿)

@Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("HelloServlet.service"); System.out.println("request = " + request); System.out.println("response = " + response); } request = org.apache.catalina.connector.RequestFacade@49a07c45 response = org.apache.catalina.connector.ResponseFacade@67b0b9cb 여러가지..

WEB/Spring MVC 1 2021.03.27

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술(웹 애플리케이션 이해)

웹 서버 , 웹 애플리케이션 서버 웹 서버(Web Server) HTTP기반으로 동작 정적 리소스 제공 , 기타 부가기능 정적(파일) Html, css ,js , 이미지 , 영상 예) NGINX, APACHE 웹 애플리케이션 서버 (WAS web application server) HTTP 기반으로 동작 웹서버 기능 포함 + (정적 리소스 제공 가능) 프로그램 코드를 실행해서 애플리케이션 로직 수행 사용자의 요청에따라 다른것들을 보낼 수 있다 동적 html , html api(json) 서블릿,jsp,스프링 mvc 예) tomcat, jetty, undertow 차이 웹 서버는 정적 리소스(파일), WAS 는 애플리케이션 로직 사실은 둘의 용어도 경계도 모호함 웹 서버도 프로그램을 실행하는 기능을 포함하..

WEB/Spring MVC 1 2021.03.27

김영한 (ORM 표준 JPA 프로그래밍 11) 객체지향 쿼리 언어 소개2 - 중급문법

경로 표현식 용어 정리 상태필드 = 단순히 값을 저장하기위한 필드 예) m.username 경로탐색의 끝, 더 이상 탐색하지않는다. 명시적 조인 = join 키워드 직접사용 select m from Member m join m.team t 묵시적 조인 = 경로 표현식에 의해 묵시적으로 SQL 조인 발생 (내부 조인만 가능) select m.team from Member m 연관 필드 = 연관관계를 위한필드 단일 값 연관 필드 @ManyToOne , @OneToOne 대상이 엔티티다 예) m.team String query = "select m.team From Member m"; List resultList = em.createQuery(query, Team.class) .getResultList(); ..

WEB/JPA 2021.03.20

김영한 (ORM 표준 JPA 프로그래밍 10) 객체지향 쿼리 언어 소개

JPQL 검색을 할 떄도 테이블이 아닌 엔티티 객체를 대상으로 검색 -> 데이터베이스 SQL에 의존 하지 않는다. 애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL이 필요 SQL과 문법유사, select ,from , where , group by, having , join지원 List resultList = em.createQuery( "select m From Member m where m.username like '%kim%'", Member.class ).getResultList(); 객체 Member 로부터 조회하는 것을 확인 할 수 있다. 또한 JPQL 은 단순한 String 임으로 validate하기 어렵다. Hibernate: /* select m From ..

WEB/JPA 2021.03.18

김영한 (ORM 표준 JPA 프로그래밍 9) 값 타입

JPA의 데이터 타입 분류 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 예) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 값타입 int, Integer, String 처럼 단순히 값으로 사용하는 자바 기본타입이나 객체 식별자가 없고 값만 있으므로 변경시 추적 불가 예) 숫자 100을 200으로 변경하면 완전히 다른 값으로 데체 생명주기를 엔티티에 의존 임베디드 타입 새로운 값 타입을 직접 정의 할 수 있음 주로 기본 값 타입들을 모아서 만들어서 복합 값 타입이라고 함, int,String 과 같은 값 타입 이런식으로 데이터들을 합쳐서 추상화 시켜서 좀 더 이해하기 쉽다. JPA에서는 이것들을 @Embeddable (= 값타입을 정의하는곳에 표시),..

WEB/JPA 2021.03.16

김영한 (ORM 표준 JPA 프로그래밍 7) 고급 매핑

상속관계 매핑 관계형 데이터베이스는 상속관계가 없다. 대신 슈퍼타입 서브타입 관계라는 모델링 기법이 유사하다. 주요 어노테이션 @Inheritance(strategy = InheritanceType.XXX) JOINED = 조인 전략 package hellojpa; import javax.persistence.*; @Entity @Inheritance(strategy = InheritanceType.JOINED) @DiscriminatorColumn public class Item { @Id @GeneratedValue private Long id; private String name; private int price; public Long getId() { return id; } public void ..

WEB/JPA 2021.03.13

김영한 (ORM 표준 JPA 프로그래밍 6) 다양한 연관관계 매핑

일대다 [1:N] package hellojpa; import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Entity public class Team { @Id @GeneratedValue @Column(name = "TEAM_ID") private Long id; private String name; @OneToMany @JoinColumn(name = "TEAM_ID") private List members = new ArrayList(); public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getN..

WEB/JPA 2021.03.08

김영한 (ORM 표준 JPA 프로그래밍 4) 엔티티 매핑

@Entity @Entity 가 붙은 클래스는 JPA가 관리, 엔티티라 한다. 기본 생성자 필수(파리미터가 없는 public 또는 protected 생성자) final 클래스, enum, interface, inner 클래스 사용 X 저장할 필드에 final 사용 X 예를 들어서 엔티티를 JPA 구현체가 생성할 때 리플렉션을 사용해서 객체를 먼저 생성하고 나중에 값을 필드에 직접 넣어주기도 하는데 final 이면 그게 불가능해진다. 속성: name JPA 에서 사용할 엔티티 이름을 지정한다. 같은 클래스의 이름이 없으면 그대로 사용하자. 이러한 관계를 이루고있다. 데이터베이스 스키마 자동 생성 DDL(Data Definition Language)을 애플리케이션 실행 시점에 자동 생성 ,Create Tab..

WEB/JPA 2021.03.06