728x90
728x90

Reflection 8

자바 제네릭 메소드와 리플렉션을 이용한 자동 PreparedStatement 생성 3 - Java Generic Method Reflection PreparedStatement

세번째 ResultSet 객체에서 여러개의 행(row)를 받아 객체로 생성하고 리스트 객체로 전달하는 메소드인 executeQueryList()메소드를 생성하겠습니다. ​ PreparedStatement에서 사용되는 쿼리문 SELECT MBR_ID AS id, MBR_NM AS name FROM MBR_ACCOUNT_TB LIMIT 0, 10 쿼리문처럼 조건 없이 전체를 카운트 할 수 있어 전달되는 객체가 없을 수 있습니다. ​ executeQueryList()메소드는executeQueryOne()메소드와 동일하지만 결과가 리스트 객체로 전달됩니다. ​ 데이터베이스 컨넥션 객체를 가져옵니다. Connection connection = getConnection(); createPreparedStatemen..

자바 제네릭 메소드와 리플렉션을 이용한 자동 PreparedStatement 생성 2 - Java Generic Method Reflection PreparedStatement

두번째로 ResultSet 객체에서 한개의 행(row)에 한개의 컬럼(column)를 받아 전달하는 메소드인 executeQueryOneValue()메소드를 생성하겠습니다. ​ PreparedStatement에서 사용되는 쿼리문 SELECT COUNT(MBR_ID) AS CNT FROM MBR_ACCOUNT_TB WHERE 쿼리문처럼 조건 없이 전체를 카운트 할 수 있어 전달되는 객체가 없을 수 있습니다. ​ 그래서 이전의 createPreparedStatement()메소드에서 전달되는 객체가 없는 경우를 위해 수정합니다. /** * PreparedStatement 객체를 샹성합니다. * @param connection 데이터베이스 연결 객체 * @param query 쿼리 문자열 * @param par..

자바 제네릭 메소드와 리플렉션을 이용한 자동 PreparedStatement 생성 1 - Java Generic Method Reflection PreparedStatement

PreparedStatement 자동 생성과 실행으로 DAO에서는 쿼리문만 작성하게 되었습니다. 또한 반복적인 코드를 줄임으로써 개발 시간이 단축되었습니다. ​ 이어서 PreparedStatement에서 Select 쿼리문을 처리하는 메소드를 만들어 보겠습니다. ​ Select 쿼리문도 Insert, Update, Delete 쿼리문처럼 쿼리를 실행하지만 쿼리 결과는 ResultSet 객체로 받습니다. 또한 Select 쿼리문의 결과에는 한개 또는 여러개의 행(row)이 올 수 있고 한 개의 행(row)에 한 개의 컬럼(column)만 올 수 있습니다. ​ 그래서 Select 쿼리 처리 결과에 따라 메소드를 구분하여 만들어야 합니다. 1. ResultSet 객체에서 한개의 행(row)를 받아 객체로 생성..

자바 패턴 매치와 리플렉션을 이용한 자동 PreparedStatement 생성 - Java Pattern.matcher Reflection PreparedStatement

이전 "자바 PreparedStatement CRUD"를 통해 PreparedStatement를 이용하여 CRUD(Create, Read, Update, Delete)쿼리문을 처리하였습니다. 그러나 코드를 보면 반복적인 작업이 많이 있습니다. ​ 그래서 MyBatis(마이바티스)처럼 쿼리문에 "#{}"으로 파라미터를 입력하고 전달되는 객체를 이용해 자동으로 파라미터를 처리하여 PreparedStatement를 생성하게 하겠습니다. ​ 이전에도 PreparedStatement에 "?"의 순서대로 전달되는 객체의 맴버 필드 값을 설정하였습니다. ​ PreparedStatement에서 Select 쿼리문은 executeQuery()메소드로 실행되고 ResultSet객체로 쿼리 결과를 받습니다. 그리고 Inse..

자바 동적 형(타입) 변환 - Java Dynamic Casting - cast(), 이클립스(Eclipse)

우리가 많이 사용하는 형(타입) 변환(Casting)은 정적 캐스팅입니다. UserVO userVO = (UserVO)object; 정적 캐스팅은 이미 객체(object)가 어떤 클래스인지 알고 있어야 가능합니다. ​ 상속받은 객체라면 UpCasting(업캐스팅)으로 형(타입) 변환(Casting)하여 수퍼(부모) 클래스로 캐스팅할 수 있고 반대로 DownCasting(다운캐스팅)으로 자식(서브) 클래스로 캐스팅할 수 있습니다. ​ JDK 1.5부터 캐스트 구문을 대체할 수 있게 Class에서 cast() 메서드를 지원하고 있습니다. public T cast(Object obj) { if (obj != null && !isInstance(obj)) throw new ClassCastException(ca..

자바 서블릿으로 컨트롤러 만들기(메소드 처리) 2 - Java Servlet Controller Request Mapping Dispatcher, 이클립스(Eclipse)

수정된 "requestmapping.properties"처럼 "TestRootController"클래스와 "test1"메소드를 생성합니다. /test1.do=com.home.project.test2.controller.TestRootController@test1 4. "test2" 프로젝트의 "Java Resources"에서 "src/main/java"의 "com.home.project.test2.controller"를 선택한 후 오른쪽 버튼을 클릭하여 컨텍스트 메뉴 [New > Class]를 클릭하고 "Constructors from superclass"를 선택하여 "TestRootController.java"를 생성합니다. "TestRootController"클래스에서 "TestController"클..

자바 서블릿으로 컨트롤러 만들기(메소드 처리) 1 - Java Servlet Controller Request Mapping Method Invoke, 이클립스(Eclipse)

이전에 "Request Mapping"를 통해 모든 요청(Request)에 대해 자동으로 서비스(Service Class)로 호출되어 처리되도록 처리하였습니다. 그러나 모든 요청(Request)을 처리할 때마다 새로운 서비스(Service Class)를 생성해야 하고 서비스(Service Class)는 하나의 메소드만 처리되게 되어 다양한 메소드를 만들수 없습니다. 또한 단순한 요청(Request)이나 웹 페이지 호출이라면 비효율적입니다. 그래서 요청(Request)을 그룹핑해서 하나의 컨트롤러(Controller)로 만들고 요청(Request)별로 컨트롤러(Controller)의 메소드(Method)가 호출되어 처리되게 하겠습니다. SpringFramework의 Controller과 유사한 기능으로 처..

자바 리플렉션 메서드 동적 실행 - Java Reflection Method invoke, 이클립스(Eclipse)

클래스("getClass"로 가져온 "Class")의 "getMethod"메서드는 메서드 명과 파라미터 타입 배열(Class[] parameterTypes)로 구성된 메서드를 클래스에서 찾아서 메서드 객체(java.lang.reflect.Method)를 넘겨줍니다. ​ getMethod(String name, Class... parameterTypes) or getMethod(String name) "name"은 메서드 명입니다. "parameterTypes"는 클래스(java.lang.Class)로된 구성된 배열입니다. 파라미터가 없으면 입력하지 않습니다. ​ 클래스에 ".class"를 사용하면 클래스의 패키지명과 클래스 명으로 구성된 클래스(Class)를 가져옵니다. 예를 들어, "String"에 "..

728x90
728x90