当前位置: 首页 > 知识库问答 >
问题:

使用Hibernate JPA和postgreql配置Spring Boot

井宪
2023-03-14

我对Spring Boot是新手,但我对Spring有经验。

我有一个工作启动Spring启动项目。现在我想将它连接到Postgres DB,并能够使用常规查询。具体来说,我们经常在Spring(DAO)中编写以下类型的代码:

@Autowired 
SessionFactory factory;

    @Override
    public String daoFunction1() {
        Session session = null;
        try{
            session = factory.openSession();
            Query query = session.createQuery("from Employee where employeeId=10");
            //where Employee is a model/persistance class already added
            Employee result = (Employee)query.list();
    .....//whatever else is required follows
    }

    //OR

    @Override
    public String daoFunction1() {
        Session session = null;
        try{
            session = factory.openSession();
            Query query = session.createSQLQuery("Select * from cametaschema.test");
            List<Object[]> result = query.list();
    .....//whatever else is required follows
    }

问:有人能告诉我在Spring Boot中做同样事情的标准方法是什么吗?要做到这一点,我需要在不同的文件中添加什么(比如所有依赖项和注释等等)。

我知道对你来说,把所有的代码放在这里给像我这样的汤姆·迪克和哈利会花太多的时间,但是你的回答只是用语言(说包括这里)可以让我的一天,拯救我的夜晚:)

请注意,我希望能够使用HQL查询和本机SQL查询使用同一会话。我不想使用实体管理器的HQL和会话(如上所述)本机SQL查询。

我已经在互联网上搜索了很长时间,但没有人清楚地告诉我想要得到什么(我知道可能是我找不到合适的资源,因为这是一件非常普遍的事情)。大多数教程只显示如何使用Crudepository等配置Hibernate JPA。

任何建议都会对我大有帮助

提前谢谢!!

共有2个答案

莫飞翮
2023-03-14

@尼古拉肯定会让我走上正轨,遵循标准,充分利用Spring靴。但由于受到mu组织建议的约束,我不得不做一些类似于我们在Spring所做的事情。以下是我最终如何做到这一点的。

>

  • 通过在配置中注入以下bean来获取会话工厂:

    @Bean Public SessionFactory会话工厂(@限定符(entityManagerFactory)EntityManagerFactory emf){返回emf.unwrap(SessionFactory.class);}

    将EntityScan和ComponentScan添加到配置类中

    @EntityScan(basePackages={“com.app.persistence”}@ComponentScan(basePackages={“com.app”})

    继续使用任何HQL查询,就像Spring一样:

    @自动连线会话工厂;

    @Override
    public String check() {
        Session session = null;
        try {
            session = factory.openSession();
            Query query = session.createQuery("from Test");
            List<Test> res = query.list();
            Test sing = res.get(0);
            return sing.getName();
    
        } catch (Exception e) {
            System.out.println("Exception in Dao");
            e.printStackTrace();
            throw e;
        } finally {
            if (session != null) {
                session.close();
            }
        }
    }
    

    注意:我假设其他事情,如配置DataSource和所有已经处理。

    如果我的理解或方式是错误的,任何人都可以随时纠正我。

    但这样对我来说效果很好!!:)

  • 洪梓
    2023-03-14

    只要继续写这种daoFunctionN-s,因为Spring Boot不会阻止你这样做。Spring Boot的目的是提供大量现成的功能,而无需编写大量的样板代码和配置

     类似资料:
    • Tmux 名字取自“Terminal Multiplexer”,读作“T-马克思”,是一个能够终端窗口中提供多终端会话 管理的应用,它可以在后台保持多个终端会话的运行,并在合适的时候 attach 或者 detach 会话, 以达到保持和切换会话的作用。 Tmux 的竞争对手有 GNU Screen,我没有过 Screen 的使用经验,但是根据搜索的结果 BSD 协议的 Tmux 似乎要更加自由和

    • 问题内容: 我正在使用Hibernate JPA。我下面有Oracle存储过程。 如何调用此存储过程? 问题答案: 检查这个SO问题: 首先,您定义名为本地查询的存储过程: 然后使用以下命令执行它:

    • 我有一个大型Sybase ASE C/C应用程序,我想将其迁移到Postgresql。应用程序使用的是Sybase CT库(没有什么复杂的:简单的SQL,很少批量上传等)。应用程序是使用SYBASE OCS-16在Linux上构建和运行的。 我正在尝试评估BabelFish扩展是否有助于加快迁移。 第一个挑战(从Sybsae迁移)是应用程序广泛使用多语句查询来返回多结果集,使用动态生成的Trans

    • 配置远程仓库 Gradle支持下面三种不同类型的仓库: 下图是配置不同仓库对应的Gradle API: 下面以Maven仓库来介绍,Maven仓库是Java项目中使用最为广泛的一个仓库,库文件一般是以JAR文件的形式存在,用XML(POM文件)来来描述库的元数据和它的传递依赖。所有的库文件都存储在仓库的指定位置,当你在构建脚本中声明了依赖时,这些属性用来找到库文件在仓库中的准确位置。group属性

    • 我在Postgres/Postgis中创建了一个点几何列(coordenadas),使用以下命令行: 我在tb_amostra表中有两列,LONGITUGE和LATITUDE,我需要根据经度和纬度列中的值将(lon,lat)的8位小数点创建到coordenadas列中。有什么帮助吗?提前感谢您抽出时间。

    • 本文向大家介绍Spring Boot使用和配置Druid,包括了Spring Boot使用和配置Druid的使用技巧和注意事项,需要的朋友参考一下 1、引入依赖包 2、配置application.properties 3、目前Spring Boot中默认支持的连接池有dbcp,dbcp2, tomcat, hikari三种连接池。 由于Druid暂时不在Spring Bootz中的直接支持,故需要