'JPA'에 해당되는 글 4

  1. 2009.08.09 스프링 2와 JPA 시작하기 - 에러해결
  2. 2009.08.08 Spring 2 + JPA + Tomcat
  3. 2009.07.23 Eclipse에서 OpenJPA 사용하기
  4. 2009.04.20 NetBeans - Using Java Persistence in a Web Application

스프링 2와 JPA 시작하기 - 에러해결

통합테스트 실행시 아래와 같은 에러 발생

1.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'employeeService' defined in class path resource [com/ibm/dw/spring2/dwspring2-service.xml]: Cannot resolve reference to bean 'entityManagerFactory' while setting bean property 'entityManagerFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [com/ibm/dw/spring2/dwspring2-service.xml]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: No persistence units parsed from {classpath*:META-INF/persistence.xml}
...
Caused by: java.lang.IllegalStateException: No persistence units parsed from {classpath*:META-INF/persistence.xml}

persistence.xml 이 src/META-INF/ 에 있는지 확인한다.

2.
java.lang.IllegalArgumentException: Can not set java.lang.Object field org.springframework.test.jpa.AbstractJpaTests.shadowParent to com.ibm.dw.spring2.EmployeeServiceIntegrationTest
    at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)
...
    at org.springframework.test.jpa.AbstractJpaTests.runBare(AbstractJpaTests.java:246)
...
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

스프링 라이브러리를 2.0 RC2 로 한다. 2.5 에서는 위와 같은 에러가 발생한다.
필요한 라이브러리는 toplink-essentials.jar, junit.jar, spring.jar, spring-mock.jar, commons-logging.jar, hsqldb.jar

AbstractJpaTests.java:246 (왜그런지...)

Spring 2 + JPA + Tomcat

- 스프링 2와 JPA 시작하기

* 도메인 분석을 수행함
* 비즈니스 객체와 서비스를 구현함
* 비즈니스 객체에 대한 단위 테스트
* 스프링 JPA를 사용해 비즈니스 객체에 데이터 접근 코드 쉽게 추가
* 스프링 DAO(Data Access Object)를 사용해 서비스 구현
* DB2® Express-C와 연동한 서비스에 대한 통합 테스트 코드 작성
* 사용자 인터페이스에 기반을 둔 스프링 Model-View-Controller(MVC)를 위한 컨트롤러 생성
* 사용자 인터페이스를 위한 뷰(view) 디자인
* 애플리케이션을 위한 배치 가능한 WAR 파일 생성
* 아파치 톰캣(Apache Tomcat) 서버에 애플리케이션을 구성하고 배치함

- 도메인 모델 분석
직원엔터티에서 주소를 분리한다.
오퍼레이션을 정의한다.
Employee.java 에서 setEmpid() 를 제거한다.(JPA 에 의해서 관리된다.)

- JPA 어노테이션에 대한 설명
Employee와 Address 인스턴스가 일대일 관계(@OneToOne(casecade=CascadeType.ALL)) 어노테이션으로 기술되어)를 맺고 있는 것을 기억하자. 이 어노테이션은 Employee 객체를 대상으로 하는 모든 엔티티 매니저 오퍼레이션이 그 객체와 관련된 Address 객체에도 영향을 준다는 것을 의미한다. 이 말은 RDBMS에 Employee 기록을 추가하는 어느 작업이든지 그에 대응하는 Address 기록도 만들어지는 것을 뜻한다. 이것은 RDBMS에서 종종 찾을 수 있는 연속되는 삭제 참조 무결성 개념의 확장된 개념이라 보면 되겠다.

- HSQLDB 이용, DB2 로 변경

- RDBMS로 수행하는 DAO 통합 테스트 작성하기

- SpringMVC

- 스프링 2를 위해 톰캣 준비하기
   1. 톰캣에 스프링 2 클래스로더 추가 : server/lib/spring-tomcat-weaver.jar, META-INF/context.xml
   2. 톰캣에 스프링 2 컨텍스트 로더 리스너(context loader listener) 추가
   3. 톰캣에 DB2 JDBC 드라이버 복사
   4. 톰캣을 위해 JNDI DB2 데이터소스 구성

- 참고
스프링 2와 JPA 시작하기 - 에러해결
Spring -JPA-Tomcat

[todo] 이거 설정만 바꾸면 다른 JPA 구현체로 바꿀수 있나?(2.0에서는 다른 구현체를 지원하지 않음. 2.5 는 에러남. 결국은 에러를 해결해야 하는데...)
[todo] 직접 해보기...금방될거야

Eclipse에서 OpenJPA 사용하기

- 이클립스 유로파로 웹 개발하기, Part 1: 이클립스를 위한 Java EE (한글)

- Data Source Explorer 사용하기
  • Database 접속 설정하기
  • 테이블 생성
  • SQL 실행
  • 데이터 입력하고 저장하기
- OpenJPA 설정하기

- /baseball/src/org/developerworks/baseball/Player.java

- /baseball/src/META-INF/persistence.xml
- 테스트 코드
- 필요한 라이브러리
  • openjpa-1.2.1.jar : User Libraries로 추가
  • geronimo-jpa_3.0_spec-1.0.jar : JPA 구현체
  • geronimo-jta_1.1_spec-1.1.jar
  • serp-1.13.1.jar
  • commons-collections-3.2.jar
  • commons-lang-2.1.jar
- 참고
Java Persistence API
Implementation of Java Persistence API Downloads : 이 구현체는 toplink-essentials.jar, toplink-essentials-agent.jar 임

NetBeans - Using Java Persistence in a Web Application

http://www.netbeans.org/kb/60/web/customer-book.html

NetBeans 로 Java Persistence API 사용하기


- 이미지출처는 http://www.netbeans.org