반응형 Programing/Spring23 @Transactional 알짜만 빼먹기! with JPA @Transactional 이란 @Transactional 은 Spring에서 제공하는 트랜잭션 관리 기능을 적용할 때 사용되며, 특정 메서드를 하나의 트랜잭션 단위로 지정할때 사용하는 어노테이션 입니다. 일반적으로 하나의 메서드에서 복수의 데이터 처리를 할 때 붙여서 사용합니다. 예외가 발생하면 롤백을 해서 데이터 정합성을 유지해야 하기 때문이죠. 이번 포스팅에서는 @Transactional을 사용하는데 꼭 알아야 하는 알짜만 빼먹는 시간을 갖겠습니다. Checked, Unchecked Exception @Transactional을 사용했다는 것은 어떤 예외가 발생했을 때 Rollback 처리를 하기 위해서겠죠? 그럼 어떤 Exception이 발생했을 때 Rollback 처리가 되는지를 알아야 합니다... Programing/Spring 2023. 8. 25. Java RSA 비대칭 암호화 구현 개인키, 공개키 생성 RSA 란 RSA 는 간단히, 공개키로 암호화를 하고 개인키로 복호화를 하는 암호화 알고리즘 입니다. SSL에서 가장 많이 사용되고 대부분의 인터넷 뱅킹에서 RSA-2048을 사용한다고 합니다. 자세한 내용이 궁금하신 분들은 구글링 하면 정보가 많이 나오니 참고하시기 바랍니다. 특징 위에서 얘기한 것처럼 서버에서는 공개키(Public Key)와 개인키(Private Key) 쌍을 생성하여 요청하는 Client에게 공개키를 전달 합니다. Client 는 받은 공개키를 사용해 개인정보를 암호화 한 후 server로 전달합니다. Server는 공개키로 암호화된 데이터를 개인키를 사용하여 복호화 합니다. 구현 이제 구현을 해보겠습니다. 키는 서버 어플리케이션이 실행될 때 특정 폴더에 키가 있으면 기존키를 사용하.. Programing/Spring 2023. 2. 23. Spring MVC 의 흐름과 주요 컴포넌트, 웹 서비스 흐름 Spring MVC 의 흐름과 주요 컴포넌트, 웹 서비스 흐름 이번 포스팅은 기본으로 돌아가서 Spring MVC 흐름을 보면서 주요 컴포넌트가 어떻게 동작하는지 알아보도록 하겠습니다. 브라우저에서 URL를 입력하면 OS의 인터넷 프로토콜에 설정된 DNS 서버 주소로 URL이 전달됩니다. 그럼 DNS서버는 URL주소와 매핑된 IP, PORT로 해당 Request를 전달하게됩니다. (DNS에 대한 정보는 아래의 Link를 참고하세요.) Link : https://aljjabaegi.tistory.com/567 Windows DNS 정보를 확인해보자 nslookup Windows DNS 정보를 확인해보자 nslookup DNS 란 Domain Name System 의 약자 입니다. IP주소는 외우기 힘들기 .. Programing/Spring 2022. 5. 2. Spring @Transactional 이 정상동작 하지 않는 이유 Spring @Transactional 이 정상동작 하지 않는 이유 interface 메소드에 @Transactional 어노테이션을 사용하여 처리할 경우 아래의 Link를 참고하세요. https://aljjabaegi.tistory.com/473 Spring Transaction 설정 방법. 에러발생? 롤백해. Spring Transaction 설정 방법. 에러발생? 롤백해. Transaction 처리는 쉽게 말해 DB의 상태를 바꾸는 작업단위입니다. 예를 들어 Delete 후에 Insert 를 해야 하는 로직이 있다면, 이 Delete, Insert는 하나.. aljjabaegi.tistory.com class 메소드에 @Transactional 을 줄 경우 정상동작 하지 않습니다. 이유는 트랜젝션이.. Programing/Spring 2021. 10. 14. Spring mybatis Oracle insert all 방법. 한번에 여러 행 추가 방법 list insert 방법 foreach insert Spring mybatis Oracle insert all 방법. 한번에 여러 행 추가 방법 list insert 방법 foreach insert for문을 반복하여 DB 커넥션을 반복하여 insert 하는 방법보다 속도도 빠르며 효율적인 방법입니다. QUERY INSERT ALL INTO TABLE명 (컬럼명...) VALUES (값...) INTO TABLE명 (컬럼명...) VALUES (값...) . . . INTO TABLE명 (컬럼명...) VALUES (값...) SELECT * FROM SYS.DUAL Mybatis의 foreach 를 활용하여 위와 같은 형태를 만들어 주면 됩니다. INTO WEB_MP_MENU VALUES (#{item.menuId}, #{item.groupId},'N'.. Programing/Spring 2020. 4. 6. Spring Transaction 설정 방법. 에러발생? 롤백해. Spring Transaction 설정 방법. 에러발생? 롤백해. Transaction 처리는 쉽게 말해 DB의 상태를 바꾸는 작업단위입니다. 예를 들어 Delete 후에 Insert 를 해야 하는 로직이 있다면, 이 Delete, Insert는 하나의 transaction으로 관리해야 합니다. Delete는 잘 되었는데 Insert할때 에러가 난다면? 데이터는 증발하게 되겠죠. 그래서 Delete가 잘 되고, Insert도 잘 되어야만 Commit을 해야 합니다. 아니면 Rollback을 해야하죠. 더보기 Commit : 모든 작업을 정상적으로 처리하겠다고 확정하는 명령어 Rollback : 작업 중 문제가 발생하였을때, 트랜젝션의 처리 과정에서 발생한 변경사항을 취소하고, 트랜젝션 과정을 종료. 그럼.. Programing/Spring 2019. 9. 10. Oracle mybatis foreach merge 방법 collection merge문 Oracle mybatis foreach merge 방법 collection merge문 Oracle에서 키값이 같을 경우 update, 다를 경우 insert 를 할때 사용하는 것이 merge문 입니다. merge문에 대해서는 아래의 Link를 참고하세요. Link : Mybatis insert, update null 처리, 부적합한 열 유형 처리방법 Mybatis insert, update null 처리, 부적합한 열 유형 처리방법, Oracle Merge Mybatis insert, update null 처리, 부적합한 열 유형 처리방법 Mybatis를 활용해 insert, update 시 변수의 값이 없을 시 부적합한 열 유형 (해당 변수=null) 에러가 발생합니다. 이를 처리하기 위해서는 if.. Programing/Spring 2019. 8. 13. Mybatis Mapper XML <select> 알짜만 빼먹기 Mybatis Mapper XML 알짜만 빼먹기 구분은 데이터를 조회 때 사용하는 구문입니다. 와 내에 SELECT QUERY를 작성하면 됩니다. SELECT * FROM DUAL 태그 내에는 몇가지 속성값들이 존재합니다. id는 기본 태그로 Mapper와 xml 구문을 연결해주죠. 그럼 속성에 대해 알아보겠습니다. 속성 설명 id 구문을 찾기위한 유일한 구분자 parameterType 구문에 전달되는 파라메터의 alias나 풀 클래스명 resultType 구문의 결과를 받을 alias나 풀 클래스명 resultMap resultType과 다르게 xml 내 선언해서 사용하는 커스텀 맵 flushCache 기본값은 false, true 설정 시 로컬 및 2nd 캐쉬가 삭제된다. useCache 기본값은 t.. Programing/Spring 2019. 7. 8. Spring Mybatis 멀티 database 연동 다중, 복수 데이터베이스 연동 oracle, mysql Spring Mybatis 멀티 database 연동 다중, 복수 데이터베이스 연동 oracle, mysql Spring Mybatis의 Mapper interface를 사용하는 환경에서 복수의 database 설정을 하는 방법을 알아보겠습니다. ibatis 환경에서 복수의 database 설정 방법은 아래의 Link를 참고하세요. Link : 전자정부프레임워크 egov ibatis 복수의 디비 커넥션 설정 방법 저의 경우 Oracle과 MySql 커넥션 설정을 하겠습니다. MySql의 경우 별도의 커넥터를 의존 성 주입 해주셔야 합니다. pom.xml 에 커넥터 dependency를 추가 합니다. mysql mysql-connector-java 5.1.31 이제 복수 DB의 datasource 설정을 .. Programing/Spring 2019. 3. 20. Mybatis Oracle Sequence 사용시 주의점 Mybatis Oracle Sequence 사용시 주의점 자동증가 시켜야 되는 컬럼 사용 시 Max값+1을 사용하지 않기 위해 오라클에 시퀀스를 생성하고 (Myseql은 auto_increasement) Mybatis 의 selectKey 태그를 사용하여 해당 값을 VO 객체 변수에 받아오게 됩니다. Link : mybatis selectkey 사용법 생성한 키값 리턴받기 mybatis selectkey 사용법 생성한 키값 리턴받기. mybatis selectkey 사용법 생성한 키값 리턴받기. update나 insert 시 키값을 리턴 받는 방법을 알아보도록 하겠습니다. 예제를 보도록 하죠. 1 2 3 4 5 6 7 8 9 10 .. aljjabaegi.tistory.com 위와같이 Mybatis에서 .. Programing/Spring 2019. 3. 4. Spring task scheduler Cron Expression 크론 표현식 Spring task scheduler Cron Expression 크론 표현식 이번 포스팅에서는 매번 해깔리는 크론 표현식에 대해 자세히 알아보도록 하겠습니다. 크론 표현식이 사용되는 Spring task scheduler 에 대해서는 아래의 Link를 참고하세요. Link : 주기적 클래스 실행하는 방법 자동실행 일정간격 스케쥴링 JAVA Spring task scheduler 주기적 클래스 실행하는 방법 자동실행 일정간격 스케쥴링 JAVA Spring task scheduler 주기적 클래스 실행하는 방법 자동실행 일정간격 스케쥴링 JAVA Spring task scheduler 사용자가 뭔가 명령을 내리지 않아도 클래스를 자동 실행하고 싶을 때 사용하는 것이 Sping에 task scheduler.. Programing/Spring 2018. 6. 26. Java Spring File Upload MultipartHttpServletRequest 멀티파일 업로드 방법 Java Spring File Upload MultipartHttpServletRequest 멀티파일 업로드 방법 이번 포스팅에서는 멀티로 선택된 파일을 업로드 하는 방법을 알아보도록 하겠습니다. 멀티로 선택된 파일을 서블릿으로 전달 하는 과정은 아래의 Link를 참고하세요. MultipartHttpServletRequest transferTo Link : javascript spring 멀티파일선택 업로드 ajaxForm multipart/form-data MultipartHttpServletRequest MultipartHttpServletRequest로 받은 파일을 원하는 경로에 저장하는 방법을 보겠습니다. 1 2 3 4 5 6 7 try{ String path = "C:\\TAAT\\upload\.. Programing/Spring 2018. 3. 13. 톰캣 에러/경고 메지 관련 이클립스 톰캣 에러/경고 메지 관련 이클립스에서 톰캣을 실행할때 붉은색과 흰색 메시지가 콘솔창에 표출되는 것을 보실 수 있죠. 이때 붉은색은 톰캣에서 표출하는 메시지고, 흰색은 서블릿에서 표출하는 메시지 입니다. 톰캣에서 표출하는 메시지 중에 1. registered the JDBC driver [oracle.jdbc.driver.OracleDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered. 위와 같은 '심각' 메시지가 발견이 되었는데요, "어플리케이션을 중지할 때 등록되어진 JDBC 드라이버를.. Programing/Spring 2018. 2. 12. mybatis selectkey 사용법 생성한 키값 리턴받기. mybatis selectkey 사용법 생성한 키값 리턴받기. update나 insert 시 키값을 리턴 받는 방법을 알아보도록 하겠습니다. 예제를 보도록 하죠. SELECT SID_INCIDENT_REV AS msgVersion FROM BITBUSSTOPINFODEVICE WHERE SID_NO = #{inciMsgLocation} UPDATE BITBUSSTOPINFODEVICE SET SID_INCIDENT_REV = SID_INCIDENT_REV+1 WHERE SID_NO = #{inciMsgLocation} 위의 예제를 보시면 update 태그 내에 selectKey 태그가 들어간 것을 보실 수 있습니다. 결론부터 말씀드리면 업데이트를 한 후 업데이트 된 값을 리턴받는 것인데요, 첫번째 라인부.. Programing/Spring 2018. 1. 22. 주기적 클래스 실행하는 방법 자동실행 일정간격 스케쥴링 JAVA Spring task scheduler 주기적 클래스 실행하는 방법 자동실행 일정간격 스케쥴링 JAVA Spring task scheduler 사용자가 뭔가 명령을 내리지 않아도 클래스를 자동 실행하고 싶을 때 사용하는 것이 Sping에 task scheduler 입니다. 몇시간 간격, 몇시부터 몇분간격 등등 주기적인 스케쥴링이 가능하죠. 그럼 사용법을 알아보도록 하겠습니다. 테스트 스펙부터 알아보죠. [SPEC] 전자정부 프레임워크 3.6 (Spring 4.XX) JAVA 8 TOMCAT 7 서버 실행 시 일정 간격으로 실행되어야 하는 class 는 구현되었다고 가정하겠습니다. 저의 경우에는 OpenAPI 로 특정 데이터를 받아 주기적으로 DB에 저장하는 클래스를 생성했습니다. 이제 본론으로 들어가서, dispatcher-servlet.xm.. Programing/Spring 2017. 11. 3. 이전 1 2 다음 💲 추천 글 반응형