如何在Eclipse中使用Hibernate Tools生成DAO?

我正在使用:Eclipse Java EE IDE Web开发人员版本:靛蓝发行

使用hibernate工具,我是第一次在Eclipse中hibernate,因此我学习了如何配置hibernate并生成带有注释的POJO(我认为它比.xml更好)。

因此,在生成我的POJO和DAO之后,我尝试进行插入,但是对我的实体管理器启动了“空点异常”,这就是hibernate工具生成dao类的方式:

尝试使用生成的DAO:

public static void main(String[] args) {

// TODO Auto-generated method stub

User user = new User();

user.setEmail("valter@brainset.com.br");

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;

}

}

}

我认为我在配置过程中一定做错了。我应该如何正确设置我的班级和刀道?

回答:

您如何向实体经理注入资金?从外观上看,您正在尝试在SE中运行企业应用程序。

如果确实需要在SE中运行它(因此使用“ main”方法),则需要以某种方式引导持久性引擎。

我通常向实体管理器提供设置器或提供抽象获取器。从那里,您可以执行以下操作:

    _entityManagerFactory = Persistence.createEntityManagerFactory( "myJDBC" );

_entityManager = _entityManagerFactory.createEntityManager();

UserHome userHome = new UserHome();

userHome.setEntityManger( _entityManager );

您还需要一个peristence.xml文件,该文件的持久性单元必须与最终调用“ myJDBC”的内容匹配。

我希望这有帮助。

我认为这里有一个例子可以帮助您。这是一个包含JPA,Toplink和MySQL的helloworld,尽管MySQL部分无关紧要,但您可以根据需要切换驱动程序。

还有一个例子这里是使用Hibernate只(没有这么多JPA)。

我认为企业Eclipse工具中的hibernate工具的输出是针对于此的:企业Java。话虽这么说,要用上拥有的东西并在EE中运行它要容易得多。这并不是说您 不能

在SE中运行它,只是更具挑战性。

关于这一点,每当我在不使用JPA的SE中使用hibernate模式时,我都会使用Spring对其进行扩充-

这样可以大大减轻负载。在您开始使用它之前,我不会担心这一点,但是一旦您学习了有关hibernate和/或JPA的一些课程,我便考虑考虑一下。

以上是 如何在Eclipse中使用Hibernate Tools生成DAO? 的全部内容, 来源链接: utcz.com/qa/409802.html

回到顶部