프로젝트를 진행하다가 감리분의 지적에 의해 트랜잭션을 처리해야될 부분이 생겼다. 일단 컨트롤러에 있는 코드들을 service 단으로 옮기는것으로부터 작업을 시작했다. controller 소스 -> service 옮기기 service단으로 옮기고 나니 sql부분에 프로시저를 사용하는 mapper가 있다. 프로시저는 자동commit rollback이 안되어서 프로시저 sql구문안에 commit처리를 비지니스 로직단위로 해준다. 그래서 java단에서 아무리 rollback을 해줘봤자 db에서 commit을 한 상태여서 rollback 처리가 되지 않는다. 그래서 프로시저를 service단위로 쪼갯다....그리고 service처리! ------------네 여기까지게 제 상황입니다. 이제부터 트랜잭션 설정하는 ..
records. import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import java.util.zip.ZipOutputStream; public class ZipUtil { /** * 디렉토리 압축 * @param path 압축 대상 경..
-----------controller------------- File convFile = null; convFile = new file("파일 디렉토리"); Utill.saveFile("convFile","업로드 경로","저장파일명") -----------utill--------------------- public static void saveFile(File origin, String saveDirPath, String fileName) throws IOException { saveDirPath = dirPathCheck(saveDirPath); //originFilePath = dirPathCheck(originFilePath); // 원본 파일 //File origin = new File(orig..
select insert key 처럼 조회한 값이 아닌 db에서 처리해준 값을 서버에서 가져와서 처리해주고 싶을 경우가 있다. 그럴 경우 useGeneratedKeys 사용법을 알아보겠다. 이렇게 굵은 글씨를 설정해주고. keyProperty 와 keyColumn 을 맺칭시켜준다. INSERT INTO ST_USER_AUTHR ( USID , AUTHR_CLCD , CMPTNC_JGRC_CODE , BGNDE , ENDDE , CONFM_USID , CONFM_DT ) VALUES ( #{registerUsid} , #{registerAuthrClcd} , 들어갈 값 , #{registerSigunguCd} , #{registerSidoCd}|| '000' , TO_CHAR(SYSDATE,'..
메뉴를 클릭시 링크를 이동시키고 클래스에 active 속성 부여 내정보..
프로젝트 진행 중 Oracle을 이용해 함수를 만들어보았다. 일단 oracle함수의 제약조건은 하나의 값만 리턴이 가능하다는 것이다. 찾아보면 여러값을 리턴 가능할려나..? 일단 하나의 리턴값만 하면 되었기에 구현을 해보았다. 일단 문법은 CREATE OR REPLACE FUNCTION 함수이름 (파라미터) RETURN 리턴타입 IS 변수명 리턴타입; BEGIN 변수명 := null; SELECT 리턴해주고싶은컬럼 INTO 변수명 FROM WHERE ...... ; RETURN 변수명; END; 상황에 따라서 IF문을 추가 할 수 있다. 주의할 것! 파라미터 컬럼이름이랑 db컬럼이랑 동일하면 프로시저내에서 파라미터를 컬럼으로 읽을 수 있어 에러가 발생할 수 있다. 함수 파라미터에는 함수파라미터라고 알 수..
로그인 구현 중 시큐리티 를 이요하지 하지 않고 세션을 이용한 로그인 구현에서 중복로그인을 구현해보았다. login 컨트롤러에 EgovHttpSessionBindingListener listener = new EgovHttpSessionBindingListener(); request.getSession().setAttribute(loginId, listener); 로그아웃 코드에 request.getSession().invalidate(); 리스너를 담는다. listener 는 HttpSessionBindingListener를 구현한 것이다. public class EgovHttpSessionBindingListener implements HttpSessionBindingListener { /** * 사..
프로젝트를 진행 중 pnu데이터를 엑셀로 받는작업이 있었다. 엑셀로 19자리가 넘는 데이터를 받으면 지수형태로 들어와 파싱하는 과정에서 pnu데이터가 값이 다르게 받아오는 경우가 있었다. MultipartHttpServletRequest request final Map files = request.getFileMap(); MultipartFile file = null; Iterator itr = files.entrySet().iterator(); Entry entry = itr.next(); file = entry.getValue(); while (itr.hasNext()) { fileName = file.getOriginalFilename(); fileSize = file.getSize(); } con..