当前位置: 首页 > 面试题库 >

在不使用XML的情况下配置JPA / Hibernate / PostgreSQL

钱繁
2023-03-14
问题内容

我回到Java世界,并尝试使用JPA,Hibernate和PostgreSQL配置一个新的Spring Web应用程序。

我发现了许多带有各种XML配置文件的较早的示例,并且我想知道是否存在一种不依赖XML文件编写的执行该配置的首选新方法。

我需要配置的一些东西是hibernateSQL方言,驱动程序等。


问题答案:

将以下片段放入带有@Configuration和注释的类中@EnableTransactionManagement

Hibernate / JPA(编辑packagesToScan字符串):

@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
    LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
    em.setDataSource(dataSource());
    em.setPackagesToScan(new String[] { "com.XY.model" });
    JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
    em.setJpaVendorAdapter(vendorAdapter);
    em.setJpaProperties(additionalProperties());
    return em;
}

Properties additionalProperties() {
    Properties properties = new Properties();
    properties.setProperty("hibernate.hbm2ddl.auto", "update");
    properties.setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQL9Dialect");
    properties.setProperty("hibernate.show_sql", "true");
    return properties;
}

数据源(编辑用户名,密码和主机地址):

@Bean
public DataSource dataSource() {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName("org.postgresql.Driver");
    dataSource.setUrl("jdbc:postgresql://localhost:port/DB_NAME");
    dataSource.setUsername("root");
    dataSource.setPassword("");
    return dataSource;
}

交易经理:

@Bean
public PlatformTransactionManager transactionManager(EntityManagerFactory emf) {
    JpaTransactionManager transactionManager = new JpaTransactionManager();
    transactionManager.setEntityManagerFactory(emf);
    return transactionManager;
}


 类似资料:
  • 我试图学习如何在不使用Spring Boot的情况下将Spring数据JPA集成到Spring项目中。我所有的Spring配置都是通过一个. xml文件完成的。 我陷入了这个问题,搜索网络不会产生太多有用的结果,因为大多数人都在使用Spring数据JPA和Spring启动。 我试图在我的项目中实现Spring Data JPA存储库。它目前使用Hibernate的sessionFactory和Hi

  • 我正在尝试构建一个基本的REST服务,它使用Spring Security和OAuth2.0身份验证和授权进行安全保护。 我试图限制所涉及的元素,所以我不是复制粘贴依赖于Spring bean、Spring MVC等的Spring Security Oath XML配置,而是直接使用Spring Security Oauth类。 尝试从/oauth/Token获取访问令牌时遇到了一个障碍。我可能缺

  • 我正在使用Guice来连接Jetty服务器,我想用Apache Shiro添加一些安全性。 似乎Shiro需要一个ServletContext来配置,但问题是我没有;在配置时没有ServletContext(例如在ServletModule中作为留档状态)。ServletContext在GuiceServletContextListener中可用,但此时,我的注入器已经创建,因此安装Shiro模块

  • 我正在重新学习Hibernate和JPA。我正在使用Spring Boot,Gradle和Postgres为我的环境。我有一组访问Postgres数据库的域对象。两个对象不使用注释,使用一个JDBCTemplate类进行数据库操作。另一组域对象使用JPA注释。JPA对象集具有使用JPA注释映射的关系。当我运行单元测试来检查JDBC模板对象的数据库实体时,一切都很好。当我检查数据库时,我发现使用注释

  • 我正在尝试设置SpringXML配置,而不必创建进一步的。但是我经常遇到以下异常,即使我在 spring.xml: 我错过了什么?

  • 我使用下面的代码(来自这个答案)来配置要记录在WebClient请求上的头: 这很管用,但感觉有点奇怪。问题是:我是否需要像这样包含Jackson/objectMapper配置,或者是否有更简单的方法来避免Spring objectMapper配置被覆盖?