Spring JDBC 사용을 위한 기본 설정을 직전 포스팅에서 완료했으니, 이제 JDBCTemplete 의 메서드들을 사용하여 DB 연동과 관련된 여러 작업들을 쉽게 처리할 수 있다. 바로 사용해보자. 1. update() : INSERT, UPDATE, DELETE 구문을 처리하기 위한 메서드 int update(String sql, Object arg) => sql 구문에 들어가는 쿼리스트링 수만큼 arg 나열 int update(String sql, Object[] args) => sql 구문에 들어가는 쿼리스트링들을 가지고 있는 배열 삽입 2. queryForInt() : SELECT 구문으로 리턴된 정수값을 받기 위한 메서드 int queryForInt(String sql) => 쿼리스트링 사용..
스프링은 개발자가 직접 DB 연동 코드를 작성하지 않고, SQL 구문만 수정하면 자동으로 사용이 가능하게끔 하는 JDBC Templete을 사용할 수 있는데, 이 좋은 기법을 수행하기 위해서는 몇 가지 사전 준비가 필요하다. 1. pom.xml 문서에 를 이용하여 라이브러리들을 추가해야한다. ◎pom.xml - Spring JDBC, DBCP(DataBase Connection Pool) 라이브러리 추가 ◎pom.xml 2. DataSource 설정 JDBCTemplete 클래스가 JDBC API를 이용하여 DB 연동을 처리하려면 데이터베이스로부터 커넥션을 얻어와야 한다. 따라서 JDBCTemplete 객체가 사용할 DataSource를 bean 객체로 등록해야 한다. DataSource 객체는 스프링 ..
우선, 기본적으로 Spring 프레임워크는 제어의 역행 구조를 가지고 있기 때문에, 다음과 같은 구조로 프로젝트가 실행된다. 이 때, 일반적인 Dynamic Web Project 였다면, Controller 가 각 엑션을 구현받은 클래스들을 호출하여 사용하지만, Spring은 이를 Controller, Service, DAO, VO 등의 객체를 Spring Container가 자동으로 생성하도록 어노테이션을 통하여 설정할 수 있다. 어노테이션 위치 의미 @Service ~ServiceImpl 해당 클래스는 비즈니스 로직을 처리하는 Service 클래스이다. @Repository ~DAO 해당 클래스는 DB 연동을 처리하는 DAO 클래스이다. @Controller ~Controller 해당 클래스는 사용자..
각 클래스를 생성하고, 이를 bean 객체로 등록하는 것이 조금 번거로운 작업이라고 생각할 수 있다. 이번 포스팅은 클래스를 생성하고, @Component 어노테이션을 다는 것만으로 bean 객체를 자동 등록할 수 있는 기법인 component-scan 을 다루려고 한다. 우선, component-scan은 context Namespace의 하나로, 다음과 같이 Namespace 탭에서 context를 선택하여 추가해야 한다. Namespace를 등록했으면, xml 설정 파일에 이전에 등록했던 bean 객체를 전부 주석처리 한 다음, 아래와 같이 component-scan을 등록해주기만 하면 xml 파일 작성은 끝이 난다. ◎applicationContext.xml 이렇게 설정하면 polymorphism..
bean 객체는 사용의 편리성을 위해 배열이나 Map, Set 등과 같은 Collection 객체와의 맵핑을 위한 엘리먼트도 존재한다. 컬렉션 유형 엘리먼트 List, 배열 Set Map Properties 각각의 예제를 통해 의존성 주입을 어떤 방식으로 하는지 확인해보자. 우선, 각 예제가 공통으로 사용할 CollectionBean.class 이다. ◎CollectionBean package polymorphism; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; public class CollectionBean { private List addressList; private Se..
직전 포스팅과 마찬가지로 setter를 구성했다면, Namespace를 이용해서 객체나 값을 전달할 수도 있다. 우선, Namespace를 사용하기 위해서는 xml 설정 파일에서 하단 Namespace 탭을 클릭해서 p:Namespace 사용에 체크해야한다. source를 확인해보면, Namespace가 자동으로 추가된 것을 확인할 수 있다. 다음으로 아래와 같이 bean 객체 선언부에서 p: 속성을 작성해주면 끝이다. ◎SamsungTV package polymorphism; public class SamsungTV implements TV{ private Speaker speaker = null; private int price = 0; public SamsungTV() { System.out.pri..
직전 포스팅에서는 생성자에 인자를 부여하여 그 인자를 constructor-arg 태그로 전달했다면, 이번에는 생성자가 아닌 setter를 구성하여 property 태그를 이용하여 값을 설정해줄 것이다. 구조는 거의 비슷하다. ◎SamsungTV package polymorphism; public class SamsungTV implements TV{ private Speaker speaker = null; private int price = 0; public SamsungTV() { System.out.println("SamsungTV --- 객체 생성"); } public void setSpeaker(Speaker speaker) { System.out.println("setSpeaker"); thi..
지난 포스팅에서도 한번 언급했듯, constructor-arg 태그를 이용하여 bean 객체에 인자를 전달할 수 있다. 1. value 속성: bean 객체에 다른 bean 객체가 아닌 다른 자료형의 데이터를 전달할 때 사용하는 속성 2. ref 속성: bean 객체에 다른 bean 객체 자체를 전달할 때 사용하는 속성 3. index 속성: constructor-arg로 인자를 전달할 때, 그 순서를 명시하여 사용할 수 있게 해주는 속성 이번에도 그리 어려운 개념은 아니기 때문에 자세한 설명은 생략하겠다. ◎SonySpeaker.java package polymorphism; public class SonySpeaker { public SonySpeaker() { System.out.println("=..
bean 객체에는 다양한 속성들이 존재한다. 이번 포스팅에서는 그 중에서 객체 로드에 관련된 속성 3가지를 정리하려고 한다. 그렇게 복잡한 내용이 아니므로 3개의 속성 모두 한번에 설명하겠다. 1. init-method: bean 객체가 처음 생성될 때, 호출할 메서드를 지정할 수 있는 속성 2. destroy-method: bean 객체가 소멸할 때, 호출할 메서드를 지정할 수 있는 속성 3. lazy-init: true 로 설정되면, bean 객체가 프로젝트가 로드될 때 생성되는 것이 아닌 실제로 사용되는 시점에 생성되도록 하는 속성 ◎LgTV package polymorphism; public class LgTV implements TV{ public LgTV() { // TODO Auto-gene..
흔히들 bean 객체를 쓰면 모듈간에 결합도가 낮아져서 개발이 편리해진다는데... 그럼 결합도는 뭐고, bean을 사용하면 어떤 점이 구체적으로 좋다는 걸까? 바로 확인해보자. 우선 결합도는 정보처리기사 공부할 때 나오는 필기 & 실기에 무조건 나오는 개념이며, 쉽게 말해 어떤 모듈이 다른 모듈에 얼마나 의존하고 있는 지 정도로 나타낸 것이다. (21년 1회 실기에도 나왔지만, 틀렸...) 즉, 결합도가 높을 수록, 수정할 때 서로 얽혀있는 것들이 많아 쉽사리 건들기 힘들다는 말이다. 바로 이해되는 예제를 하나 확인해보자. 다음과 같이 SamsungTV와 LgTV 객체가 존재하며, 두 객체는 동일한 이름의 메서드를 가지고 있다. ◎SamsungTV.java package polymorphism; publ..
- await
- AsyncStorage
- 맛집
- react-native
- redux
- react
- javascript
- 인천 구월동 맛집
- 파니노구스토
- Async
- 정보보안기사 #실기 #정리
- 인천 구월동 이탈리안 맛집
- Promise
- redux-thunk
- 이탈리안 레스토랑
- Total
- Today
- Yesterday