Programming/Spring Framework (10) 썸네일형 리스트형 [Spring] mybatis selectKey 스프링의 마이바티스에서 디비에 insert 하는 과정 중에 한 메서드에서 두개의 insert를 실행할 때 1번째 실행했던 insert의 id 값을 두 번째 insert구문에 id로 넣어야 하는 상황이 있을 것이다 저도 처음에는 이런 기능을 몰라 SELECT MAX(id) FROM [테이블] 첫 번째 테이블의 가장 높은 값 즉 가장 최근의 값을 가지고 오는 서브쿼리를 두번째 insert구문의 집어넣었다 이것도 나쁜 방법은 아닌데 좋지는 않다 하지만 mybatis에서 selectKey 기능을 제공해준다. SELECT LAST_INSERT_ID() resultType 은 쿼리의 결과를 어떤 데이터 타입으로 반환할지 정의합니다. keyProperty는 객체의 어떤 속성 매핑할 것인지 지정합니다. keyColum.. [Spring Framework] myBatis myBatis란 웹 애플리케이션을 개발할 때 가장 많이 사용되는 SQL 매퍼 프레임워크이다. myBatis를 사용하지 않고 직접 JDBC를 이용할 경우 개발자가 반복적으로 작성해야 할 코드가 많고, 서비스 로직 코드와 쿼리를 분리하기 어렵습니다. 또한 커넥션 풀의 설정 등 개발자가 신경 써야 할 부분이 많아 여러 가지 어려움이 있습니다. 따라서 JDBC를 이용해서 직접 개발하기 보다는 마이바티스와 같은 프레임워크를 사용하는 게 일반적입니다. 특징으로는 복잡한 쿼리나 다이나믹한 쿼리에 강합니다. 반대로 비슷한 쿼리는 남발하게 되는 단점이 있습니다. 프로그램 코드와 SQL 쿼리의 분리로 코드의 간결성 및 유지보수성이 향상됩니다. 마이바티스를 사용하기 위해서는 우선. jar을 넣어줘야 해서 pom.xml에 d.. [Spring Framework] JdbcTemplate JdbcTemplate은 개발자가 JDBC 기술을 쉽게 사용할 수 있도록 도와주는 클래스이다. 그럼 JDBC는 무엇인가 간단하게 알아보고 넘어가자 JDBC란 Java Database Connectivity로 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다. 이러한 JDBC는 데이터베이스에서 자료를 쿼리 하거나 업데이트하는 방법을 제공합니다. 스프링의 가장 기본적인 Data Access 탬플릿으로 쿼리 기반으로 데이터 베이스의 접근이 가능합니다. DAO계층에서 Jdbc Template API를 사용합니다. Data Source 란 - DB Server와 연결 시키는 연결 팩토리이고 - JDBC의 일부분입니다. - Connection의 정보를 가지고 있고 Bean으로 등록하여 인자를 넘겨줍니다.. [Spring Framework] View Resolver 스프링 백엔드에서 데이터를 처리하거나 가지고 왔다면, 이 데이터를 View의 영역으로 전달을 해야 한다. 이때 View를 어떤 것을 사용할지 자유롭게 설정을 할 수 있는데 이 설정 역할을 하는 것이 View Resolver라고 생각하면 된다 - DispatcherServlet에게 뷰 정보를 전달하는 방법은 두 가지가 있습니다. 1) View 타입의 오브젝트를 주는 방법 2) String 타입의 뷰이름을 주는 방법 String View 이름을 주는 경우 이름으로부터 실제로 사용할 View 객체를 결정해주는 View Resolver가 필요합니다 VIew 오브젝트를 넘겨주는 것 보다, View 이름을 넘겨주어서 View Resolver를 사용하는 것이 성능 면에서 유리합니다. 특정 View Resolver를 .. [Spring Framework] 스프링 어노테이션 정리 @Component 개발자가 생성한 Class를 Spring의 Bean으로 등록할 때 사용하는 어노테이션 @ComponentScan @Component, @Service, @Repository, @Controller, @configuration 중 1개라도 등록된 클래스를 찾으면 Context에 bean 으로 등록해줌니다. @Bean 개발자가 제어가 불가능한 외부 라이브러리와 같은 것들은 Bean으로 만들 때 사용합니다. @Controller Spring에게 해당 Class가 Controller의 역할을 한다고 명시하기 위해 사용하는 어노테이션 @Service 비지니스 로직이 들어가는 Service로 사용되는 클래스임을 명시하는 어노테이션 @Repository DB연동 작업을 하는 클래스인 DAO에 특화.. [Spring Framework] Dispatcher Servlet 스프링 프레임워크의 MVC에 대해서 하나하나 알아보고자 합니다. Dispatcher Servlet은 Controller역할로 Front Controller 패턴에 의해 클라이언트로부터의 모든 요청은 Dispatcher Servlet으로 가게 되어있습니다. 어떻게 이렇게 될 수 있는 것일까요 우선 Servlet을 생성해야 합니다 컨트롤러 패키지를 하나 만들고 서블릿을 생성을 하면 기존 JSP때 서블릿을 생성했을 때와 다른 점이 있을 겁니다. 바로 이 부분인데 어노테이션이 사라져 있습니다. dynamic 프로젝트에서 서블릿을 생성하면 어노테이션이 생겨 WebServlet설정을 해줘야 했었는데 스프링에서는 하지 않아도 된다 이유가 무엇일까 이유는 스프링에서 서블릿을 생성하면 web.xml에 자동으로 연결이 된.. [Spring Framework] AOP AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화 하겠다는 것이다 Aspect는 부가될 기능을 정의한 Advice와, 해당 Advice를 어디에 적용할지를 결정하는 Pointcut 정보를 가지고 있습니다. 코드를 보겠습니다 - 스프링 컨테이너야 너 AOP 할 줄 알지? 앞으로 비즈니스 메서드(CRUD,핵심관심,핵심로직)를 수행하기 전에 공통관심(횡단관심,ex)로그/트랜젝션/인증/보안/Util클래스...)인 LogAdvice를 실행시켜 줘라고 설정했습니다. aop:??? [Spring Framework] DI 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.. 이전 1 2 다음