redirect url

Download Report

Transcript redirect url

Generator
부제목
Concept
• Template 기반의 Customizing가능한 generator
• 손쉬운 코딩
•
여러 종류의 코드가 Generate되어 IDE의 자동완성 기능을 이용할 수 있음.
• 매핑, validation 등 반복 작업 회피
• 효율적 코딩
•
사용성 높은 클래스, 함수 생성.
• 성능 향상 : cache 사용 등.
• Runtime Error 회피
•
각각의 변수에 대한 Getter 함수가 생성됨. 개발 편리 및 Runtime Error 제거
•
before > rs.get(“name”) , after> result.getName();
• Deploy 전에 SQL 문법 확인 가능.
•
SQL 문법 확인 및 Execution Plan을 통해 Index를 잘 활용하는 지 검사.
Application Structure
Generator Server
다국어 입력 1
개발자 그룹
다국어 입력 2
SQL 입력
Application Structure
UI
Ext Js
Geneartor
File Managent
XML config management
Output file Layer
Jaxb
out : xml
Template
out : java, javascript, etc
Output file management
Eclipse 통신
WAS
다국어 – As is
• Spring i18n
• 각각의 언어별 property 파일.
• ko.properties
hello = 안녕하세요.
• en.properties
hello = Hello
다국어 – As is의 문제점
• 언어별 싱크 문제
• en.properties 에는 있는 값이 ko. properties에는 없을 수 있음.
• 모든 언어에 대해서 직접 테스트를 해보거나 모든 파일을 열어서 서로 비교해봐야 함.
• 한국어 조사 처리 불가능
• “{0}이 올바르지 않습니다.” 라는 문장 하나를 가지고 “사용자 이름이 올바르지 않습니다.” 또는 “주소가 올
바르지 않습니다.” 와 같이 다양하게 활용할 수 없음.
• 각 메시지 별 코드 이름 및 인자 개수를 명확히 알아야 함.
• properties file
error_100 = “{0} 은 {1} 과 {2} 사이여야 합니다.
코드 명 : error_100
• java file
String[] args = {“위도” , “-90” , “90”}; //인자가 3개.
String welcome = messageSource.getMessage(“error_100” , args, Locale.getDefault());
• 서버 사이드와 클라이언트 사이드가 각각 관리해야 함.
• Spring i18n은 서버 사이드용. 클라이언트 쪽은 jquery 18n을 이용.
인자가 array 임. 즉, 치환할 인자가
몇 개 인지 정확히 알고 있어야 함.
다국어 – To be
• 다국어 관리 페이지를 통한 다국어 관리의 일원화
다국어 – How to solve
• 언어별 싱크 문제
• 한 페이지 안에서 관리. code 별로 정리가 되기 때문에 누락되면 눈에 바로 들어옮.
• 한국어 조사 처리 불가능
• “{0}[가/이] 올바르지 않습니다.” 와 같이 [받침이 없을 때 조사/ 받침이 있을 때 조사] 로
처리하게 되면, 사용자"가" 회원 “이" 와 같이 조사가 자동으로 결정됨.
• 각 메시지 별 코드 이름 및 인자 개수를 명확히 알아야 함.
• error_100 “{0} 은 {1} 과 {2} 사이여야 합니다.” 라는 메시지의 경우 인자가 3개 이므로
String welcome = I18N.getError100(“위도” , “-90” , “90”, Locale.getDefault());
함수가 생성되어 함수 이름이
정해지고 인자 개수도 정해짐
• 서버 사이드와 클라이언트 사이드가 각각 관리해야 함.
• 하나의 source로 부터 java, javascript 등 다양한 언어로 generate 됨.
다국어 – Spring 호환
• UI를 통해 입력된 메시지를 통해 Spring의 properies 파일 생성
Data 조회 – As is
• MyBatis
• sql 작성
• sql로 부터 생성되는 모델 손 코딩
• sql 결과를 모델로 매핑해주는 것은 자동으로 됨
• http://mybatis.co.uk/index.php/2010/09/mybatis-simple-andcomplete-example.html
Data 조회 – Problem
• sql query의 결과로 부터 이미 결과 ValueObject 의 형태를 알 수 있으나, ValueObject는 별도의 코딩이
필요.
•
아래의 query에서 user_id라는 String 과 height 라는 Number 값이 나올 것을 알 수 있으나, 그런 멤버 변수를 가진
클래스를 직접 짜야함.
select user_id , height from user where user_seq = ?
• Gson이나 jaxb 객체와 같은 response 모델에 매핑 시키는 작업을 코딩으로 해야 함.
•
개수가 많을 경우 꼬이거나, 누락될 가능성이 농후
• Cache를 제외한 Chaing이 어려움.
•
위경도 to 주소 문자열 변환의 경우
•
캐쉬 검색 -> DB 검색 –> 구글 검색 등 과 같은 chaing이 필요.
• query 개수가 많아지면 xml에서 관리하기가 어려움.
• ValueObject 간의 연관성 설정 어려움.
•
사용자의 자격증 정보를 조회할 경우 (사용자 : 자격증 = 1:N ) 사용자 정보를 조회한 후, 사용자의 아이디 값으로
자격증 정보를 따로 조회해야 함.
자격증에 대한 정보를 얻을 수 있는
DAO가 무엇인지 알아야 함.
User user = (new UserBO()).getUserById(1);
List<Certificate> cert = (new CerificateBO()).getCertificateById(user.getUserId());
함수의 인자가 Int이기 때문에 userId가
아닌 엉뚱한 Int가 들어가기 쉬움.
Data 조회 – To be
• UI에서 SQL입력 시 ValueObject 자동 생성
• UI를 통한Chaining 설정
Data 조회 – How to Solve
• sql query의 결과로 부터 이미 결과 ValueObject 의 형태를 알 수 있으나, ValueObject는
별도의 코딩이 필요.
• Query 로 부터 Value Object 생성
• Query 변경시 Value Object 가 자동으로 변경되기 때문에 Query 변경으로 생기는 문제는 IDE에서 에러로
처리됨. 즉, 문제 발견이 수월해짐.
• Gson이나 jaxb 객체와 같은 response 모델에 매핑 시키는 작업을 코딩으로 해야 함.
• UI를 통한 매핑. Grid 나 화살표 등으로 매핑 연결 표시
• Cache를 제외한 Chaing이 어려움.
• Query Chain, Cache Chain, Default Value Chain, Custom Chain 등 다양한 Chain 제공
• query 개수가 많아지면 xml에서 관리하기가 어려움.
• UI에서 관리되기 때문에 손쉬운 관리
• ValueObject 간의 연관성 설정 어려움.
• Value Converter 제공으로 연관성 관리 손쉽게 함.
List<Certificate> cert = UserById.get(1).getCertificate();
사용자로부터 바로 자격증 정보를 얻는 함수
Data 조회 – iBatis 호환
• UI를 통해 입력된 데이터를 이용하여, iBatis에 적합한 xml 파일
생성
Request 처리 – As is
• Classic
• 각 파라미터 별로 type casting
String userIdStr = request.getParameter(“user_id”);
// 각종 validation
int userId = Integer.parseInt(userIdStr);
• Spring
@RequestMapping(method=RequestMethod.POST)
public String info(MemberInfo info){
int userId = info.getUserId();
return “redirect url”;
}
Request 처리 – To be
• UI를 통해 설정된 값으로 Spring 코드 생성
• 번잡한 문법에 대한 이해 불필요
그외
•
Request Validation
•
•
Page Documentation
•
•
•
•
Request 설정 페이지에서 입력된 값으로
Request 설정 페이지에서 입력된 값으로
Response 설정
•
Response 설정 페이지
•
jaxb 나 gson의 형식으로 response 를 내보낼 수 있도록 설정
Page 별 테스트
•
Request 설정 페이지에서 입력된 값으로 페이지 별 request를 호출 테스트
•
파라미터값 저장 기능 제공
Request library
•
jquery , extjs 등 javascript , pure java 등의 Request library 제공
•
마치 로컬에 있는 library를 사용하는 것처럼 쉽게
UserInfo user = new UserInfo(); //서버 정보 및 페이지 정보를 포함한 클래스
user.setUserId(1); // 파라미터값 매핑
UserData data = user.send(); //서버와 통신해서 결과값을 parsing 까지 완료