2011-08-31 2 views
4

내가 사용하고 있습니다 : 이클립스 자바 EE IDE 웹 개발자 버전 : 인디고 출시 최대 절전 모드 도구Eclipse에서 Hibernate Tools로 DAO를 생성하는 방법은 무엇입니까?

, 내가 이클립스에서 최대 절전 모드에 새로 온 사람, 그래서 난 최대 절전 모드를 구성합니다 (POJO의 주석을 생성하는 방법 나는 .xml보다 낫다고 생각한다). 를 사용하려고

:

그래서 후에 나의 POJO의와 DAO의 난이 삽입을하지만, 내 엔티티 관리자에 '널 포인트 예외'를 시작하려고 생성이는 DAO 클래스를 생성하는 도구를 최대 절전 모드하는 방법입니다 DAO 생성 :

public static void main(String[] args) { 
// TODO Auto-generated method stub 
    User user = new User(); 
    user.setEmail("[email protected]"); 
    user.setPassword("123456"); 
    user.setReputation(0); 

    DaoUser daoUser = new DaoUser(); 
    daoUser.persist(user); 
} 

DAO 생성 :

package com.example.pojo; 

// Generated 30/08/2011 20:43:29 by Hibernate Tools 3.4.0.CR1 

import javax.ejb.Stateless; 
import javax.persistence.EntityManager; 
import javax.persistence.PersistenceContext; 
import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 

/** 
* Home object for domain model class User. 
* @see com.example.pojo.User 
* @author Hibernate Tools 
*/ 
@Stateless 
public class UserHome { 

    private static final Log log = LogFactory.getLog(UserHome.class); 

    @PersistenceContext 
    private EntityManager entityManager; 

    public void persist(User transientInstance) { 
     log.debug("persisting User instance"); 
     try { 
      entityManager.persist(transientInstance); 
      log.debug("persist successful"); 
     } catch (RuntimeException re) { 
      log.error("persist failed", re); 
      throw re; 
     } 
    } 

    public void remove(User persistentInstance) { 
     log.debug("removing User instance"); 
     try { 
      entityManager.remove(persistentInstance); 
      log.debug("remove successful"); 
     } catch (RuntimeException re) { 
      log.error("remove failed", re); 
      throw re; 
     } 
    } 

    public User merge(User detachedInstance) { 
     log.debug("merging User instance"); 
     try { 
      User result = entityManager.merge(detachedInstance); 
      log.debug("merge successful"); 
      return result; 
     } catch (RuntimeException re) { 
      log.error("merge failed", re); 
      throw re; 
     } 
    } 

    public User findById(Integer id) { 
     log.debug("getting User instance with id: " + id); 
     try { 
      User instance = entityManager.find(User.class, id); 
      log.debug("get successful"); 
      return instance; 
     } catch (RuntimeException re) { 
      log.error("get failed", re); 
      throw re; 
     } 
    } 
} 

나는 내가 구성 과정에서 뭔가 잘못하고 있어야합니다 생각합니다. 클래스와 DAO를 올바르게 설정하는 방법은 무엇입니까?

답변

4

엔티티 관리자에 어떻게 주입하고 있습니까? 그 모습으로 SE에서 엔터프라이즈 애플리케이션을 실행하려고합니다.

SE에서 실행하려면이 방법이 필요합니다 (따라서 "main"방법). 지속성 엔진을 어떻게 든 부트 스트랩해야합니다.

저는 보통 엔티티 관리자에게 설정기를 제공하거나 추상 게터를 제공합니다. 거기에서 당신은 같은 것을 할 수 있습니다 : 당신은 또한 "myJDBC"을 호출 결국 어떤 지속성 단위 일치와 peristence.xml 파일이 필요합니다

_entityManagerFactory = Persistence.createEntityManagerFactory("myJDBC"); 
    _entityManager = _entityManagerFactory.createEntityManager(); 

    UserHome userHome = new UserHome(); 
    userHome.setEntityManger(_entityManager); 

.

이 정보가 도움이되기를 바랍니다.

편집 # 1

은 당신을 도울 것입니다 내 생각 예를 들어 here 있습니다. JPA, Toplink 및 MySQL이있는 helloworld입니다. MySQL 부분은 중요하지 않지만 필요할 경우 드라이버를 바꿀 수 있습니다.

편집 # 2

또한 단지 (너무 많이하지 JPA)를 최대 절전 모드로 사용하는 예를 here 있습니다. 기업 자바 :

편집 # 3

나는 기업 이클립스 툴에서 최대 절전 모드 도구의 출력이 그에 맞 생각합니다. 즉, 가지고있는 것을 가지고 EE에서 실행하는 것이 훨씬 쉽습니다. 그것은 당신이 SE에서 그것을 실행할 수 없다고 말하는 것이 아니라 조금 더 도전적입니다.

JPA없이 SE에서 최대 절전 모드를 사용할 때마다 Spring을 사용하여이를 늘릴 수 있습니다. 이로 인해로드가 크게 줄어 듭니다. 나는 당신이 그것을 작동시킬 때까지 그것에 대해 걱정하지 않을 것이지만, 일단 당신이 최대 절전 모드와 JPA에 관한 몇 가지 교훈을 배웠다면 그것을 고려해 볼 것입니다.

+0

나는 어디서나 엔티티 관리자를 삽입하고 있지 않다. 실제로는 이전에 netbeans에서 최대 절전 모드로 세션 팩토리를 사용하고 있었다. 작업이 정상적으로 작동하는지 테스트하기 위해 main 메소드를 실행 중이므로 웹 프로젝트에 삽입한다. 엔티티 관리자를 어떻게 설정해야합니까? –

+0

엔티티 관리자 인스턴스를 얻을 수있는 방법 중 하나를 보여주는 스 니펫이 포함되어 있습니다. UserHome 클래스에 setter도 추가해야합니다. – javamonkey79

+0

어떻게 persistence.xml 파일을 만들 수 있습니까? 나는 그것을 어디에 넣을 까? 그걸위한 튜토리얼을 아십니까? –

관련 문제