기본 콘텐츠로 건너뛰기

[javascript] basic01

Every Object of JavaScript are called by reference Function of javascipt is first class object  - primitive data type : 숫자(number), 문자열(string), 불린(boolean), null, undefined - 비교 결과가 0, null, "", false, undefined, NaN 이외 값이면 항상 참 - (undefined == null) => true - (undefined === null) => false - 변수를 선언하면 undefined 값이 할당 - OR 연산자 평가시 좌측이 참이면 좌측 피연산자의 최종값을 리턴하고 좌측이 거짓이면 우측 최종값 리턴 - AND 연산자 평가시 좌측이 거짓이면 바로 좌측 리턴하고 좌측이 참이면 우측 리턴 - 모든 함수는 Function의 프로토타입 멤버를 상속한다. - 모든 함수의 프로토타입 객체는 Object의 프로토타입 객체를 상속한다. - 모든 생성자의 인스턴스는 Object 프로토 타입 객체를 상속한다.

[JPA] deleted instance passed to merge

org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.ObjectDeletedException:   deleted instance passed to merge: 위와 같은 에러가 발생... em.remove(user)를 호출하면 user는 영속성 컨텍스트에서 제거된다. (Object is already marked for being deleted) 이후 트랜잭션을 커믹해서 플러시를 호출하면 실제 데이터베이스에 삭제 쿼리를 전달한다. 하지만 삭제된 엔티티를 한 트랜잭션내에서 다시 삭제할려고하면 해당 익셉션이 발생한다. 참조 : 자바 ORM 표준 JPA 프로그래밍

[spring batch] no-rollback-exception-classes

writer를 실행하다가 에러가 나면 해당 처리를 skip 할려고 했다. 그래서 skippable-exception-classes 에 해당 exception 정보를 입력 해주었는데 해당 exception이 발생하면 processor, writer를 재 실행한다. 이를 막기 위해(그냥 skip) no-rollback-exception-classes 에 다시 해당 exception 정보를 입력 하였지만 제대로 동작하지 않는다. spring-batch - no-rollback-exception-classes 문서를 보니 보이는 아래와 같이 적혀있다. it might not be possible to honour the hint during a write operation, so consider movingcode that throws these exceptions to a processor or validator writer 중에서는 해당 정보를 제대로 제공 못할수도 있으니, 다른 곳에서 처리하라는... 결국에는 exception을 잡아서 처리해야 할 것 같다.

[spring transaction] 정리

@Transactional public a() {    try{         b();    } catch() {         c();   }   d(); } 스프링 트랜잭션 AOP는 호출 메소드 밖으로 던져야 롤백이 동작. 스프링 트랜잭션은 default 옵션으로 unchecked Exception인 RuntimeException, Error에 대해서만 롤백 처리를 수행, 내부적으로 Exception을 catch할 경우 롤백하지 않음