Как установить свойства sessionFactory с помощью application.properties

Alpcan Yıldız спросил: 13 июня 2018 в 05:38 в: spring

Я хочу подключить H2 - внедренный с помощью Spring Boot. Я хочу использовать SessionFactory. Я знаю, как делать с web.xml с applicationContext.xml и dispatcher-servlet.xml

Но когда я начинаю с spring initializr, я хочу использовать конфигурацию application.properties для подключения базы данных с SessionFactory и Session, но он терпит неудачу. Это дает мне:

потребовался компонент типа org.hibernate.SessionFactory, который не удалось найти.

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jspspring.datasource.url=jdbc:h2:~/test
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password= spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update

spring.jpa.properties.hibernate .current_session_context_class = org.springframework.orm.hibernate5.SpringSessionContext

spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.naming.physical-      
strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.h2.console.enabled=true
spring.h2.console.path=/console

Я уже загрузил необходимый hibernate.

Я просто ищу конфигурацию sessionFactory для подключения базы данных.

Мой pom.xml вот так:

  <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>        <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>        </dependency>        <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
        <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>        </dependency>        <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>        </dependency>
        <!-- https://mvnrepository.com/artifact/org.hibernate.javax.persistence/hibernate-jpa-2.1-api -->
        <dependency>
            <groupId>org.hibernate.javax.persistence</groupId>
            <artifactId>hibernate-jpa-2.1-api</artifactId>        </dependency>

My UserDaoImpl:

import com.alpcan.springproject.dao.UserDao;
import com.alpcan.springproject.model.User;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.query.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;import java.util.List;@Repository
@Transactional
public class UserDaoImpl implements UserDao {    @Autowired
    private SessionFactory sessionFactory;    public List<User> allUsers(){
        Session session = sessionFactory.getCurrentSession();
         Query query = session.createQuery("from User");
        List<User> users=query.list();
        return users;    }
}

PS: Могу ли я использовать RpaRepository вместо SessionFactory? Какая разница? Будет ли скорость работы? Какой из них лучше?

Если RpaRepository силен, я просто хочу его использовать.


1 ответ

Antoniossss ответил: 13 июня 2018 в 06:43
  <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>

Является ли это действительно предоставленным вами во время выполнения?

изменить область действия на compile

Alpcan Yıldız ответил: 13 июня 2018 в 07:00
Не работал :/

Дополнительное видео по вопросу: Как установить свойства sessionFactory с помощью application.properties

107.Spring Boot + Hibernate 5 + Mysql Example

Spring Boot JPA (Hibernate): добавляем базу данных в веб приложение на Java (простой сайт)

Spring Boot Hibernate - Creating a database and Writing application properties [Part 2]