공부방22 [TIL 07/04] 스프링 MVC 1. Spring MVC DispatcherServlet 프론트 컨트롤러 패턴은 중앙 집중형 컨트롤러를 제일 앞단에 두고 모든 요청을 받는다. 디스패처 서블릿이 프론트 컨트롤러 패턴으로 구현되었으며 요청에 맞는 컨트롤러를 찾아서 호출하고 응답을 받아 뷰를 만든다. 이름에서 알 수 있듯이 이것 역시 하나의 서블릿이며 스프링 부트는 자동으로 서블릿 컨테이너에 등록하면서 모든 경로("/")에 대해서 맵핑한다. Spring MVC 처리 흐름 1) DispatcherServlet에서 컨트롤러로 HTTP 요청 위임 디스패처 서블릿이 HTTP 요청을 받는다. 요청 URL 기준으로 어떤 컨트롤러에게 작업을 위임할지 파라미터 정보, HTTP 메서드 등을 참고해서 결정한다. 이 과정을 핸들러 맵핑(HandlerMappin.. 2023. 7. 6. [TIL 07/03] 웹, 서블릿 1. 웹 웹이란 인터넷에서 연결된 컴퓨터를 통해 사람들이 정보를 공유할 수 있는 전 세계적인 정보 공간을 말한다. 웹의 구성 HTTP URI HTML URI(Uniform Resource Identifier) 웹에 있는 정보를 리소스라 한다. URI는 리소스를 식별하기 위한 식별자로서 웹에 존재하는 어떠한 자원에 접근하기 위한 유일한 주소를 가진 식별자이다. URI는 리소스가 있는 위치를 지정하는 URL(Locator), 리소스에 이름을 부여하는 URN(Name)으로 분류되며 일반적으로 URL을 통해 리소스를 찾는다. URL 문법 scheme://[userinfo@]host[:port][/path][?query][#fragment] https://www.google.com:443/search?q=hell.. 2023. 7. 5. [TIL 06/30] 스프링 AOP, 스프링 트랜잭션 1. AOP 시작하기 여러 모듈에서 로깅, 트랜잭션과 같이 핵심 비즈니스 로직이 아닌 부가적인 목적으로 필요한 로직이 반복적으로 나타나는 것을 횡단 관심사(cross-cutting concern) 라고 한다. 애플리케이션을 바라보는 관점을 하나하나의 기능에서 횡단 관심사 관점에서 바라보고 핵심 기능과 부가 기능의 분리를 통해 모듈성을 증가시키는 것을 관점 지향 프로그래밍(Aspect-Oriented Programming) 이라고 한다. public void transfer() { Connection con = dataSource.getConnection(); try { con.setAutoCommit(false); //비즈니스 로직 con.commit(); } catch (Exception e) { co.. 2023. 7. 4. [TIL 06/29] NamedParameterJdbcTemplate, Transaction 1. NamedParameterJdbcTemplate JdbcTemplate은 인덱스 기반의 파라미터 바인딩을 통해서 다음과 같이 작성될 수 있다. @Override public void update(Customer customer) { String sql = "update customers set name = ? where customer_id = ?"; jdbcTemplate.update(sql, customer.getName(), customer.getCustomerId().toString()); } ?를 입력한 자리에 메서드에 전달한 인수가 순서대로 바인딩된다. 순서대로 바인딩하는 것은 편리하지만 잘못된 순서로 입력되면 오류가 발생할 수 있다. 이러한 문제를 보완하기 위해 JdbcTempate은 .. 2023. 6. 30. [TIL 06/28] Connection Pool, DataSource, JdbcTemplate 1. Connection Pool 자바 애플리케이션에서 DB에 쿼리를 날리기 위해 매 요청마다 커넥션을 생성하는 것은 많은 리소스가 소비된다. SQL을 실행하는 시간뿐만 아니라 커넥션을 새롭게 만드는데도 많은 시간이 소요되어 요청에 대한 응답 속도에 영향을 주게 된다. 이러한 문제를 해결하기 위해 커넥션 풀이 등장하였다. 커넥션을 미리 생성해두었다가 필요할 때마다 하나씩 꺼내 쓰고 작업이 종료되면 커넥션 풀에 다시 반환한다. 2. DataSource DataSource는 커넥션을 획득하는 방법에 대해 추상화한 인터페이스이다. 개발자는 커넥션이 DriverManager를 이용해서 만들어지는지, 커넥션 풀을 통해 획득하는지 전혀 알 필요 없이 커넥션을 획득하고, 사용하고, 종료하면 된다. 3. JdbcTem.. 2023. 6. 30. [TIL 06/27] JDBC 1. JDBC JDBC 란? JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다. 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다. DB 연결, SQL과 과련된 작업을 수행할 수 있는 표준 인터페이스이다. 이를 이용하면 DB 종류에 상관없이 SQL문을 실행하고 처리할 수 있다. 자바 애플리케이션에서 영속성 계층을 처리하기 위해 JDK 1.1에 포함되어 출시한 컴포넌트이다. 아키텍처 JDBC 인터페이스는 JDBC API와 JDBC 드라이버 두 개의 계층으로 나뉜다. 백엔드 엔지니어들은 JDBC API를 이용해서 드라이버와 커넥션을 맺고 쿼리를 날린다. JDBC API는 다음과 같은 기능을 제공한다. Connection -.. 2023. 6. 30. 이전 1 2 3 4 다음