spring을 사용하다보면 db pool이 끊키는 현상이 발생하고 한다. 그럴땐 context-datasource.xml에 db pool을 만들어주는 자리에 option을 주면 해결이 가능하다. [첫번째 방법은 db pool size를 늘리는 것이다.] bean을 생성하는 자리에 initialSize, maxActive, maxIdle, minIdle, maxWait 설정을 주면 된다. 설명 : [두번쨰 방법은 db에 의미없는 sql을 주기적으로 실행시켜 주는 것이다.] validationQuery, testWhileIdle, timeBetweenEvictionRunsMillis 옵션이다. 1분에 한번씩 select 1 query를 실행시켜주는것이다. oracle일경우 select 1 from dual을..
mybatis에서 vo에 선언된 list를 파라미터로 받을 수 있다. 일단 vo에서 list컬럼을 선언해두어야한다. -VO- private List list; 리스트로 선언해둔다. -XML and id in #{arr} 리스트 컬럼에 if조건을 두고 조건이 성립할 경우 foreach문을 실행한다. foreach문 옵션들- 구분 설명 collection 전달받은 인자값 item 전달받은 인자값을 다른이름으로 대체 open 해당 구문이 시작할 때 close 해당 구문이 끝날 때 index 항목의 인덱스 값을 꺼낼 때 사용할 변수 이름을 지정 separator 구분자. 한번 이상 반복할 때 반복되는 사이에 해당 문을 넣어줌
프로젝트를 하다보면 DB 컬럼은 "_" 로 표기하고 예 ) my_name JAVA에서는 카멜케이스(CAMEL) 예 ) 낙타 표기벗 myName 이렇게 표기한다. 그래서 컬럼을 매칭시킬 경우 mybatis에서 resultMap을 사용하여 컬럼을 표시해주고나 alias를 주어서 컬럼마다 표기를 해주는데 그럴 필요가없다. sql-mapper-config.xml 에 이렇게 설정값을 주면! xml에서 불러오는 컬럼값들이 자동으로 카멜케이스로 변동되어 vo와 매핑된다.ㅋ 개꿀.ㅋ 이런 삽질 안해도됨ㅋ..
프로젝트를 진행하다가 감리분의 지적에 의해 트랜잭션을 처리해야될 부분이 생겼다. 일단 컨트롤러에 있는 코드들을 service 단으로 옮기는것으로부터 작업을 시작했다. controller 소스 -> service 옮기기 service단으로 옮기고 나니 sql부분에 프로시저를 사용하는 mapper가 있다. 프로시저는 자동commit rollback이 안되어서 프로시저 sql구문안에 commit처리를 비지니스 로직단위로 해준다. 그래서 java단에서 아무리 rollback을 해줘봤자 db에서 commit을 한 상태여서 rollback 처리가 되지 않는다. 그래서 프로시저를 service단위로 쪼갯다....그리고 service처리! ------------네 여기까지게 제 상황입니다. 이제부터 트랜잭션 설정하는 ..
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,'..