Skip to content

Commit 1fc98be

Browse files
author
kmsoln
committed
[Master] HUGE UPDATE
1 parent 60f27a3 commit 1fc98be

2 files changed

Lines changed: 259 additions & 19 deletions

File tree

  • docs
    • cn/jpa/practice/dependencies
    • ru/jpa/practice/dependencies

docs/cn/jpa/practice/dependencies/jpa.md

Lines changed: 127 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
# JPA:设置依赖项
1+
# JPA:设置依赖关系
22

33
## 介绍
44

5-
本指南重点介绍了如何为具有JPA(Java持久性API)的Spring Boot项目设置依赖项。它涵盖了包含Spring Boot Starter JDBC和Spring Boot Starter Data JPA依赖项所需的必要步骤
5+
本指南侧重于为具有 JPA(Java Persistence API)的 Spring Boot 项目设置依赖关系。它涵盖了包括 Spring Boot Starter JDBC 和 Spring Boot Starter Data JPA 依赖项的必要步骤
66

77
## 目标
88

9-
本指南的目标是为Spring Boot和JPA设置必要依赖项,具体重点放在Spring Boot Starter JDBC和Spring Boot Starter Data JPA依赖项上,并提供清晰的说明
9+
本指南的目标是为 Spring Boot 和 JPA 设置必要的依赖关系,并特别关注 Spring Boot Starter JDBC 和 Spring Boot Starter Data JPA 依赖项
1010

11-
## 设置依赖项
11+
## 设置依赖关系
1212

1313
### Spring Boot Starter JDBC
1414

15-
要在Spring Boot应用程序中启用JDBC支持
15+
要在 Spring Boot 应用程序中启用 JDBC 支持
1616

1717
#### Gradle
1818

@@ -29,11 +29,11 @@ implementation "org.springframework.boot:spring-boot-starter-jdbc"
2929
</dependency>
3030
```
3131

32-
此依赖项为基于JDBC的数据访问提供了自动配置
32+
此依赖项为基于 JDBC 的数据访问提供了自动配置
3333

3434
### Spring Boot Starter Data JPA
3535

36-
要在Spring Boot应用程序中包含对JPA(Java持久性API)的支持:
36+
要在 Spring Boot 应用程序中包含对 JPA(Java Persistence API)的支持:
3737

3838
#### Gradle
3939

@@ -50,20 +50,134 @@ implementation "org.springframework.boot:spring-boot-starter-data-jpa"
5050
</dependency>
5151
```
5252

53-
此依赖项简化了设置基于JPA的存储库,并为Hibernate提供了默认配置
53+
此依赖项简化了基于 JPA 的存储库的设置,并为 Hibernate 提供了默认配置
5454

55-
### 为Spring WebMVC进行附加配置
55+
### Spring WebMVC 的附加配置
5656

57-
如果您使用Spring WebMVC,则需要添加额外的配置来设置与持久性相关的bean和属性
57+
如果您使用 Spring WebMVC,则需要添加额外的配置以设置与持久性相关的 bean 和属性
5858

5959
#### 创建持久性配置类
6060

61-
`com.example.config`包中创建一个名为`PersistenceConfig`的新类:
61+
`com.example.config` 包中创建一个名为 `PersistenceConfig` 的新类:
6262

6363
```java
64-
// 这里是java代码,因此不需要翻译
64+
package com.example.config;
65+
66+
import org.springframework.beans.factory.annotation.Value;
67+
import org.springframework.context.annotation.Bean;
68+
import org.springframework.context.annotation.Configuration;
69+
import org.springframework.context.annotation.PropertySource;
70+
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
71+
import org.springframework.jdbc.datasource.DriverManagerDataSource;
72+
import org.springframework.orm.jpa.JpaTransactionManager;
73+
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
74+
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
75+
import org.springframework.transaction.PlatformTransactionManager;
76+
import org.springframework.transaction.annotation.EnableTransactionManagement;
77+
78+
import javax.persistence.EntityManagerFactory;
79+
import javax.sql.DataSource;
80+
81+
/**
82+
* 用于设置与持久性相关的 bean 和属性的配置类。
83+
*
84+
* <p>
85+
* 该类配置了用于 JPA 的数据源、实体管理器工厂和事务管理器。
86+
* 它从外部属性文件中读取数据库连接属性。
87+
* </p>
88+
*/
89+
@Configuration
90+
@EnableTransactionManagement
91+
@EnableJpaRepositories(basePackages = "com.example.repository")
92+
@PropertySource({"classpath:application.properties"})
93+
public class PersistenceConfig {
94+
95+
@Value("${spring.datasource.driver}")
96+
private String dbDriver;
97+
98+
@Value("${spring.datasource.url}")
99+
private String dbUrl;
100+
101+
@Value("${spring.datasource.username}")
102+
private String dbUsername;
103+
104+
@Value("${spring.datasource.password}")
105+
private String dbPassword;
106+
107+
@Value("${spring.jpa.properties.hibernate.dialect}")
108+
private String hibernateDialect;
109+
110+
@Value("${spring.jpa.properties.hibernate.show_sql}")
111+
private boolean hibernateShowSql;
112+
113+
@Value("${spring.jpa.hibernate.ddl-auto}")
114+
private String hibernateHbm2ddlAuto;
115+
116+
/**
117+
* 数据源的 Bean 定义。
118+
*
119+
* <p>
120+
* 此方法使用在 application.properties 文件中定义的属性设置数据源。
121+
* </p>
122+
*
123+
* @return DataSource bean
124+
*/
125+
@Bean
126+
public DataSource dataSource() {
127+
DriverManagerDataSource dataSource = new DriverManagerDataSource();
128+
dataSource.setDriverClassName(dbDriver);
129+
dataSource.setUrl(dbUrl);
130+
dataSource.setUsername(dbUsername);
131+
dataSource.setPassword(dbPassword);
132+
return dataSource;
133+
}
134+
135+
/**
136+
* EntityManagerFactory 的 Bean 定义。
137+
*
138+
* <p>
139+
* 此方法使用配置的数据源和 Hibernate 属性设置实体管理器工厂。
140+
* </p>
141+
*
142+
* @param dataSource 数据源 bean
143+
* @return EntityManagerFactory bean
144+
*/
145+
@Bean
146+
public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource) {
147+
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
148+
em.setDataSource(dataSource);
149+
em.setPackagesToScan("com.example.entity");
150+
151+
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
152+
vendorAdapter.setDatabasePlatform(hibernateDialect);
153+
vendorAdapter.setShowSql(hibernate
154+
155+
ShowSql);
156+
vendorAdapter.setGenerateDdl("update".equalsIgnoreCase(hibernateHbm2ddlAuto));
157+
em.setJpaVendorAdapter(vendorAdapter);
158+
159+
return em;
160+
}
161+
162+
/**
163+
* Spring 事务管理器的 Bean 定义。
164+
*
165+
* <p>
166+
* 此方法使用配置的实体管理器工厂设置 JPA 的事务管理器。
167+
* </p>
168+
*
169+
* @param entityManagerFactory 实体管理器工厂 bean
170+
* @return 事务管理器 bean
171+
*/
172+
@Bean
173+
public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
174+
JpaTransactionManager txManager = new JpaTransactionManager();
175+
txManager.setEntityManagerFactory(entityManagerFactory);
176+
return txManager;
177+
}
178+
}
65179
```
66180

67181
---
68182

69-
# [下一步:创建实体](../creation/create-entity.md)
183+
# [下一步:实体创建](../creation/create-entity.md)

docs/ru/jpa/practice/dependencies/jpa.md

Lines changed: 132 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
# JPA: Настройка зависимостей
1+
# Настройка зависимостей JPA
22

33
## Введение
44

5-
Это руководство сосредотачивается на настройке зависимостей для проекта Spring Boot с JPA (Java Persistence API). Оно охватывает необходимые шаги по включению зависимостей Spring Boot Starter JDBC и Spring Boot Starter Data JPA.
5+
Это руководство сосредоточено на настройке зависимостей для проекта Spring Boot с использованием JPA (Java Persistence API). Оно охватывает необходимые шаги для включения зависимостей Spring Boot Starter JDBC и Spring Boot Starter Data JPA.
66

77
## Цель
88

9-
Цель этого руководства - предоставить четкие инструкции по настройке необходимых зависимостей для Spring Boot и JPA, с особым упором на зависимости Spring Boot Starter JDBC и Spring Boot Starter Data JPA.
9+
Цель этого руководства - предоставить четкие инструкции по настройке необходимых зависимостей для Spring Boot и JPA, с акцентом на зависимостях Spring Boot Starter JDBC и Spring Boot Starter Data JPA.
1010

1111
## Настройка зависимостей
1212

1313
### Spring Boot Starter JDBC
1414

15-
Чтобы включить поддержку JDBC в вашем приложении Spring Boot:
15+
Для включения поддержки JDBC в вашем приложении Spring Boot:
1616

1717
#### Gradle
1818

@@ -29,7 +29,7 @@ implementation "org.springframework.boot:spring-boot-starter-jdbc"
2929
</dependency>
3030
```
3131

32-
Эта зависимость обеспечивает автоматическую конфигурацию для доступа к данным на основе JDBC.
32+
Эта зависимость обеспечивает автоконфигурацию для доступа к данным на основе JDBC.
3333

3434
### Spring Boot Starter Data JPA
3535

@@ -52,6 +52,132 @@ implementation "org.springframework.boot:spring-boot-starter-data-jpa"
5252

5353
Эта зависимость упрощает настройку репозиториев на основе JPA и предоставляет конфигурации по умолчанию для Hibernate.
5454

55+
### Дополнительная конфигурация для Spring WebMVC
56+
57+
Если вы используете Spring WebMVC, вам необходимо добавить дополнительную конфигурацию для настройки бинов и свойств, связанных с сохранением состояния.
58+
59+
#### Создание класса конфигурации Persistence
60+
61+
Создайте новый класс с именем `PersistenceConfig` в пакете `com.example.config`:
62+
63+
```java
64+
package com.example.config;
65+
66+
import org.springframework.beans.factory.annotation.Value;
67+
import org.springframework.context.annotation.Bean;
68+
import org.springframework.context.annotation.Configuration;
69+
import org.springframework.context.annotation.PropertySource;
70+
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
71+
import org.springframework.jdbc.datasource.DriverManagerDataSource;
72+
import org.springframework.orm.jpa.JpaTransactionManager;
73+
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
74+
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
75+
import org.springframework.transaction.PlatformTransactionManager;
76+
import org.springframework.transaction.annotation.EnableTransactionManagement;
77+
78+
import javax.persistence.EntityManagerFactory;
79+
import javax.sql.DataSource;
80+
81+
/**
82+
* Класс конфигурации для настройки бинов и свойств, связанных с сохранением состояния.
83+
*
84+
* <p>
85+
* Этот класс настраивает источник данных, фабрику менеджеров сущностей и менеджер транзакций для JPA.
86+
* Он считывает свойства подключения к базе данных из внешнего файла свойств.
87+
* </p>
88+
*/
89+
@Configuration
90+
@EnableTransactionManagement
91+
@EnableJpaRepositories(basePackages = "com.example.repository")
92+
@PropertySource({"classpath:application.properties"})
93+
public class PersistenceConfig {
94+
95+
@Value("${spring.datasource.driver}")
96+
private String dbDriver;
97+
98+
@Value("${spring.datasource.url}")
99+
private String dbUrl;
100+
101+
@Value("${spring.datasource.username}")
102+
private String dbUsername;
103+
104+
@Value("${spring.datasource.password}")
105+
private String dbPassword;
106+
107+
@Value("${spring.jpa.properties.hibernate.dialect}")
108+
private String hibernateDialect;
109+
110+
@Value("${spring.jpa.properties.hibernate.show_sql}")
111+
private boolean hibernateShowSql;
112+
113+
@Value("${spring.jpa.hibernate.ddl-auto}")
114+
private String hibernateHbm2ddlAuto;
115+
116+
/**
117+
* Определение бина DataSource.
118+
*
119+
* <p>
120+
* Этот метод настраивает источник данных, используя свойства, определенные в файле application.properties.
121+
* </p>
122+
*
123+
* @return Бин DataSource
124+
*/
125+
@Bean
126+
public DataSource dataSource() {
127+
DriverManagerDataSource dataSource = new DriverManagerDataSource();
128+
dataSource.setDriverClassName(dbDriver);
129+
dataSource.setUrl(dbUrl);
130+
dataSource.setUsername(dbUsername);
131+
dataSource.setPassword(dbPassword);
132+
return dataSource;
133+
}
134+
135+
/**
136+
* Определение бина EntityManagerFactory.
137+
*
138+
* <p>
139+
* Этот метод настраивает фабрику менеджеров сущност
140+
141+
ей с использованием настроенного источника данных и свойств Hibernate.
142+
* </p>
143+
*
144+
* @param dataSource бин источника данных
145+
* @return Бин EntityManagerFactory
146+
*/
147+
@Bean
148+
public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource) {
149+
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
150+
em.setDataSource(dataSource);
151+
em.setPackagesToScan("com.example.entity");
152+
153+
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
154+
vendorAdapter.setDatabasePlatform(hibernateDialect);
155+
vendorAdapter.setShowSql(hibernateShowSql);
156+
vendorAdapter.setGenerateDdl("update".equalsIgnoreCase(hibernateHbm2ddlAuto));
157+
em.setJpaVendorAdapter(vendorAdapter);
158+
159+
return em;
160+
}
161+
162+
/**
163+
* Определение бина TransactionManager Spring.
164+
*
165+
* <p>
166+
* Этот метод настраивает менеджер транзакций для JPA с использованием настроенной фабрики менеджеров сущностей.
167+
* </p>
168+
*
169+
* @param entityManagerFactory бин фабрики менеджеров сущностей
170+
* @return Бин TransactionManager
171+
*/
172+
@Bean
173+
public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
174+
JpaTransactionManager txManager = new JpaTransactionManager();
175+
txManager.setEntityManagerFactory(entityManagerFactory);
176+
return txManager;
177+
}
178+
}
179+
```
180+
55181
---
56182

57-
[Далее: Создание сущностей](../creation/create-entity.md)
183+
# [Следующий: Создание сущностей](../creation/create-entity.md)

0 commit comments

Comments
 (0)