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
Структура каталогов
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Задает стратегию генерации первичного ключа.- ТАБЛИЦА: используйте таблицу для сохранения значения идентификатора
- ИДЕНТИФИКАЦИЯ: identitycolumn
- ПОСЛЕДОВАТЕЛЬНОСТЬ :последовательность
- АВТО: Используйте три вышеуказанных параметра в зависимости от базы данных.
-
@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
загрузка кода
Скачать с моего гитхаба,GitHub.com/Longfeizhen…
🙂 🙂 🙂 Подписывайтесь на апплет WeChatкурс архитектора JavaСкучно по дороге на работу и обратно? Вы все еще читаете романы и новости? Не знаете, как улучшить свои навыки? Да ладно, вот нужные вам статьи по архитектуре Java, инженеры Java читают 1.5w+, чего вы ждете?