본문 바로가기

나는개발자다!!/자바 Spring

iBatis 자동 생성키 썰 PK(Primary Key)나 자동생성 값이 필요하거나 Insert전에 select가 필요한 경우에 Ibatis에서 유용하게 사용할 수 있는 기능이다.※ insert 시에 가능한 방법으로 update시(수정시)에도 사용하고 싶다면 설계 자체를 update가 아닌 insert로 짜면 된다. Oracle용 자동 생성 방법 - 오라클은 auto increament 같은 명령어로 생성이 아닌 Sequence를 생성해서 사용하는 방법으로 자동 생성 값을 만들어낸다.SELECT 시퀀스명.NEXTVAL AS ID FROM DUALinsert into 테이블(칼럼1,칼럼2)values (#id#,#파라미터#) 위의 seq를 사용하는 방법에서 trigger를 같이 사용해준다면 mysql이나 mariadb에서의 auto .. 더보기
아이바티스(iBatis)를 사용하자 썰 아이바티스는 자바쪽과 디비쪽을 연결해주는 프레임워크(그냥 맵퍼라고 할수도 있죠)중 하나이다.스프링이나 스트럿츠나 상관이 없고DAO 단에서 SQL 불러올적에 Map을 같이 넘기도록 하자. Map returnMap = new HashMap(); returnMap.put("startIndex", parm[0]); returnMap.put("endIndex", parm[1]); dao는 어디선가 선언이 되어 있겠지. rs = dao.getRecordSet("네임스페이스.쿼리이름", returnMap); 이렇게 map에 key값을 주고서 넘겨주면 ibatis내에서 r.rnum BETWEEN #startIndex# AND #endIndex# 이렇게 할적에 이름으로 비교가 가능하다. SELECT r.* FROM ( .. 더보기
아이바티스썰 조건문 실무에서 SQL문을 작성하다 보면 동적인 쿼리문 작성을 작성해야 할 때가 많이 있다.이때 지겹게 if~else if 문을 통해 아주 지저분한 소스 코드를 생성할 때가 왕왕 있게 마련이다.이때 ibatis에서는 아주 깔금하게 구현할 수 있는 방법을 제공해 준다. select * from account (acc_first_name = #firstName# acc_last_name = #lastName# ) acc_email like #emailAddress# acc_id = #id# order by acc_last_name 상황에 의존적인 위 동적 statement로 부터 각각 다른 16가지의 SQL문이 생성될 수 있다. if-else구조와 문자열 연결을 코딩하는 경우 수백라인이 필요할 수도 있다.동적 st.. 더보기
VO, DTO, Bean이라고 불리는 객체들의 값을 출력하는 썰 Lombok을 사용하시면 더 편리합니다만 롬복을 사용 안 하시거나 현 페이지에서 설명하는 방법은 모든 객체들에 적용이 가능한 방법입니다. 한마디썰~! 뭘 화면에 출력한다는거지?코딩하다보면 MyDTO my = new MyDTO(); 해서 my안의 객체들에 실제 들어있는 값을 보고 싶지만 객체 주소만 출력되는 경우를 많이 보게 된다.(toString을 구현하셨으면 나오겠지만 안 하시거나 변경할 때마다 지웠다가 다시 구현하긴 번거로운게 사실이죠) 보통 Vo, DTO, Bean이라고 불리는 Business Object는 사용할 때 getXXX, setXXX으로 캡슐화된 객체이기 떄문에 값의 확인이 어려운 경우가 초보 개발자분들에게는 여간 불편하게 느껴집니다.이러한 불편을 한방에 해결해 줄 수 있는데 해당 클래스.. 더보기
JSTL foreach 문에서의 상태값 썰 JSTL사용 시 반복문 내에서 상태값을 확인할 수 있는 변수들은 다음과 같다. ${status.current} ${status.index} ${status.count} ${status.first} ${status.last} ${status.begin} ${status.end} ${status.step} 상태값을 활용한 게시물 넘버링 예제 내림차순(전체레코드수-((현재페이지 - 1) * 블럭당 페이지수)) - 인덱스 ex) ${(pBean.totalPage-pBean.thisPage - 1) * pBean.rowPerPage)) - status.index} 오름차순((현.. 더보기
Java 프로젝트에 Sqlite 설정 썰~! SQLite는 MySql, Mariadb, Oracle과 같은 데이터베이스 관리시스템(DBMS)이지만, 서버 형태가 아닌 응용 프로그램에 넣어서 사용하는 상대적으로 가벼운 데이터 베이스이다.영어권에서는 '에스큐엘라이드' 혹은 '시퀄라이트'라고 발음한다.(왜 시퀄이라는 용어가 나오는지는 다른 썰에서 풀도록 하겠습니다.) 구글 안드로이드에 기본으로 탑재되어있는 DB이기도 합니다. 아직 프로그래밍이 익숙하지 않으신 분들은 서버 형태가 아닌 응용 프로그램(application)에 넣는다는 의미를 잘 생각해보셔야 합니다.ex) - 한마디썰이라는 사용자가 one talk app을 다운로드 받아서 내부의 sqlite에 데이터를 저장하고 - 두번째썰이라는 사용자가 one talk app을 설치한다면? : 이 두 사용자.. 더보기
RestController 사용법 썰 전통적인 Spring MVC 컨트롤러와 주요 차이점은 HTTP Response Body가 생성되는 방식입니다. 기존의 MVC 컨트롤러는 view기술을 사용하지만 Restful 웹서비스 컨트롤러(@RestController)는 객체를 반환하는 것이 주목적입니다. 객체 데이터는 JSON/XML 형식의 HTTP응답을 직접 작성하게 됩니다. @Controller + @ResponseBody를 합친 것이 @RestController라고 생각하면 됩니다.Spring MVC Rest의 Work Flow클라이언트는 URI 형식으로 웹서비스에 요청을 보낸다.요청은 Handler Mapping과 그 타입을 찾는 DispatcherServlet에 의해 인터셉트요청은 Controller에 의해 처리되고 응답은 @Respons.. 더보기
자바 유료화? 제대로 풀어보자 썰 요약정리아래의 문답은 오라클 공식 홈페이지, 국내외 개발자들이 오라클에 직접 문의한 내용들을 토대로 작성되었습니다. 개인적인 의견이 아닌 오라클의 답변을 토대로 작성되었음을 알립니다. 이곳저곳에서 확실하게 팩트체크된 내용을 기반으로 정리한 사항입니다.유료화 이슈 관련 사항은 다음의 오라클 홈페이지에 자세히 나와있습니다. [관련 링크]. 자극적인 기사 제목처럼 Java가 유료화 되는 것이 아니라 기존의 1회성 결제의 유료화 방식이 월별 결제 방식으로 변경되는 이슈와 커머셜한 기능들에 대한 유료화입니다.자바가 유료화 된다는데요? : Java의 특정 기능이 유료화 되는 부분으로 웹을 개발하는 회사에서 사용하는 기능이 대상은 아닙니다. 추후에 유료화 된 기능을 이용할 가능성은 없나요? : 네. 없습니다. 유료화.. 더보기
이클립스 최적화 썰 이클립스는 정말 좋은 툴이지만 플러그인들의 설치 등으로 사용하다보면 상당히 느려지게 된다. 불필요한 옵션 등은 끄고 설정을 바꾸면 훨씬 쾌적하게 이클립스를 사용할 수 있다. 1. eclipse.ini 수정 -vmargs -Dosgi.requiredJavaVersion=1.6 -Xverify:none -XX:+UseParallelGC -XX:-UseConcMarkSweepGC -XX:PermSize=32M -XX:MaxPermSize=128M -XX:MaxNewSize=32M -XX:NewSize=32M -Xms256m -Xmx256m 2. 소스 자동 폴딩 해제 (블록단위로 폴딩 되는 것 해제) 속성 - Java - Editor Folding에서 Enable folding 해제 3. validation 해.. 더보기
자바의 여러가지 에러 -->(세부출처 : http://www.dbtool.co.kr/) Java Error Message 정리 자료입니다.1. ERROR Exception in thread "main" java.lang.NoClassDefFoundError: 파일명발생되는 경우 클래스 파일을 찾을 수 없는 경우조 언 실행하려는 클래스 파일 이름이 제대로 되어 있는지 확인한다.또한, CLASSPATH 설정이 제대로 되어 있는지 확인하며 (도스모드에서 set명령어)만약, 되어있지 않다면 설정한다. (CLASSPATH = jdk1.3/jre/lib/rt.jar; 2-1강좌 참조)   2. ERROR cannot resolve symbolsymbol : class in(에러가 난 부분)location : class StackTest.. 더보기