목록Programming/Spring Framework (10)
헬린코린이
스프링의 마이바티스에서 디비에 insert 하는 과정 중에 한 메서드에서 두개의 insert를 실행할 때 1번째 실행했던 insert의 id 값을 두 번째 insert구문에 id로 넣어야 하는 상황이 있을 것이다 저도 처음에는 이런 기능을 몰라 SELECT MAX(id) FROM [테이블] 첫 번째 테이블의 가장 높은 값 즉 가장 최근의 값을 가지고 오는 서브쿼리를 두번째 insert구문의 집어넣었다 이것도 나쁜 방법은 아닌데 좋지는 않다 하지만 mybatis에서 selectKey 기능을 제공해준다. SELECT LAST_INSERT_ID() resultType 은 쿼리의 결과를 어떤 데이터 타입으로 반환할지 정의합니다. keyProperty는 객체의 어떤 속성 매핑할 것인지 지정합니다. keyColum..

myBatis란 웹 애플리케이션을 개발할 때 가장 많이 사용되는 SQL 매퍼 프레임워크이다. myBatis를 사용하지 않고 직접 JDBC를 이용할 경우 개발자가 반복적으로 작성해야 할 코드가 많고, 서비스 로직 코드와 쿼리를 분리하기 어렵습니다. 또한 커넥션 풀의 설정 등 개발자가 신경 써야 할 부분이 많아 여러 가지 어려움이 있습니다. 따라서 JDBC를 이용해서 직접 개발하기 보다는 마이바티스와 같은 프레임워크를 사용하는 게 일반적입니다. 특징으로는 복잡한 쿼리나 다이나믹한 쿼리에 강합니다. 반대로 비슷한 쿼리는 남발하게 되는 단점이 있습니다. 프로그램 코드와 SQL 쿼리의 분리로 코드의 간결성 및 유지보수성이 향상됩니다. 마이바티스를 사용하기 위해서는 우선. jar을 넣어줘야 해서 pom.xml에 d..
JdbcTemplate은 개발자가 JDBC 기술을 쉽게 사용할 수 있도록 도와주는 클래스이다. 그럼 JDBC는 무엇인가 간단하게 알아보고 넘어가자 JDBC란 Java Database Connectivity로 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다. 이러한 JDBC는 데이터베이스에서 자료를 쿼리 하거나 업데이트하는 방법을 제공합니다. 스프링의 가장 기본적인 Data Access 탬플릿으로 쿼리 기반으로 데이터 베이스의 접근이 가능합니다. DAO계층에서 Jdbc Template API를 사용합니다. Data Source 란 - DB Server와 연결 시키는 연결 팩토리이고 - JDBC의 일부분입니다. - Connection의 정보를 가지고 있고 Bean으로 등록하여 인자를 넘겨줍니다..
스프링 백엔드에서 데이터를 처리하거나 가지고 왔다면, 이 데이터를 View의 영역으로 전달을 해야 한다. 이때 View를 어떤 것을 사용할지 자유롭게 설정을 할 수 있는데 이 설정 역할을 하는 것이 View Resolver라고 생각하면 된다 - DispatcherServlet에게 뷰 정보를 전달하는 방법은 두 가지가 있습니다. 1) View 타입의 오브젝트를 주는 방법 2) String 타입의 뷰이름을 주는 방법 String View 이름을 주는 경우 이름으로부터 실제로 사용할 View 객체를 결정해주는 View Resolver가 필요합니다 VIew 오브젝트를 넘겨주는 것 보다, View 이름을 넘겨주어서 View Resolver를 사용하는 것이 성능 면에서 유리합니다. 특정 View Resolver를 ..
@Component 개발자가 생성한 Class를 Spring의 Bean으로 등록할 때 사용하는 어노테이션 @ComponentScan @Component, @Service, @Repository, @Controller, @configuration 중 1개라도 등록된 클래스를 찾으면 Context에 bean 으로 등록해줌니다. @Bean 개발자가 제어가 불가능한 외부 라이브러리와 같은 것들은 Bean으로 만들 때 사용합니다. @Controller Spring에게 해당 Class가 Controller의 역할을 한다고 명시하기 위해 사용하는 어노테이션 @Service 비지니스 로직이 들어가는 Service로 사용되는 클래스임을 명시하는 어노테이션 @Repository DB연동 작업을 하는 클래스인 DAO에 특화..

스프링 프레임워크의 MVC에 대해서 하나하나 알아보고자 합니다. Dispatcher Servlet은 Controller역할로 Front Controller 패턴에 의해 클라이언트로부터의 모든 요청은 Dispatcher Servlet으로 가게 되어있습니다. 어떻게 이렇게 될 수 있는 것일까요 우선 Servlet을 생성해야 합니다 컨트롤러 패키지를 하나 만들고 서블릿을 생성을 하면 기존 JSP때 서블릿을 생성했을 때와 다른 점이 있을 겁니다. 바로 이 부분인데 어노테이션이 사라져 있습니다. dynamic 프로젝트에서 서블릿을 생성하면 어노테이션이 생겨 WebServlet설정을 해줘야 했었는데 스프링에서는 하지 않아도 된다 이유가 무엇일까 이유는 스프링에서 서블릿을 생성하면 web.xml에 자동으로 연결이 된..

AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화 하겠다는 것이다 Aspect는 부가될 기능을 정의한 Advice와, 해당 Advice를 어디에 적용할지를 결정하는 Pointcut 정보를 가지고 있습니다. 코드를 보겠습니다 - 스프링 컨테이너야 너 AOP 할 줄 알지? 앞으로 비즈니스 메서드(CRUD,핵심관심,핵심로직)를 수행하기 전에 공통관심(횡단관심,ex)로그/트랜젝션/인증/보안/Util클래스...)인 LogAdvice를 실행시켜 줘라고 설정했습니다. aop:???
Dependency Injection란 외부에서 두 객체 간의 관계를 결정해 주는 디자인 패턴으로 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해 줍니다. 의존 관계란 "A가 B를 의존한다."는 말은 의존 대상 B가 변화면 그것이 A에 영향을 미친다는 것입니다. 코드를 보겠습니다. package test; import java.util.List; public class TestDAO { private static List holy; private Bean bean; public void setHoly(List bean) { holy = bean; } public void setBean(Bean b..
팩토리 패턴(factory pattern) - 객체를 생성하는 인터페이스는 미리 정의하되, 인스턴스를 만들 클래스의 결정은 서브 클래스 쪽에서 내리는 패턴입니다. 다시 말해 여러 개의 서브 클래스를 가진 슈퍼 클래스가 있을 때 인풋에 따라 하나의 자식 클래스의 인스턴스를 리턴해주는 방식입니다. 팩토리 패턴에서는 클래스의 인스턴스를 만드는 시점을 서브 클래스로 미룹니다. 이 패턴은 인스턴스화에 대한 책임을 객체를 사용하는 클라이언트에서 팩토리 클래스로 가져옵니다. 인터페이스를 하나 정의합니다. package test; public interface Phone { void powerOn(); void powerOff(); void volumeUp(); void volumeDown(); } 이 인터페이스를 구..
Spring Framework - 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 엔터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 설루션입니다. - 엔터프라이즈급 개발이란 뜻대로만 풀이하면 기업을 대상으로 하는 개발이라는 말입니다. - Spring Framework는 경량 컨테이너로 자바 객체를 담고 직접 관리합니다. - IoC와 AOP를 지원하는 경량의 프레임워크입니다. IoC (Inversion of Control) 제어의 역행입니다. 일반적으로 지금까지 프로그램은 모든 작업을 사용자가 제어하는 구조였는데 IOC에서는 이 흐름의 구조를 바꿉니다. IOC에서의 객체는 자기가 사용할 객체를 선택하거나 생성하지 않습니다. 또한 자신이 어디서 만들어지고 어떻게 사용..