Skip to content

Commit 39fd569

Browse files
committed
resolve memory overflow by explicitly specifying entity classes
1 parent 95db985 commit 39fd569

3 files changed

Lines changed: 168 additions & 103 deletions

File tree

.idea/workspace.xml

Lines changed: 102 additions & 102 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/java/com/phantoms/phantomsbackend/common/config/PrimaryDataSourceConfig.java

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,22 @@
1717
import org.springframework.transaction.PlatformTransactionManager;
1818
import org.springframework.transaction.annotation.EnableTransactionManagement;
1919

20+
import java.util.Map;
21+
2022
import javax.sql.DataSource;
2123

24+
import com.phantoms.phantomsbackend.pojo.entity.primary.AuthUser;
25+
import com.phantoms.phantomsbackend.pojo.entity.primary.onebot.ChatRecord;
26+
import com.phantoms.phantomsbackend.pojo.entity.primary.ExpeditionaryTeam;
27+
import com.phantoms.phantomsbackend.pojo.entity.primary.Image;
28+
import com.phantoms.phantomsbackend.pojo.entity.primary.Message;
29+
import com.phantoms.phantomsbackend.pojo.entity.primary.Password;
30+
import com.phantoms.phantomsbackend.pojo.entity.primary.Recruitment;
31+
import com.phantoms.phantomsbackend.pojo.entity.primary.SystemConfig;
32+
import com.phantoms.phantomsbackend.pojo.entity.primary.User;
33+
import com.phantoms.phantomsbackend.pojo.entity.primary.onebot.UserMessage;
34+
import com.phantoms.phantomsbackend.pojo.entity.primary.UserProfile;
35+
2236
@Configuration
2337
@EnableTransactionManagement
2438
@EnableJpaRepositories(
@@ -94,10 +108,34 @@ public DataSource primaryDataSource() {
94108
@Bean(name = "primaryEntityManagerFactory")
95109
public LocalContainerEntityManagerFactoryBean primaryEntityManagerFactory(
96110
EntityManagerFactoryBuilder builder, @Qualifier("primaryDataSource") DataSource dataSource) {
111+
Map<String, Object> properties = new java.util.HashMap<>();
112+
// 优化内存配置:关闭所有不必要的扫描和缓存
113+
properties.put("hibernate.archive.autodetection", "none"); // 完全关闭归档自动检测
114+
properties.put("hibernate.javax.persistence.validation.mode", "none"); // 关闭Bean Validation
115+
properties.put("hibernate.cache.use_second_level_cache", "false");
116+
properties.put("hibernate.cache.use_query_cache", "false");
117+
properties.put("hibernate.generate_statistics", "false");
118+
properties.put("hibernate.auto_quote_keyword", "false");
119+
97120
return builder
98121
.dataSource(dataSource)
99-
.packages("com.phantoms.phantomsbackend.pojo.entity.primary")
122+
// .packages("com.phantoms.phantomsbackend.pojo.entity.primary")
100123
.persistenceUnit("primary")
124+
.properties(properties)
125+
// 显式指定实体类,避免扫描整个JAR文件
126+
.packages(
127+
AuthUser.class,
128+
ChatRecord.class,
129+
ExpeditionaryTeam.class,
130+
Image.class,
131+
Message.class,
132+
Password.class,
133+
Recruitment.class,
134+
SystemConfig.class,
135+
User.class,
136+
UserMessage.class,
137+
UserProfile.class
138+
)
101139
.build();
102140
}
103141

src/main/java/com/phantoms/phantomsbackend/common/config/SecondaryDataSourceConfig.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,15 @@
2020
import java.util.HashMap;
2121
import java.util.Map;
2222

23+
import com.phantoms.phantomsbackend.pojo.entity.secondary.AuthUser;
24+
import com.phantoms.phantomsbackend.pojo.entity.secondary.onebot.ChatRecord;
25+
import com.phantoms.phantomsbackend.pojo.entity.secondary.ExpeditionaryTeam;
26+
import com.phantoms.phantomsbackend.pojo.entity.secondary.Image;
27+
import com.phantoms.phantomsbackend.pojo.entity.secondary.Message;
28+
import com.phantoms.phantomsbackend.pojo.entity.secondary.Password;
29+
import com.phantoms.phantomsbackend.pojo.entity.secondary.User;
30+
import com.phantoms.phantomsbackend.pojo.entity.secondary.UserProfile;
31+
2332
@Configuration
2433
@EnableTransactionManagement
2534
@EnableJpaRepositories(
@@ -96,12 +105,30 @@ public LocalContainerEntityManagerFactoryBean secondaryEntityManagerFactory(
96105
// 为MySQL设置独立的JPA方言
97106
Map<String, Object> properties = new HashMap<>();
98107
properties.put("hibernate.dialect", "org.hibernate.dialect.MySQL8Dialect");
108+
// 优化内存配置:关闭所有不必要的扫描和缓存
109+
properties.put("hibernate.archive.autodetection", "none"); // 完全关闭归档自动检测
110+
properties.put("hibernate.javax.persistence.validation.mode", "none"); // 关闭Bean Validation
111+
properties.put("hibernate.cache.use_second_level_cache", "false");
112+
properties.put("hibernate.cache.use_query_cache", "false");
113+
properties.put("hibernate.generate_statistics", "false");
114+
properties.put("hibernate.auto_quote_keyword", "false");
99115

100116
return builder
101117
.dataSource(dataSource)
102118
.packages("com.phantoms.phantomsbackend.pojo.entity.secondary")
103119
.persistenceUnit("secondary")
104120
.properties(properties)
121+
// 显式指定实体类,避免扫描整个JAR文件
122+
.packages(
123+
AuthUser.class,
124+
ChatRecord.class,
125+
ExpeditionaryTeam.class,
126+
Image.class,
127+
Message.class,
128+
Password.class,
129+
User.class,
130+
UserProfile.class
131+
)
105132
.build();
106133
}
107134

0 commit comments

Comments
 (0)