没有JPA的Spring和Hibernate

纳博尔

对于我的新项目,我计划使用Hibernate 5和Spring 4,并且一如既往地希望分成不同的层/项目。

Gradle依赖项:

"org.springframework:spring-webmvc:4.2.1.RELEASE",
"org.springframework:spring-orm:4.2.1.RELEASE",
'org.hibernate:hibernate-core:5.0.2.Final',
'mysql:mysql-connector-java:5.1.36'

有一个API项目,其中包含User.class。我认为该用户类不得对数据库层使用任何注释。它不能指定@Table(name = "users")其他内容。它应该是带有getter和setter的简单对象。

数据库层应决定如何存储数据,这在很大程度上取决于数据库(例如MongoDB或MySQL)。

我遵循了一些有关Hibernate的教程,并获得了以下@Configuration课程

@Configuration
@ComponentScan("de.pentos.proto")
@EnableWebMvc
@EnableTransactionManagement
public class AppConfig {
    private static final Logger log = LoggerFactory.getLogger(AppConfig.class);

    private static Properties getHibernateProperties() {
        final Properties properties = new Properties();
        properties.put("hibernate.show_sql", "true");
        // properties.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
        properties.put("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");
        properties.put("hbm2ddl.auto", "create");
        return properties;
    }

    {
        log.debug("Here am I: {}");
    }

    @Bean(name = "dataSource")
    public DataSource getDataSource() {
        final DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/myschema");
        dataSource.setUsername("user");
        dataSource.setPassword("password");
        return dataSource;
    }

    @Inject
    @Bean(name = "sessionFactory")
    public SessionFactory getSessionFactory(final DataSource dataSource) {
        final LocalSessionFactoryBuilder sessionBuilder = new LocalSessionFactoryBuilder(dataSource);
        sessionBuilder.addAnnotatedClasses(User.class);
        sessionBuilder.addProperties(getHibernateProperties());
        return sessionBuilder.buildSessionFactory();
    }

    @Inject
    @Bean(name = "transactionManager")
    public HibernateTransactionManager getTransactionManager(final SessionFactory sessionFactory) {
        final HibernateTransactionManager transactionManager = new HibernateTransactionManager(
                sessionFactory);
        return transactionManager;
    }
}

除使用带注释的类外,它运行得很好。

如何将我添加hbm/user.xml到sessionBuilder?

我尝试了Configuration在某些示例中找到的类,但是buildSessionFactory()不赞成使用Method

我也尝试过这里ServiceRegistry描述的方法,但是随后丢失了我的数据源方法,并且如果没有数据源,系统将无法设置没有我,我无法使用,也不想手动打开和关闭交易。HibernateTransactionManager
HibernateTransactionManager@Transactional

目前,我正在圈子中旋转,确实需要帮助才能使其正常工作。我已经考虑过放弃Hibernate并使用我的旧MyBatis方法,但是您知道,我喜欢学习一些新知识...

Arpit Aggarwal

xml文件作为资源添加SessionFactory,如下所示:

@Inject
    @Bean(name = "sessionFactory")
    public SessionFactory getSessionFactory(final DataSource dataSource) {
        final LocalSessionFactoryBuilder sessionBuilder = new LocalSessionFactoryBuilder(dataSource);
        sessionBuilder.addResource("/path-to-/hbm/user.xml");
        sessionBuilder.addAnnotatedClasses(User.class);
        sessionBuilder.addProperties(getHibernateProperties());
        return sessionBuilder.buildSessionFactory();
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在JUnit / JPA / Hibernate / Struts和Spring集成测试中保持会话打开-没有会话或会话关闭-LazyInitialization异常

Spring,JPA和Hibernate-如何在没有并发问题的情况下增加计数器

Hibernate和Spring Data JPA有什么区别

Spring Data JPA和Hibernate

没有 Spring 和 XML 的最小 JPA 示例

无法将JPA EntityManagerHolder强制转换为带有Spring 5.1和Hibernate 5.3的Hibernate SessionHolder

没有ID的JPA / Hibernate继承

JPA Hibernate集合没有延迟加载

Spring Boot + Hibernate + JPA没有可用的事务性EntityManager

如何在JPA / Hibernate应用程序中配置连接池(没有Spring)?

Spring JPA(Hibernate)没有类型为javax.persistence.EntityManagerFactory的合格Bean

使用JPA和Hibernate加载没有N + 1笛卡尔积的递归对象图

Kotlin和JPA / Hibernate:没有`open`就不会延迟加载吗?

Hibernate 5和JPA:选择没有孩子的表,但在保存时保持持久性

使用JPA和Hibernate的Spring Security

同时使用Hibernate和Spring数据jpa?

Spring JPA和Hibernate的JPQL查询错误

Spring和hibernate集成无法打开JPA

没有Spring数据的Spring Boot JPA

带有 JPA 和 Hibernate 的复合键

Hibernate和JPA有什么区别?

无法找到具有给定名称的属性-Spring Data JPA Projections,Hibernate和BaseEntity

使用JPA + Spring时的Hibernate 4和有关延迟加载的改进

带有Myql和Spring Boot 1.5.7的Hibernate Spatial JPA无法正常工作

有没有一种方法可以使用JPA批注和Hibernate动态选择@GeneratedValue策略?

没有xml的spring + hibernate映射类

spring.jpa.properties.hibernate和spring.jpa.hibernate之间的区别

Spring上的DBCP和Hibernate,没有重新打开死连接,为什么呢?

LazyInitializationException:无法初始化代理-Spring和Hibernate中没有会话