Spring (16) 썸네일형 리스트형 ORM ORM은 Object Relation Mappin의 약자다. Object는 객체, Relation은 관계형 데이터베이스의 데이터, Mapping은 객체와 관계형 데이터베이스의 데이터를 서로 변환해준다. 종류에는 Mybatis, JPA, Hibernate 등이있다. Mybatis vs JPA Mybatis의 장점 익숙한 SQL 문법으로 구현할 수 있다. DB 조회결과를 복잡한 객체 구조로 변환해야 할 때 ResultMap기능을 쓰면 편하다 Mybatis의 단점 구현해야할 소스코드양이 상대적으로 많다 관계형 데이터베이스에서만 사용가능하다 DBMS 제품마다 SQL 문법이 조금씩 다르다. 따라서 DBMS 제품을 교체하려면 SQL 문장도 수정해야 된다. JPA의 장점 SQL 문법을 사용하지 않아서 DBMS 제품을.. JSP tomcat-embed-jasper 의존성에 역할은 다음과 같다. 스프링 부트 앱에는 톰캣 서버가 내장되어 있다. 톰캣 서버는 servlet container 이다. 톰캣 서버는 servlet을 실행하는 서버이다. 톰캣에서 JSP 파일은, 먼저 servlet이로 변환(컴파일)된 후 실행된다. tomcat-embed-jasper는 JSP 파일을 servlet으로 변환하는 컴파일러이다. 이 것을 프로젝트에 추가하지 않고 실행하면, JSP 파일이 실행되지 않고, 웹브라우저에서 다운로드 될 것이다. 톰캣은 servlet만 실행할뿐, 다른 파일들은 웹브라우저로 그대로 전송하기 때문이다 실행과정 (1) 웹브라우저 -> 서버 HttpRequest (URL, request parameter) 서버 == servlet .. JDBC Java DataBase Connectivity의 약자로 자바 프로그램에서 DB와 관련된 작업을 처리할 수 있도록 도와준다. DBMS(DataBaseManagementSystem) 종류(Mysql, Mssql, Oracle..)에 상관없이 하나의 JDBC API를 두어 사용하여 DBMS 작업을 처리한다. JRE에 포함되어있다. 실행과정 Connection: 데이터베이스에 연결하기 위한 객체이다 PreparedStatement: SQL 명령을 실행하기 위한 객체이다. ResultSet: SQL 명령의 조회 결과 데이터를 전달해 주는 객체이다. 작업이 끝난 후, Connection 객체의 close 메소드는 반드시 호출해 주어야 한다. PreparedStatement, ResultSet 객체의 close 메.. Spring Web MVC WebMvcAutoConfiguration HiddenHttpMethodFilter.class는 Spring framwork에서 filter에 해당하는데, post, delete 등 HTTP 메서드 요청을 _method 라는 히든 파라미터로 어떤 메소드인지 값을 받아 올 수있다. 그리고 그 값을 받아와서 컨트롤러에서 @DeleteMapping 등 HandlerMapping을 할 수 있도록 도와준다. HttpPutFormContentFilter.class는 Http POST 폼만 폼데이터를 보낼 수 있도록 서블릿 스펙에 정의가 되어있는데 put과 patch도 post요청처럼 데이터를 꺼낼 수 있도록 도와준다. * 스프링 부트가 제공하는 MVC기능을 더 확장하고 싶을 때 `implements WebMvcCo.. Test spring-boot-strater-test 의존성 주입을 받으면, spring-boot-starter 의존성 폼에 따라서 여러가지 라이브러리들을 가져온다. junit, mockito 등등.. 그리고 spring-boot-starter의 parent에서 버전관리도 해준다. webEnvironment Mock: mock servlet environment. 내장 톰캣 구동 안한다 RANDON_PORT, DEFINED_PORT: 내장 톰캣 사용 함. NONE: 서블릿 환경 제공 안 함 @AutoCofigureMockMVC @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK): Mocking을 한 서블릿 컨테이너가 띄어진다. 그래서 disp.. 부록 SOLID S: 단일 책임의 원칙 => 하나의 클래스는 하나의 기능만 O: 개방 폐쇄 원칙 => 확장에는 열려있고 변경에는 닫혀있는 L: 리스코프 치환의 원칙 => 자식 클래스로 객체를 생성해도 괜찮아야 한다 I: 인터페이스 분리의 원칙 => 하나의 인터페이스보다 여러개의 인터페이스가 낫다 D: 의존성 역전 원칙 => 의존관계는 변화하기 어려운곳에 의존해야한다. 예를 들어 인터페이스나 추상클래스 Application Listener에대해 살펴보자 애플리케이션이 이벤트가 발생하면 리스너가 실행이된다. 빈으로 등록을 해놓으면, 등록된 빈중에서 해당하는 이벤트에대한 리스너를 알아서 실행해준다. 주의해야할 것이있다. 이벤트가 언제 발생하냐가 중요한 기점이다. 애플리케이션 컨텍스트가 만들어졌냐안만들어졌냐를 기준으.. Spring Boot Spring Boot는 spring 환경기반으로 빠르게 production 수준의 독립적인 애플리케이션을 만들 수 있도록 도와준다. spring framework에 필요한 설정들 및 제3라이브러리 기본 설정을 제공해준다. 대표적으로 톰캣이 있다. Spring Boot를 쓰는 이유는 크게 편리한 의존성 관리, 자동설정, 내장 웹서버(톰캣) 설정이다. 의존성 관리 (maven 기준 설명) Dependency에 spring-starter-web이 들어있는데 이것만 있어도 어마어마한 의존성들이 들어온다. 그 이유는 spring-boot-starter의 역할이다. spring-boot-starter는 의존성을 관리한다. 의존성 관리를 받는 원리는, spring-boot-starter-parent가 있다. 올라가다.. AOP 와 PSA AOP Aspect Oriented Programming의 약자로, 흩어진 코드를 한곳에서 관리할 수 있도록 도와주는 코딩 기법이다. 크게 두가지 방법이 있다. 바이트 코드 조작 방법 => 컴파일된 .class를 조작한다. 프록시 패턴 방법 => Spring AOP가 사용하는 방법 AOP가 적용된 애노테이션 중에 @Transactional(readOnly = true)을 보자. 보통 트랜잭션 처리는 트랜잭션 매니저가 트랜잭션 오토 커밋을 false로 만들고 작업이 끝나면 true로 변환한다(트랜잭션을 커밋한다). 그리고 이 작업을 내부적으로 try/catch로 묶어놨는데 에러가나면 catch 블럭에서 rollback시키다. Spring Data JPA 해당하는 메소드들에는 기본적으로 트랜잭션이 적용이 되.. 이전 1 2 다음