Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Spring应用程序中使用非Spring Hibernate JPA DAO类_Java_Spring_Hibernate_Jpa - Fatal编程技术网

Java 在Spring应用程序中使用非Spring Hibernate JPA DAO类

Java 在Spring应用程序中使用非Spring Hibernate JPA DAO类,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我有一个带有Hibernate JPA持久层的Maven项目,我想将它合并到一些Spring应用程序中,一个是web应用程序,另一个是命令行工具,但我不确定如何配置它。持久化模块包括模型类、DAO类和persistence.xml文件。我已经将Spring的EntityManagerFactory配置为使用现有的persistence.xml,但是实例化DAO类总是导致NullPointerException,因为它们似乎无法按名称定位持久化单元。可以在Spring应用程序中使用在Spring上

我有一个带有Hibernate JPA持久层的Maven项目,我想将它合并到一些Spring应用程序中,一个是web应用程序,另一个是命令行工具,但我不确定如何配置它。持久化模块包括模型类、DAO类和persistence.xml文件。我已经将Spring的EntityManagerFactory配置为使用现有的persistence.xml,但是实例化DAO类总是导致NullPointerException,因为它们似乎无法按名称定位持久化单元。可以在Spring应用程序中使用在Spring上下文之外创建的Hibernate JPA类吗

persistence.xml

application-context.xml

UserDao.java

AbstractDao.java

也许这是有用的,请参见第8.8.1部分
<persistence-unit name="myapp" transaction-type="RESOURCE_LOCAL">
    <properties>
        <property name="hibernate.archive.autodetection" value="class, hbm" />
        <property name="hibernate.hbm2ddl.auto" value="validate" />
        <property name="hibernate.show_sql" value="false" />

    </properties>
</persistence-unit>
<bean id="allProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="singleton" value="true" />
    <property name="ignoreResourceNotFound" value="true" />
    <property name="locations">
        <list>
            <value>classpath:config/db.properties</value>
            <value>classpath:config/log4j.properties</value>
        </list>
    </property>
</bean>

<context:component-scan base-package="com.company.app" />

<context:annotation-config />

<bean id="entityManagerFactory" 
      class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" />
    <property name="persistenceUnitName" value="myapp"/>
    <property name="dataSource" ref="datasource" />
    <property name="jpaVendorAdapter" ref="jpaVendorAdapter"/>
    <property name="jpaDialect" ref="jpaDialect"/>
</bean>

<bean id="jpaVendorAdapter" 
      class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
    <property name="database" value="MYSQL" />
    <property name="databasePlatform" value="${hibernate.dialect}" />
</bean>

<bean id="jpaDialect" class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
    <property name="dataSource" ref="datasource" />
    <property name="jpaDialect" ref="jpaDialect" />
</bean>

<tx:annotation-driven transaction-manager="transactionManager" />

<bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="${hibernate.connection.url}" />
    <property name="username" value="${hibernate.connection.username}" />
    <property name="password" value="${hibernate.connection.password}" />
</bean>
public class UserDao extends AbstractDao<User> {
public UserDao() {
    super("myapp");
}
// CRUD methods
public abstract class AbstractDao<T extends DataObject> {
private EntityManagerFactory emf;
private final static Logger log = LoggerFactory.getLogger(AbstractDao.class);
private final Map<String, Map<String, String>> connectionDictionaries =
    new HashMap<String, Map<String, String>>();


public AbstractDao(String dataSourceName) {
  try {
    setUpDataSource(dataSourceName);
  } catch (IOException e) {
    log.error("Unable to load: ", AbstractDataConstants.DB_PROPERTIES_FILE);
    e.printStackTrace();
  }
}
...
// Other methods