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

使用Spring,Hibernate和LocalSessionFactoryBuilder配置sessionFactory

百里丁雨
2023-03-14
问题内容

我正在尝试sessionFactory使用spring 3.2和hibernate 4
创建bean。为此,我使用了以下代码。但问题buildSessionFactory()过时
buildSessionFactory(ServiceRegistry serviceRegistry)建议,而不是使用的javadoc。但是,我无法理解什么是 ServiceRegistry
以及如何使用buildSessionFactory(ServiceRegistry serviceRegistry)

@Configuration
public class AppConfig {

    ...


    @Bean
    public SessionFactory sessionFactory() {
    return new LocalSessionFactoryBuilder(dataSource())
        .scanPackages("com.mypackages")
        .addProperties(hibernateProperties())
        ~~.buildSessionFactory();~~

    }
}

问题答案:

ServiceRegistry接口与服务的概念有关(对于Hibernate
4是新的)。服务是为Hibernate提供各种功能的类,用户可以为它们插入替代的实现。有关详细信息,请参见此Wiki页面。

没错,buildSessionFactory()Hibernate的Configuration类中不赞成使用method,而赞成method
buildSessionFactory(ServiceRegistry serviceRegistry)。在纯Hibernate的环境(没有Spring)中,假定您将以以下方式初始化的实例ServiceRegistry

private static SessionFactory sessionFactory;
private static ServiceRegistry serviceRegistry;

private static SessionFactory configureSessionFactory() throws HibernateException {
    Configuration configuration = new Configuration();
    configuration.configure();

    serviceRegistry = new ServiceRegistryBuilder()
             .applySettings(configuration.getProperties())
             .buildServiceRegistry();

    sessionFactory = configuration.buildSessionFactory(serviceRegistry);
    return sessionFactory;
}

但是到目前为止,不推荐使用的方法buildSessionFactory()ServiceRegistry为您执行了相同的初始化。

Spring的LocalSessionFactoryBuilder类只是Hibernate的Configuration类的扩展。但是由于Spring的所有特定工作都是在重写方法中完成的,因此LocalSessionFactoryBuilder.buildSessionFactory()您不能buildSessionFactory(ServiceRegistry serviceRegistry)在Spring的环境中使用method
。没有什么可以做的buildSessionFactory(),因为完全可以完成相同的工作。因此,让我们仅在AppConfig其中注释方法,@SuppressWarnings("deprecation")并耐心等待Spring提供与Hibernate
4更好的集成。



 类似资料:
  • 我对Spring Boot是新手,但我对Spring有经验。 我有一个工作启动Spring启动项目。现在我想将它连接到Postgres DB,并能够使用常规查询。具体来说,我们经常在Spring(DAO)中编写以下类型的代码: 问:有人能告诉我在Spring Boot中做同样事情的标准方法是什么吗?要做到这一点,我需要在不同的文件中添加什么(比如所有依赖项和注释等等)。 我知道对你来说,把所有的代

  • 问题内容: 我正在尝试从使用用户名和密码登录到我的MySQL数据库服务器的未加密JDBC连接转移到使用SSL和基于证书的身份验证的连接。我在Spring MVC中使用Hibernate。我的WebAppConfig文件如下所示: 而我的属性配置文件(application.properties)如下: 我已经在/ etc / mysql / certs内部生成了正确的证书,并编辑了my.cnf以指

  • 我想请您对此提供帮助,我在中配置了一个项目,以便使用和构建一个Restful Webservice来连接数据库。 问题是我不知道如何配置控制器来执行并返回。 我已经开发了数据访问层、服务和控制器,但我不知道如何配置项目来执行:例如。 web.xml 错误: org.springframework.beans.factory.NoSuchBeanDefinitionException:未找到依赖项得

  • 问题内容: 我有一个使用Hibernate作为JPA提供程序的Spring / JPA应用程序。我已经通过以下方式在Spring中配置了C3P0数据源: 然后,我在Spring实体管理器工厂中指定了此数据源,如下所示: 但是,我最近在浏览Maven工件时注意到“ hibernate-c3p0”。这是什么?这是我需要使用的东西吗?还是我已经正确配置了它? 问题答案: hibernate-c3p0.j

  • 首先我想写:我知道为Spring Boot配置Hibernate JPA不是一个好主意,怎么说“这很愚蠢”,因为Spring Boot给了你自动配置等。好吧,我知道,但我正在自学Spring和Hibernate,我想一步一步地配置Hibernate,并注入Spring上下文。所以,我的问题是,我配置了Hibernate并将类写到配置中,它使用“persitence.xml”。@Persistenc

  • 我有这个例外。我换了版本,但想不通。我在哪里犯错误?Tomcat版本8.5 org.springframework.beans.factory.BeanCreationExcture:错误创建在ServletContext资源[/WEB-INF/Spring/appServlet/servlet-context.xml]中定义的名称为“会话工厂”的bean:调用init方法失败;嵌套异常java.