Tag Archives: 자바

심심풀이용 게임 “타자크래프트”

사용자 삽입 이미지
이럴수가. 어쩌다가 집에서 이 소스를 찾아냈다. 대학교 1학년 자바 시간에 기말 프로젝트로 만들었던 놈이다.

자바 프로그래밍이 어렵다고 생각되어 그나마 애플릿 개발이 쉬운거 같아 개발했던 놈인데 잊고 있었던 소스를 다시 만나게 되어 반갑다.

그 당시 자신있게 발표할수 있었던 장점으로는 이런것이 있었던것 같다.

1. 저글링의 기하급수적인 발업-_-;
2. 시지탱크 정확한 폭발형 데미지(주변 저글링도 피해)
3. 기하급수적으로 받는 점수가 늘어남. 버티면 버틸수록 저글링 한마리 잡는것으로 얻는 점수가 큼
4. 라이프 포인트(빨강)
5. 뉴클리어 지원(분홍)
6. 랭킹 시스템 지원
7. 쿵쿵따 버젼이라 계속하다보면 쿵쿵따 어휘가 늘음 (옛날엔 쿵쿵따 인기였다-_-; 지금은;;)

지금 다시 그 옛날의 소스를 들여다 보고 조금 놀란것이, 난 분명히 수학을 별로 못하는 놈인데 왤케 수학함수를 많이 써서 만든것일까;;;

JAVA JDK 혹은 JRE가 없으면 실행이 안될수도 있습니다;

Spring ActiveRowMapper 사용하기

스프링의 멋진 기능들에 현혹되어있다 보면 딱 한가지 마음에 안드는것이 있다.

JDBCTemplate 클래스의 멋진기능에 흠집이라도 낼려고 작정한것 같다. 바로 SELECT시에 수많은 필드별로 값을 지정하는 RowMapper 클래스를 제작해야 한다.

이곳 저곳 구글링을 해봤지만, 달리 방법은 없는듯 하다. 하지만 무언가 풀려서는 안되는 괴물 탈옥수 처럼 스프링의 샌드박스에 잠들어있는 녀석이 있었다.

그 이름하여 바로 ActiveRowMapper !이녀석은 삽질한 소스코드를 한 한줄로 줄여버린다.

기존의 소스코드 :
[code]String query = “SELECT EMP_NAME, EMP_GRADE, EMP_DEPT, EMP_PHONE FROM EMPLOYEE”;

ParameterizedRowMapper<Employee> rowMapper = new ParameterizedRowMapper<Employee>() {

 public User mapRow(ResultSet rs, int rowNum) throws SQLException
 {
  Employee empoyee = new Employee();
   
  empoyee .setEmpName(rs.getString(“EMP_NAME”));
  empoyee .setEmpGrade(rs.getString(“EMP_GRADE”));
  empoyee .setEmpDept(rs.getString(“EMP_DEPT”));
  empoyee .setEmpPhone(rs.getString(“EMP_PHONE”));
   
  return empoyee;
 }
};
 
Employee empoyee = jdbcTemplate.queryForObject(query, rowMapper);[/code]

새로운 소스코드 :
[code]String query = “SELECT EMP_NAME, EMP_GRADE, EMP_DEPT, EMP_PHONE FROM EMPLOYEE”;

ActiveRowMapper rowMapper = new ActiveRowMapper(Employee.class);

Employee empoyee = jdbcTemplate.queryForObject(query, rowMapper);[/code]

어떤가? 매우 산뜻하게 바뀌었다. 하지만 이녀석이 정식 마엘스톰에 못올라가고 있는 이유가 있는듯 하다.

다이나믹 하지 못하다. 나름 문제점이 있는거 같다. 우선 하나 꼬집어 보자면, 관례상 DB의 필드명은 언더바가 들어가고 Java에서는 낙타등 표기법으로 표기한다.

즉 디비에는 필드명이 “EMP_NAME” 이지만 Java Bean에서는 “empName” 으로 지정해야 한다. 물론 String 형이겠죠.

Java 표준 규약에 따르면 “empName” 이라는 변수에 값을 세팅 하는 셋터의 이름은 “setEmpName”이다.

고로 ActiveRowMapper는 입력해야할 셋터를 찾아가기 위해 다음과 과정을 거친다.

1. 필드명 소문자화 : EMP_NAME → emp_name
2. 언더바를 기준으로 토큰화 : emp_name → [1] emp, [2] name
3. 나누어진 열을 병합(첫글자는 대문자로 변환) : [1] emp, [2] name → EmpName
4. 앞에 set을 붙임 : EmpName → setEmpName

고로 이것을 명심해야만 에러없는 ActiveRowMapper를 사용할수 있다.

디비 EMP_NAME == 자바 empName

끝으로 샌드박스에서 잠자고 있던 1.4 소스를 올린다.
1248502711.java