레이블이 bookmark인 게시물을 표시합니다. 모든 게시물 표시
레이블이 bookmark인 게시물을 표시합니다. 모든 게시물 표시

2016/05/10

JPA 2.1에서 LocalDate를 사용하는 방법

자바 8에서 마침내 새로운 Time API가 추가가 됐는데 JPA 2.1에서는 새 API를 사용할 수 없다.
이유는 자바 8이 나오기 전에 JPA 2.1이 먼저 릴리즈 됐기 때문인데...
그것 때문에 계속 기존 API를 사용하기도 답답한 노릇이라...
@Converter 애노테이션과 AttributeConverter 인터페이스를 활용해서 해결한다.

  • How to persist LocalDate and LocalDateTime with JPA

  • Java의 날짜와 시간 API
  • Casting in java

    instanceof를 사용한 static casting부터
    class를 사용한 dynamic casting,
    Generic과 Type을 활용한 dynamic casting,
    java 8에서 추가된 Optional과 method reference를 활용한 casting,
    Stream을 활용한 casting 까지.

  • Casting In Java 8 (And Beyond?)
  • Jackson JsonView가 작동하지 않을 때

    JsonView가 작동하지 않는 상황이 발생했다.
    참... 어쩜 이렇게 뭐가 안되는 상황은 죄다 한번씩 겪어 보는지..
    늘 그래왔듯이 검색 그리고 해결.

  • Jackson JsonView not being applied

  • 등록된 답변 보다도 답변에 추가된 Eric의 댓글이 포인트.
    Good catch regarding withView() not mutating the existing config. However, objectMapper.setConfig(objectMapper.getSerializationConfig().withView(YourView.‌​class)); works and is probably prefarable to subclassing ObjectMapper. work fine. thx.

    Java Map 객체의 동기화와 성능

    java Map 객체의 동기화에 대한 글과 Map 종류별 성능.

  • ConcurrentHashMap vs. HashTable

  • HashMap Vs. ConcurrentHashMap Vs. SynchronizedMap – How a HashMap can be Synchronized in Java

  • HashTable은 동기화 구현으로 인해서 성능이 좋지 않아 사용하지 않는 것이 정석.
    동기화를 고려한다면 SynchronizedMap 보다 ConcurrentHashMap을 사용하는게 성능에 도움이 된다는 내용.
    두 번째 블로그를 보면 차이가 참 많이 나네.

    2015/06/05

    XA, JTA, Atomikos and Spring


  • [번역]JTA와 XA, 그리고 Atomikos
  • Atomikos 3.7 - Spring3.1 - Tomcat7 Integration
  • 스프링(Spring) 3.2 + Atomikos 3.8.0 + Tomcat 7로 분산트랜젝션 구성하기
  • [Spring 3 - Transaction] JTA를 이용한 글로벌/분산 트랜잭션
  • Understanding Java EE Support
  • Atomikos Spring integration
  • JAVA 애플리케이션을 XA 구성 하기 위해서는 DBMS부터 XA 설정이 되어야 하는데, MS-SQL SERVER의 경우 XA 구성은 JDBC 드라이버에 설정 파일들이 포함되어 있다. CPU 아키텍처 별로 sqljdbc_xa.dll 파일을 구분하여 SQL SERVER INSTANCE가 설치 되어 있는 BINN 폴더로 복사를 해야하고, xa_install.sql 파일의 스크립트를 실행해서 XA user와 권한을 등록해야 한다. 또한 Windows OS에서도 설정을 해야 하는데 제어판 > 관리도구 > 구성 요소 서비스(Component Service) > 컴퓨터 >> Local DTC 속성 > 보안 탭 > XA 트랜잭션 사용 체크를 반드시 해야 한다. JDBC Connection URL을 확인 SQL-SERVER의 경우 ClassName을 com.microsoft.sqlserver.jdbc.SQLServerXADataSource라고 지정해줘야한다. 오라클도 마찬가지. XA 클래스네임을 반드시 확인하자.
  • Understanding XA Transactions
  • Spring application-context 설정
    <bean id="eslDataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close">
        <property name="uniqueResourceName" value="mssql" />
        <property name="xaDataSourceClassName" value="#{db['esl.driverClassName']}" />  
        <property name="xaProperties">
            <props>
                <prop key="user">#{db['esl.username']}</prop>
                <prop key="password">#{db['esl.password']}</prop>
                <prop key="URL">#{db['esl.url']}</prop>
            </props>
        </property>
        <property name="testQuery" value="Select 1" />
        <property name="minPoolSize" value="10" />
        <property name="maxPoolSize" value="10" />
    </bean>
    
    <bean id="AtomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close">
        <property name="forceShutdown" value="false" />
    </bean>
     
    <bean id="AtomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">
        <property name="transactionTimeout" value="300" />
    </bean>
     
    <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
        <property name="transactionManager" ref="AtomikosTransactionManager" />
        <property name="userTransaction" ref="AtomikosUserTransaction" />
    </bean>