2014-03-04 2 views
0

누군가 초기화 클래스 나 그와 비슷한 정적 생성자에 코드를 넣어 데이터를 초기화합니까? 나는 이런 식으로 posibillity가 궁금합니다 :JPA에서 데이터를 초기화하는 가장 좋은 방법은 무엇입니까?

@EJB //some bean 
public someDataClassOrFacade { 
    static { 
    if(DataFacade.checkIfThereIsNoExampleData()) { 
    SomeDataClass sdc = new SomeDataClass(); 
    // (...) set data 
    DataFacade.create(sdc); 
    } 
    } 
} 

데이터를 초기화하는 방법에 대해 어떻게 생각하십니까? 나는 융통성이 낮기 때문에 (데이터 구조가 변경 될 수 있다고 가정 할 때, 특히 열 이름) Maven SQL 플러그인으로 SQL 쿼리를 사용하는 것에 대해 확신하지 못한다. 그러나 수업이로드 될 때 나는 꽤 확신하지 못합니다. 하지만 이것은 이론적 인 연습 일뿐입니다. 아마도 그보다 훨씬 나은 것을 사용하고 계신 것 같습니까? 감사.

+0

SomeDataClass '생성자입니다. – hd1

+0

좋아,하지만 어디에서 생성자를 호출해야합니까? 제 비즈니스 로직을 수행하기 전에이 클래스를 초기화해야 할 필요가 있습니까? –

답변

0

내 생각에 가능한 한 늦게 제어 된 순간에 데이터를 초기화하려고하므로 정적 초기화 프로그램은 나를 위해 아니오입니다. 그것은 내가 초기화를 수행 할 응용 프로그램의 유형에 달려 있습니다. 웹 레이어가 있다면 웹 프레임 워크의 특정 초기화 메서드 나 서블릿 컨텍스트 리스너를 사용하여 수행 할 것입니다. 단지 EJB 층이 있다면, 나는 EJB이 스레드 I 빠른 봤 쇼로 @Startup 주석 싱글에서 할 수 있습니다 내가 같은 코드를 삽입 할 위치

EJB stateless - Private members initialisation

+0

응용 프로그램 컨테이너에 연결하지 않으려면 JPA를 컨테이너 외부에서 사용할 수도 있습니다. 따라서 똑같은 자바 클래스는 데이터를 기대하는 애플리케이션에 묶이지 않아도 커맨드 라인에서 실행될 수 있습니다. – EdH

+0

나는 @Startup 주석으로 싱글 톤을 사용하는 것에 대해 옳은 것을 시도 할 것이다.하지만이 해결책을 만들기 전에 나는 이것을 체크 할 것이다. 감사. –

-1

저는 EJB 대신 Liquibase를 사용할 것입니다. 이것은 데이터베이스 관리를 위해 설계되었습니다.

+0

그건 질문이 아니야. 문제는 EJB 기술과 함께이 작업을 수행하는 방법입니다. – Gimby

+0

음, 어쩌면 내가하고 싶지만, 사용 된 기술은 불행히도 테이블에서 떨어져 있습니다. –

관련 문제