Jpa를 사용하여 Test코드를 작성하고 실행하는 도중에 아래와같은 에러가 발생했습니다. 딱봐도 EntityManager의 persist를 호출할때 잘못된거 같습니다. 자세히 읽어보니 현재 스레드에 사용 가능한 transaction이 없다고 합니다. 알고보니 @Transactional 어노테이션을 빼먹어서 생긴 에러였습니다. Jpa는 @Transaction 단위 기반으로 작동합니다. transaction 단위에 따라 persist() 메소드를 사용해 영속성 컨텍스트에 영속화시키고 작업을 진행합니다. persist() 메소드는 영속작업을 시작한다고 선언하는 것인데 객체가 들어갔으나 가능한 transaction이 존재하지 않았기에 저런 에러를 낸것입니다. 결론 @Transaction을 잊지 말자...
equals 사용시 주의할 점에대해 알아보겠습니다. equals는 객체가 동등한지 확인하는 메서드 입니다. Object의 메서드이지만 String에서 오버라이딩하여 문자열간의 비교를 할 수 있습니다. 간단하게 "==" 연산자와의 차이를 알아보면 아래와 같습니다. equals 값을 비교 == 주소값 비교 이처럼 equals는 값을 비교할때 사용하는데요 equals 사용시 주의점에 대해 알아보겠습니다. 주의점 String equals 에서 상수를 먼저 사용 상수를 먼저 사용하여 변수가 null일 경우 예외를 피하는 것입니다. 아래는 잘못된 예시 입니다. 변수.equals("상수") if (login.username().equals("test")) { return UriConst.HOME; } return U..
JQuery를 사용해 Auto Complete를 사용하고 있었는데, ajax를 사용해서 DB정보에 맞게 가져와야 했습니다. 그래서 ajax를 사용해 구현을 했는데, Auto Complete가 동작하지 않았습니다. 저와 비슷한 문제를 만난 분들을 위해 해결과정을 글로 남겨보겠습니다. Auto Complete에 대한 자세한 글을 아니니, 해당 내용을 원하신다면 다른 곳에 자세한 설명과 구현방법이 있으니 참고 부탁드립니다. ajax를 사용한 Auto Complete Auto Complete를 위한 JQuery 입니다. $('#loginId').autocomplete({ source : function(request, response) { $.ajax({ type : 'get', url: '/auto/usern..