본문 바로가기

Spring @Transactional 사용시 rollback이 안될 경우 Spring @Transactional 사용시 rollback이 안될 경우 1. mysql 데이터베이스를 사용할경우 테이블 타입 확인mysql은 테이블타입이 InnoDB일때만 트랜잭션이 동작한다고한다. 테이블 타입을 확인해보고 InnoDB로 변경해준다. 2. 인터페이스 코드 유무 확인트랜잭션을 이용할 클래스들이 인터페이스를 사용하는지 확인해봐야한다.@Transactional 어노테이션 같은경우 Spring AOP를 이용하게 되는데 이 AOP는 기본적으로 Dynamic Proxy를 이용한다.Dynamic Proxy는 인터페이스 기반으로 동작하기 때문에 인터페이스가 없을경우 트랜잭션이 동작하지 않는다. 내가 테스트한 코드들이 인터페이스가 없고 클래스만 만들었었는데 이 이유 때문에 오류가 발생했던것이다. 인터.. 더보기
maven jetty setting 1단계 maven jetty 세팅 문서 org.eclipse.jetty jetty-maven-plugin 9.0.4.v20130625 10 8000 60000 /test 더보기
웹 어플리케이션 개발시 주로 사용되는 의존 프로젝트 목록 웹 어플리케이션 개발시 주로 사용되는 의존 프로젝트 목록 웹 기반의 엔터프라이즈 어플리케이션을 개발할 때에는 서블릿 API, JSP API, JTA API 등 Sun에서 정의한 API가 필요하다. 문제는 라이센스 때문에 Sun이 제공하는 API를 Maven 중앙 리포지토리에서 다운로드 받을 수 없다는 점이다. 중앙 리포지토리에 없는 라이브러리는 직접 다운로드 받아 로컬 리포지토리에 등록해주어야 하는데, 다행히 Geronimo 프로젝트에서 Sun의 주요 API를 만들어 Maven 리포지토리에 등록하고 있다. 따라서, 서블릿 API나 JSP API 가 필요한 경우 Geronimo에서 제공하는 프로젝트를 pom.xml 파일의 에 추가해주면 된다. 아래 표는 Geronimo가 제공하는 Sun의 주요 표준 API.. 더보기
JETTY 또 공부할게 생겼다. 젠장 - JETTY 더보기
jQuery - $.fn.extend(), $.extend() 1. $.extend(arg1, arg2, ...) var a = {x:10}, b = {y:11}, c = {z:12}; var d = $.extend({}, a, b, c); console.log(d.x, d.y, d.z); //10 11 12 객체 복사 기능이라고 하는데, 복사라기보다는 확장 또는 추가에 가까운 듯하다. 2. $.extend() $.extend({ myMethod2: function(){...} }); //jQuery.myMethod(); 이건 뭐라고 해야할까요... 3. $.fn.extend() $.fn.extend({ myMethod: function(){...} }); //jQuery("div").myMethod(); jQuery selector로 선택된 객체에 효과? 기능을 .. 더보기
JSONP HEAD FIRST - HTML5 /* mightygumball.js */ /* * JSON 파일의 내용을 JSONP로 가져옴 * 3초마다 업데이트 됨 * */ var lastReportTime = 0; window.onload = init; function init() { var interval = setInterval(handleRefresh, 3000); handleRefresh(); } function handleRefresh() { console.log("here"); var url = "http://gumball.wickedlysmart.com"; var newScriptElement = document.createElement("script"); newScriptElement.setAttri.. 더보기
Head First Python 서문 1장 파이썬과의 첫 만남: 누구나 리스트를 좋아한다 2장 코드 공유하기: 함수 모듈 3장 파일과 예외: 에러 처리 4장 영속성: 파일에 데이터 저장하기 5장 데이터의 이해: 데이터를 처리하라! 6장 사용자 정의 데이터 객체: 데이터와 코드의 결합 7장 웹 개발: 통합하기 8장 모바일 앱 개발: 소형 디바이스 9장 데이터 관리: 입력 처리하기 10장 웹앱 규모 확대하기: 현실에 부딪히기 11장 복잡한 문제 처리: 데이터 랭글링 부록. 못다한 이야기들: 10가지 중요한 이야기(지금까지 설명하지 않은) 더보기
드래그 방지 퍼옴 $(document).ready(function() {var t_preventDefault = function(evt) { evt.preventDefault(); };$('div').bind('dragstart', t_preventDefault).bind('selectstart', t_preventDefault);}); 더보기
Scala - apply 함수는 무슨 일을 하는 것일까? Scala 언어에서 각종 라이브러리마다 공통되는 함수가 존재하는데, apply 라는 녀석이다.apply 라는 녀석은 말 그대로 어떤 함수를 적용시킨다는 의미인데, 자세히 이야기 하면, apply 와 함께 들어오는 인자에 대해서는 어떤 함수를 적용시킨다는 뜻이다. object ApplyTest extends App { val f1 = (x: Int, y: Int) => x + y val result1 = f1.apply(2, 3) println("result1 = " + result1) println() println() val result2 = f1(2, 3) println("result2 = " + result2) println() println() } f1은 x와 y 두 정수를 받아서 합쳐서 그 값을.. 더보기
[Scala] 자바프로그래머를 위한 Scala - 작성중 object HelloWorld { def main(args: Array[String]) { println("Hello, world!") } } 첫 번째 예제object 선언은 싱글턴 객체를 생성하는데, 이는 하나의 인스턴스만을 가지는 클래스라 할 수 있다. 예제에서 main 함수는 static이 아니다. Scala에는 정적멤버(함수든 필드든)라는 개념이 아얘 존재하지 않는다. 클래스의 일부로 정적 멤버를 정의하는 대신에 Scala 프로그래머들은 정적이기 원하는 멤버들을 싱글턴 객체 안에 선언한다. import java.util.{Date, Locale} import java.text.DateFormat import java.text.DateFormat._ object FrenchDate { def ma.. 더보기