본문 바로가기
728x90
반응형

java226

[Spring] 서블릿(Servlet) 개념 우리는 데이터를 웹 브라우저에서 전송할 때 Form을 사용한다. Form에 데이터를 입력하여 서버로 전송한다. 서버에서 요청받은 데이터를 처리해야할 때, 비즈니스 로직을 실행하여야 한다. 데이터를 처리하여 데이터베이스에 저장 요청해야한다. 서블릿을 지원하는 WAS를 사용하여 데이터 저장 비즈니스 로직을 실행한 후, 응답 메시지를 생성한다. 서블릿의 특징으로는 @WebServlet(name = "helloServlet", urlPatterns = "/hello") public class HelloServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response.. 2023. 5. 15.
[Spring] 웹 서버, 웹 애플리케이션 서버 웹 서버와 웹 애플리케이션 서버에 대한 비교 웹 서버(Web Server)는 HTTP 기반으로 동작한다. 정적인 리소스를 제공하고, 기타 부가기능을 제공한다. 정적(파일) HTML, CSS, JS, 이미지, 영상 등을 제공한다. 웹 서버 종류로는 예) NGINX, APACHE 웹 애플리케이션 서버(WAS - Web Application Server) HTTP 기반으로 동작한다. 웹 서버의 기능을 포함한다. (정적인 리소스 제공 가능) 프로그램 코드를 실행해서 애플리케이션 로직을 수행한다. → 동적 HTML, HTTP API(JSON) → 서블릿, JSP, 스프링 MVC 등 웹 애플리케이션 서버 종류로는 예) 톰캣(Tomcat), Jetty, Underrow 웹 서버, 웹 애플리케이션 서버(WAS) 차이 .. 2023. 5. 15.
[JPA/Java] JPQL 벌크 연산 재고가 10개 미만인 모든 상품의 가격을 10% 올리려면 어떻게 해야할까? JPA 변경 감지 기능으로 실행하려면 너무 많은 SQL이 실행되어야 한다. (1) 재고가 10개 미만인 상품을 리스트로 조회한다. (2) 상품 엔티티의 가격을 10% 증가한다 (3) 트랜잭션 커밋 시점에 변경감지가 동작한다. 변경된 데이터가 100건이라면 100번의 UPDATE SQL이 실행될 것이다. 벌크 연산은 쿼리 한 번으로 여러 테이블 로우를 변경한다(엔티티) executeUpdate()의 결과는 영향받은 엔티티의 수를 반환하는데, UPDATE, DELETE 쿼리를 지원한다 INSERT(insert into .. select, 하이버네이트 지원) String qlString = "update Product p " + "se.. 2023. 5. 11.
[JPA/Java] JPQL Named 쿼리 - 어노테이션, XML Named 쿼리는 정적 쿼리이다. 미리 정의해서 이름을 부여해두고 사용하는 JPQL이다. 주로 어노테이션이나 XML에 정의해두고 애플리케이션 로딩 시점에 초기화 후 재사용한다. 애플리케이션 로딩 시점에 쿼리를 검증한다. (1) 어노테이션에서 사용하는 방법 Member.java package jpql; import javax.persistence.*; @Entity @NamedQuery( name = "Member.findByUsername", query = "select m from Member m where m.username = :username" ) public class Member { @Id @GeneratedValue private Long id; public MemberType getType.. 2023. 5. 11.
[JPA/Java] JPQL 엔티티 직접 사용 JPQL에서 엔티티를 직접 사용하면 SQL에서 해당 엔티티의 기본 키 값을 사용한다. [JPQL] jpql = "SELECT count(m.id) FROM Member m"; // 엔티티의 아이디를 사용 jpql = "SELECT count(m) FROM Member m"; // 엔티티를 직접 사용 [SQL] (위의 JPQL 둘다 같은 SQL을 실행) SELECT count(m.id) as cnt FROM Member m 엔티티를 파라미터로 전달 시 String jpql = "select m from Member m where m = :member"; List resultList = em.createQuery(jpql) .setParameter("member", member) .getResultList(.. 2023. 5. 11.
[JPA/Java] JPQL 다형성 쿼리 - TYPE, TREAT 다형성 쿼리로는 TYPE, TREAT이 있다. TYPE 예시 예시) Item 중에 Book, Movie를 조회하라 [JPQL] jpql = "SELECT i FROM Item i WHERE type(i) IN (Book, Movie)"; [SQL] SELECT i FROM i WHERE i.DTYPE in (‘B’, ‘M’) TREAT(JPA 2.1) TREAT은 자바의 타입 캐스팅과 유사하다. 상속 구조에서 부모 타입을 특정 자식 타입으로 다룰 때 사용한다. FROM, WHERE, SELECT(하이버네이트 지원) 에서 사용할 수 있다. 예시) 부모인 Item과 자식 Book이 있다. [JPQL] jpql = "SELECT i FROM Item i WHERE treat(i as Book).author =.. 2023. 5. 11.
728x90
반응형