使用Hibernate JPA和postgresql配置Spring Boot

问题描述 投票:0回答:2

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

我有一个有效的启动Spring Boot项目。现在我想将它连接到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查询。我不想为本机SQL查询使用实体管理器进行HQL和会话(如上所述)。

我一直在互联网上搜索很长时间,但没有人清楚地告诉我想要得到什么(我知道可能是我无法获得适当的资源,因为这是一个非常普遍的事情)。大多数教程只是展示使用CRUDRepository等配置Hibernate JPA。

任何建议对我都有很大的帮助

提前致谢!!

postgresql hibernate spring-boot spring-data-jpa hibernate-mapping
2个回答
0
投票

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


0
投票

@Nikolay肯定回答说要让我按照标准进行,并获得Spring Boot的最佳效果。但受到mu组织建议的约束,我必须做类似于Spring的工作。这是我最终如何实现它。

  1. 通过在配置中注入以下bean来获取Session工厂: @Bean public SessionFactory sessionFactory(@Qualifier(“entityManagerFactory”)EntityManagerFactory emf){return emf.unwrap(SessionFactory.class); }
  2. 将EntityScan和ComponentScan添加到配置类 @EntityScan(basePackages = {“com.app.persistence”} @ComponentScan(basePackages = {“com.app”})
  3. 继续使用像Spring一样的任何HQL查询: @Autowired SessionFactory工厂; @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等所有其他事情。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.