Spring Data JPA (2): SpringBoot интегрирует H2

задняя часть база данных Spring редкоземельный

H2 — это реляционная база данных с открытым исходным кодом и чистой реализацией Java, предоставленная Томасом Мюллером.

предисловие

Эта статья поможет вам использоватьSpring Boot,Spring Data JPAинтегрированныйH2База данных памяти. больше оH2Ссылка на данные:Woohoo. Также 2database.com/HTML/tutor i…

Подготовить

  • JDK 1.8 или новее
  • Maven 3 или выше

стек технологий

  • Spring Data JPA
  • Spring Boot

Структура каталогов

https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2018/3/23/16251dbe33e90b84~tplv-t2oaga2asx-image.image
https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2018/3/23/16251dbe33e90b84~tplv-t2oaga2asx-image.image

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>jpa-example</artifactId>
        <groupId>cn.merryyou</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>h2-webconsole</artifactId>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.4.196</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

класс сущности

User
@Entity
@Table(name = "t_user")
@Data
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    private String url;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", url='" + url + '\'' +
                '}';
    }
}
  • @TableДекларируется, что этот объект сопоставляется с таблицей базы данных, через которую можно указать имя таблицы (talbe), каталог (Catalog) и схему для сущности. Эта аннотация не требуется, если система не использует значение по умолчанию (краткое имя класса объекта).

  • @IdОбъявите это свойство как первичный ключ. Значение свойства может быть создано самим должен, но Hibernate рекомендует, чтобы оно было создано Hibernate

  • @GeneratedValueЗадает стратегию генерации первичного ключа.

    1. ТАБЛИЦА: используйте таблицу для сохранения значения идентификатора
    2. ИДЕНТИФИКАЦИЯ: identitycolumn
    3. ПОСЛЕДОВАТЕЛЬНОСТЬ :последовательность
    4. АВТО: Используйте три вышеуказанных параметра в зависимости от базы данных.
  • @ColumnОбъявите отношение сопоставления между этим свойством и полем базы данных.

AddressRepository
public interface UserRepository extends JpaRepository<User, Integer> {
}

Spring Data JPAсодержит некоторые встроенныеRepository, который реализует некоторые часто используемые методы:findone,findall,saveЖдать.

application.yml
spring:
  datasource:
    url: jdbc:h2:mem:h2test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
    platform: h2
    username: sa
    password:
    driverClassName: org.h2.Driver
  jpa:
    database-platform: org.hibernate.dialect.H2Dialect
    hibernate:
      ddl-auto: update
    properties:
      hibernate:
        show_sql: true
        use_sql_comments: true
        format_sql: true
  h2:
    console:
      enabled: true
      path: /console
      settings:
        trace: false
        web-allow-others: false
logging:
  level: debug
Конфигурация подключения

существуетapplication.ymlНастроить подключение к базе данных в файле

  • spring.datasource.url=jdbc:h2:mem:h2test, настроить адрес подключения базы данных h2
  • spring.datasource.driver-class-name=org.h2.Driver, настроить драйвер JDBC
  • spring.datasource.username=sa, настроить имя пользователя базы данных
  • spring.datasource.password=, настроить пароль базы данных

После того, как вы выполните два шага настройки зависимости и соединения, вы можете использовать его в программеh2. Spring сделает это за вас автоматическиDataSourceинъекция.

Конфигурация инициализации данных

Если вам нужно инициализировать базу данных при запуске программы, вapplication.propertiesКонфигурация доступа к базе данных в файле

  • spring.datasource.schema=classpath:db/schema.sql, после такой настройки при каждом запуске программы программа будет запускатьсяresources/db/schema.sqlфайл для работы со структурой базы данных.
  • spring.datasource.data=classpath:db/data.sql, После такой настройки каждый раз при запуске программы программа будет запускатьсяresources/db/data.sqlфайлы, операции с данными в базе данных.

Эта конфигурация очень подходит для среды разработки, я буду строить структуру базы данныхsqlставитьresources/db/schema.sql,данныеsqlставитьresources/db/data.sqlсередина. Таким образом, я могу получать новую базу данных каждый раз, когда запускаю программу. Это избавляет меня от необходимости каждый раз изменять содержимое данных в целях тестирования.

Конфигурация веб-консоли h2

h2 web consloeэто база данныхGUIУправляйте приложениями просто иphpMyAdminпохожий. Когда программа запустится, она запустится автоматическиh2 web consloe. Конечно, вы также можете настроить следующим образом.

  • spring.h2.console.settings.web-allow-others=true, после этой конфигурацииh2 web consloeможно получить удаленный доступ. В противном случае доступ к нему возможен только локально.
  • spring.h2.console.path=/h2-console, с этой конфигурацией вы можете пройтиYOUR_URL/h2-consoleдоступh2 web consloe.YOUR_URLдоступ вашей программыURl.
  • spring.h2.console.enabled=true, сделайте эту конфигурацию, программа запустится при ее запускеh2 web consloe. Конечно это по умолчанию, если вы не хотите запускать программу при запускеh2 web consloe, затем установите для него значение false.
UserRepositoryTest
@SpringBootTest
@RunWith(SpringRunner.class)
@Slf4j
public class UserRepositoryTest {

    @Autowired
    private UserRepository userRepository;

    @Test
    public void saveTest() throws Exception {
        User user = new User();
        user.setName("郑龙飞");
        user.setUrl("http://merryyou.cn");
        User result = userRepository.save(user);
        log.info(result.toString());
        Assert.assertNotNull(user.getId());
    }

    @Test
    public void findOneTest() throws Exception{
        User user = userRepository.findOne(1l);
        log.info(user.toString());
        Assert.assertNotNull(user);
        Assert.assertTrue(1l==user.getId());
    }
}
h2 web consloe

https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2018/3/23/16251dbe33fafdce~tplv-t2oaga2asx-image.image
https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2018/3/23/16251dbe33fafdce~tplv-t2oaga2asx-image.image

https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2018/3/23/16251dbe3405a53c~tplv-t2oaga2asx-image.image
https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2018/3/23/16251dbe3405a53c~tplv-t2oaga2asx-image.image

загрузка кода

Скачать с моего гитхаба,GitHub.com/Longfeizhen…


https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2018/3/18/16237d0aa0954ed5~tplv-t2oaga2asx-image.image
https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2018/3/18/16237d0aa0954ed5~tplv-t2oaga2asx-image.image

🙂 🙂 🙂 Подписывайтесь на апплет WeChatкурс архитектора JavaСкучно по дороге на работу и обратно? Вы все еще читаете романы и новости? Не знаете, как улучшить свои навыки? Да ладно, вот нужные вам статьи по архитектуре Java, инженеры Java читают 1.5w+, чего вы ждете?