From 65d465008ebd80f5ab425fc88cc8589810fd27b9 Mon Sep 17 00:00:00 2001 From: engineerscodes Date: Sat, 31 Aug 2024 15:50:48 +0530 Subject: [PATCH 1/5] first --- .gitignore | 38 ++++++++++++++ .idea/.gitignore | 3 ++ pom.xml | 52 +++++++++++++++++++ scratch_1.md | 10 ++++ .../java/org/engineerscodes/app/Bike.java | 16 ++++++ src/main/java/org/engineerscodes/app/Car.java | 14 +++++ .../java/org/engineerscodes/app/DataLake.java | 10 ++++ .../java/org/engineerscodes/app/Main.java | 36 +++++++++++++ .../engineerscodes/app/MillionsService.java | 26 ++++++++++ .../java/org/engineerscodes/app/Repo.java | 13 +++++ .../java/org/engineerscodes/app/millions.java | 27 ++++++++++ src/main/resources/application.properties | 12 +++++ 12 files changed, 257 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 pom.xml create mode 100644 scratch_1.md create mode 100644 src/main/java/org/engineerscodes/app/Bike.java create mode 100644 src/main/java/org/engineerscodes/app/Car.java create mode 100644 src/main/java/org/engineerscodes/app/DataLake.java create mode 100644 src/main/java/org/engineerscodes/app/Main.java create mode 100644 src/main/java/org/engineerscodes/app/MillionsService.java create mode 100644 src/main/java/org/engineerscodes/app/Repo.java create mode 100644 src/main/java/org/engineerscodes/app/millions.java create mode 100644 src/main/resources/application.properties diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5ff6309 --- /dev/null +++ b/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..d936b85 --- /dev/null +++ b/pom.xml @@ -0,0 +1,52 @@ + + + 4.0.0 + + org.engineerscodes.app + DryTest + 1.0-SNAPSHOT + + + 21 + 21 + UTF-8 + + + + + org.springframework.boot + spring-boot-starter-parent + 3.3.2 + pom + + + + org.springframework.boot + spring-boot-starter-web + 3.3.2 + + + + org.springframework.boot + spring-boot-starter-data-jpa + 3.3.2 + + + + org.postgresql + postgresql + 42.7.3 + + + org.projectlombok + lombok + 1.18.32 + compile + + + + + + \ No newline at end of file diff --git a/scratch_1.md b/scratch_1.md new file mode 100644 index 0000000..df3fb68 --- /dev/null +++ b/scratch_1.md @@ -0,0 +1,10 @@ +# PLAIN SPRING BOOT HEAP IS AROUND = 21 to 25 mb + +- Ten million row (10,000,000) Table Size - *1569 MB* +- Used 7,548,047,136 B 7.5 GB +- -Xlog:gc* log of GC + +IMP : https://spring.io/blog/2015/12/10/spring-boot-memory-performance +---------------------------------------------------------------------------- +# MORE +# Query Plan Cache : https://thorben-janssen.com/hibernate-query-plan-cache/ \ No newline at end of file diff --git a/src/main/java/org/engineerscodes/app/Bike.java b/src/main/java/org/engineerscodes/app/Bike.java new file mode 100644 index 0000000..06d5e30 --- /dev/null +++ b/src/main/java/org/engineerscodes/app/Bike.java @@ -0,0 +1,16 @@ +package org.engineerscodes.app; + +public final class Bike implements DataLake, allowed { + + @Override + public void sendMsg(allowed obj) { + + } +} + +final class D { + + public void sendMsg(allowed obj) { + new Bike().sendMsg(new D()); + } +} \ No newline at end of file diff --git a/src/main/java/org/engineerscodes/app/Car.java b/src/main/java/org/engineerscodes/app/Car.java new file mode 100644 index 0000000..e236998 --- /dev/null +++ b/src/main/java/org/engineerscodes/app/Car.java @@ -0,0 +1,14 @@ +package org.engineerscodes.app; + +public final class Car implements DataLake, allowed { + + @Override + public void sendMsg(allowed obj) { + if(obj instanceof Car car){ + //ToDO + } + else{ + //TODO + } + } +} diff --git a/src/main/java/org/engineerscodes/app/DataLake.java b/src/main/java/org/engineerscodes/app/DataLake.java new file mode 100644 index 0000000..11f1c39 --- /dev/null +++ b/src/main/java/org/engineerscodes/app/DataLake.java @@ -0,0 +1,10 @@ +package org.engineerscodes.app; + +sealed interface allowed permits Car,Bike{ } + +public interface DataLake { + + + void sendMsg(allowed obj); + +} \ No newline at end of file diff --git a/src/main/java/org/engineerscodes/app/Main.java b/src/main/java/org/engineerscodes/app/Main.java new file mode 100644 index 0000000..5a327ca --- /dev/null +++ b/src/main/java/org/engineerscodes/app/Main.java @@ -0,0 +1,36 @@ +package org.engineerscodes.app; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.ApplicationRunner; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.transaction.annotation.Transactional; + +import static java.lang.StringTemplate.STR; + +@SpringBootApplication +@Slf4j +@Transactional +public final class Main { + + private final MillionsService millionsService; + + public Main(MillionsService millionsService) { + this.millionsService = millionsService; + } + + public static void main(String[] args) { + SpringApplication.run(Main.class); + } + + @Bean + @Transactional(readOnly = true) + public ApplicationRunner initializer() { + return args -> { + log.info("START : {} ,MAX {}",Runtime.getRuntime().freeMemory(),Runtime.getRuntime().maxMemory()); + millionsService.processStreaming(); + log.info("END"); + }; + } +} \ No newline at end of file diff --git a/src/main/java/org/engineerscodes/app/MillionsService.java b/src/main/java/org/engineerscodes/app/MillionsService.java new file mode 100644 index 0000000..03f4ffd --- /dev/null +++ b/src/main/java/org/engineerscodes/app/MillionsService.java @@ -0,0 +1,26 @@ +package org.engineerscodes.app; + +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import java.util.stream.Stream; + +@Service +public class MillionsService { + + private final Repo repo; + + public MillionsService(Repo repo) { + this.repo = repo; + } + + @Transactional(readOnly = true) + public void processStreaming() { + /* try (Stream stream = repo.findAllByStreaming()) { + stream.forEach(million -> { + System.out.println(million); + if(million.getId()%200000==0){System.out.println("GCCC");System.gc();} + }); + }*/ + repo.findAll(); + } +} diff --git a/src/main/java/org/engineerscodes/app/Repo.java b/src/main/java/org/engineerscodes/app/Repo.java new file mode 100644 index 0000000..0adcdd7 --- /dev/null +++ b/src/main/java/org/engineerscodes/app/Repo.java @@ -0,0 +1,13 @@ +package org.engineerscodes.app; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.transaction.annotation.Transactional; + +import java.util.stream.Stream; + +public interface Repo extends JpaRepository { + + @Query("select m from millions m") + Stream findAllByStreaming(); +} diff --git a/src/main/java/org/engineerscodes/app/millions.java b/src/main/java/org/engineerscodes/app/millions.java new file mode 100644 index 0000000..5bc2717 --- /dev/null +++ b/src/main/java/org/engineerscodes/app/millions.java @@ -0,0 +1,27 @@ +package org.engineerscodes.app; + + +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Entity +@Data +@NoArgsConstructor +public class millions { + + @Id + Long id; + + String name; + + String location; + + String cat; + + Integer value; + +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..9cb1d20 --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,12 @@ +## Spring JPA +spring.datasource.url=jdbc:postgresql://localhost:5432/BigData +spring.datasource.username=postgres +spring.datasource.password=naveen +spring.jpa.hibernate.ddl-auto=update +spring.jpa.show-sql=true +spring.jpa.properties.hibernate.format_sql=true +spring.threads.virtual.enabled=true +hibernate.dialect=org.hibernate.dialect.PostgreSQL9Dialect +hibernate.generate_statistics=true +#spring.jpa.properties.hibernate.jdbc.batch_size=30 +#spring.jpa.properties.hibernate.default_batch_fetch_size=20 From 3f525f352fb5c2e89c881ab63133f2c06f746191 Mon Sep 17 00:00:00 2001 From: engineerscodes Date: Sat, 31 Aug 2024 15:51:02 +0530 Subject: [PATCH 2/5] first --- .gitignore | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 5ff6309..afbb4f6 100644 --- a/.gitignore +++ b/.gitignore @@ -35,4 +35,7 @@ build/ .vscode/ ### Mac OS ### -.DS_Store \ No newline at end of file +.DS_Store +/.idea/encodings.xml +/.idea/misc.xml +/.idea/vcs.xml From 963c94528e56606a36c91440c178629c1b9eb6b2 Mon Sep 17 00:00:00 2001 From: NAVEEN <68312849+engineerscodes@users.noreply.github.com> Date: Sat, 31 Aug 2024 16:03:02 +0530 Subject: [PATCH 3/5] Rename scratch_1.md to README.md --- scratch_1.md => README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename scratch_1.md => README.md (96%) diff --git a/scratch_1.md b/README.md similarity index 96% rename from scratch_1.md rename to README.md index df3fb68..54a241d 100644 --- a/scratch_1.md +++ b/README.md @@ -7,4 +7,4 @@ IMP : https://spring.io/blog/2015/12/10/spring-boot-memory-performance ---------------------------------------------------------------------------- # MORE -# Query Plan Cache : https://thorben-janssen.com/hibernate-query-plan-cache/ \ No newline at end of file +# Query Plan Cache : https://thorben-janssen.com/hibernate-query-plan-cache/ From 2093f8e8fcaaf743524eb949c972a49088d7e1a9 Mon Sep 17 00:00:00 2001 From: engineerscodes Date: Sat, 31 Aug 2024 16:04:23 +0530 Subject: [PATCH 4/5] test --- src/main/java/org/engineerscodes/app/Bike.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/engineerscodes/app/Bike.java b/src/main/java/org/engineerscodes/app/Bike.java index 06d5e30..e804757 100644 --- a/src/main/java/org/engineerscodes/app/Bike.java +++ b/src/main/java/org/engineerscodes/app/Bike.java @@ -10,7 +10,8 @@ public void sendMsg(allowed obj) { final class D { - public void sendMsg(allowed obj) { + /* public void sendMsg(allowed obj) { new Bike().sendMsg(new D()); } + */ } \ No newline at end of file From 8d621710a3c71e5c9f02963710480640509ba67b Mon Sep 17 00:00:00 2001 From: engineerscodes Date: Wed, 25 Sep 2024 21:40:40 +0530 Subject: [PATCH 5/5] flex --- pom.xml | 33 ++++++++-- .../org/engineerscodes/app/Controller.java | 30 +++++++++ .../java/org/engineerscodes/app/DbConfig.java | 64 +++++++++++++++++++ .../java/org/engineerscodes/app/Main.java | 26 ++++---- .../engineerscodes/app/MillionsService.java | 37 ++++++----- .../org/engineerscodes/app/R2dbcConfig.java | 48 ++++++++++++++ .../engineerscodes/app/{ => jpa}/Repo.java | 5 +- .../app/{ => jpa}/millions.java | 6 +- src/main/resources/application.properties | 17 +++-- 9 files changed, 223 insertions(+), 43 deletions(-) create mode 100644 src/main/java/org/engineerscodes/app/Controller.java create mode 100644 src/main/java/org/engineerscodes/app/DbConfig.java create mode 100644 src/main/java/org/engineerscodes/app/R2dbcConfig.java rename src/main/java/org/engineerscodes/app/{ => jpa}/Repo.java (75%) rename src/main/java/org/engineerscodes/app/{ => jpa}/millions.java (75%) diff --git a/pom.xml b/pom.xml index d936b85..c5ffd1c 100644 --- a/pom.xml +++ b/pom.xml @@ -13,16 +13,15 @@ 21 UTF-8 + + org.springframework.boot + spring-boot-starter-parent + 3.3.2 + - - org.springframework.boot - spring-boot-starter-parent - 3.3.2 - pom - - + org.springframework.boot spring-boot-starter-web 3.3.2 @@ -39,6 +38,7 @@ postgresql 42.7.3 + org.projectlombok lombok @@ -46,6 +46,25 @@ compile + + org.springframework.boot + spring-boot-starter-webflux + + + + org.springframework.boot + spring-boot-starter-data-r2dbc + + + jakarta.persistence + jakarta.persistence-api + + + + org.postgresql + r2dbc-postgresql + 1.0.5.RELEASE + diff --git a/src/main/java/org/engineerscodes/app/Controller.java b/src/main/java/org/engineerscodes/app/Controller.java new file mode 100644 index 0000000..8218302 --- /dev/null +++ b/src/main/java/org/engineerscodes/app/Controller.java @@ -0,0 +1,30 @@ +package org.engineerscodes.app; + +import lombok.extern.slf4j.Slf4j; +import org.engineerscodes.app.jpa.millions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import reactor.core.publisher.Flux; +import reactor.core.scheduler.Scheduler; +import reactor.core.scheduler.Schedulers; + +@RestController +@RequestMapping("DryTest") +@Slf4j +public class Controller { + + @Autowired + MillionsService millionsService; + + @GetMapping(produces = MediaType.TEXT_EVENT_STREAM_VALUE) + public Flux get(){ + log.info("START"); + return millionsService.processStreaming().take(1_000_000).publishOn(Schedulers.parallel()) + .onBackpressureBuffer() + .doOnComplete(()->log.info("OVER")); + } + +} diff --git a/src/main/java/org/engineerscodes/app/DbConfig.java b/src/main/java/org/engineerscodes/app/DbConfig.java new file mode 100644 index 0000000..bbb030a --- /dev/null +++ b/src/main/java/org/engineerscodes/app/DbConfig.java @@ -0,0 +1,64 @@ +package org.engineerscodes.app; + +import java.util.HashMap; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.jdbc.DataSourceBuilder; +import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.orm.jpa.JpaTransactionManager; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +import jakarta.persistence.EntityManagerFactory; + +@Configuration +@EnableJpaRepositories( + entityManagerFactoryRef = "db1EntityManagerFactory", + transactionManagerRef = "db1TransactionManager", + basePackages = { "org.engineerscodes.app.jpa" }) +@EnableTransactionManagement +public class DbConfig { + + + @Primary + @Bean(name = "dataSource1") + DataSource dataSource() { + return DataSourceBuilder.create() + .url("jdbc:postgresql://localhost:5432/BigData") + .username("postgres") + .password("naveen") + .build(); + } + + @Primary + @Bean(name = "db1EntityManagerFactory") + LocalContainerEntityManagerFactoryBean db1EntityManagerFactory(final EntityManagerFactoryBuilder builder, + @Qualifier("dataSource1") DataSource dataSource) { + + final HashMap properties = new HashMap<>(); + properties.put("hibernate.hbm2ddl.auto", "update"); + properties.put("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect"); + + return builder.dataSource(dataSource) + .properties(properties) + .packages("org.engineerscodes.app.jpa") + .build(); + } + + @Primary + @Bean(name = "db1TransactionManager") + PlatformTransactionManager db1TransactionManager(@Qualifier("db1EntityManagerFactory") final EntityManagerFactory entityManagerFactory) { + return new JpaTransactionManager(entityManagerFactory); + } + +} + diff --git a/src/main/java/org/engineerscodes/app/Main.java b/src/main/java/org/engineerscodes/app/Main.java index 5a327ca..5f888b8 100644 --- a/src/main/java/org/engineerscodes/app/Main.java +++ b/src/main/java/org/engineerscodes/app/Main.java @@ -1,35 +1,37 @@ package org.engineerscodes.app; import lombok.extern.slf4j.Slf4j; -import org.springframework.boot.ApplicationRunner; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration; +import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration; import org.springframework.context.annotation.Bean; -import org.springframework.transaction.annotation.Transactional; +import org.springframework.data.r2dbc.config.EnableR2dbcAuditing; +import org.springframework.data.r2dbc.repository.config.EnableR2dbcRepositories; -import static java.lang.StringTemplate.STR; @SpringBootApplication @Slf4j -@Transactional -public final class Main { +@EnableR2dbcAuditing +public class Main { - private final MillionsService millionsService; + @Autowired + private MillionsService millionsService; - public Main(MillionsService millionsService) { - this.millionsService = millionsService; - } public static void main(String[] args) { SpringApplication.run(Main.class); } @Bean - @Transactional(readOnly = true) - public ApplicationRunner initializer() { + public CommandLineRunner initializer() { return args -> { log.info("START : {} ,MAX {}",Runtime.getRuntime().freeMemory(),Runtime.getRuntime().maxMemory()); - millionsService.processStreaming(); + //millionsService.processStreaming(); log.info("END"); }; } diff --git a/src/main/java/org/engineerscodes/app/MillionsService.java b/src/main/java/org/engineerscodes/app/MillionsService.java index 03f4ffd..dc1f138 100644 --- a/src/main/java/org/engineerscodes/app/MillionsService.java +++ b/src/main/java/org/engineerscodes/app/MillionsService.java @@ -1,26 +1,33 @@ package org.engineerscodes.app; +import lombok.extern.slf4j.Slf4j; +import org.engineerscodes.app.jpa.Repo; +import org.engineerscodes.app.jpa.millions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.data.domain.Sort; +import org.springframework.data.r2dbc.core.R2dbcEntityOperations; +import org.springframework.data.relational.core.query.Criteria; +import org.springframework.data.relational.core.query.Query; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import java.util.stream.Stream; +import reactor.core.publisher.Flux; @Service +@Slf4j public class MillionsService { - private final Repo repo; + @Autowired + private Repo repo; + + @Autowired + @Qualifier("db2EntityManagerFactory") + R2dbcEntityOperations R2dbcEntityOperations; - public MillionsService(Repo repo) { - this.repo = repo; - } - @Transactional(readOnly = true) - public void processStreaming() { - /* try (Stream stream = repo.findAllByStreaming()) { - stream.forEach(million -> { - System.out.println(million); - if(million.getId()%200000==0){System.out.println("GCCC");System.gc();} - }); - }*/ - repo.findAll(); + public Flux processStreaming() { + //List millionsList = repo.findAll(); + //millionsList.parallelStream().forEach(System.out::println); + return R2dbcEntityOperations.select(millions.class).matching(Query.query(Criteria.empty()) + .sort(Sort.by("id").ascending()).limit(1_000_000)).all(); } } diff --git a/src/main/java/org/engineerscodes/app/R2dbcConfig.java b/src/main/java/org/engineerscodes/app/R2dbcConfig.java new file mode 100644 index 0000000..ba6d34f --- /dev/null +++ b/src/main/java/org/engineerscodes/app/R2dbcConfig.java @@ -0,0 +1,48 @@ +package org.engineerscodes.app; + +import io.r2dbc.spi.ConnectionFactory; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.r2dbc.core.R2dbcEntityOperations; +import org.springframework.data.r2dbc.core.R2dbcEntityTemplate; +import org.springframework.data.r2dbc.dialect.PostgresDialect; +import org.springframework.data.r2dbc.repository.config.EnableR2dbcRepositories; +import org.springframework.r2dbc.connection.R2dbcTransactionManager; +import org.springframework.r2dbc.core.DatabaseClient; +import io.r2dbc.postgresql.PostgresqlConnectionFactory; +import io.r2dbc.postgresql.PostgresqlConnectionConfiguration; +import org.springframework.transaction.ReactiveTransactionManager; +import org.springframework.transaction.annotation.EnableTransactionManagement; + + +@Configuration +@EnableTransactionManagement +@EnableR2dbcRepositories(basePackages = "org.engineerscodes.app.r2dc", + entityOperationsRef = "db2EntityManagerFactory") +@EntityScan(basePackages = "org.engineerscodes.app.r2dc") +public class R2dbcConfig { + + @Bean + @Qualifier("postgresql") + public ConnectionFactory postgresqlConnectionFactory() { + return new PostgresqlConnectionFactory( + PostgresqlConnectionConfiguration.builder() + .host("localhost") + .port(5432) + .username("postgres") + .password("naveen") + .database("BigData") + .build() + ); + } + + @Bean(name = "db2EntityManagerFactory") + public R2dbcEntityOperations postgresqlR2dbcEntityOperations(@Qualifier("postgresql") ConnectionFactory connectionFactory) { + + DatabaseClient databaseClient = DatabaseClient.create(connectionFactory); + + return new R2dbcEntityTemplate(databaseClient, PostgresDialect.INSTANCE); + } +} \ No newline at end of file diff --git a/src/main/java/org/engineerscodes/app/Repo.java b/src/main/java/org/engineerscodes/app/jpa/Repo.java similarity index 75% rename from src/main/java/org/engineerscodes/app/Repo.java rename to src/main/java/org/engineerscodes/app/jpa/Repo.java index 0adcdd7..a18e8d1 100644 --- a/src/main/java/org/engineerscodes/app/Repo.java +++ b/src/main/java/org/engineerscodes/app/jpa/Repo.java @@ -1,11 +1,12 @@ -package org.engineerscodes.app; +package org.engineerscodes.app.jpa; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; -import org.springframework.transaction.annotation.Transactional; +import org.springframework.stereotype.Repository; import java.util.stream.Stream; +@Repository public interface Repo extends JpaRepository { @Query("select m from millions m") diff --git a/src/main/java/org/engineerscodes/app/millions.java b/src/main/java/org/engineerscodes/app/jpa/millions.java similarity index 75% rename from src/main/java/org/engineerscodes/app/millions.java rename to src/main/java/org/engineerscodes/app/jpa/millions.java index 5bc2717..d35b8b5 100644 --- a/src/main/java/org/engineerscodes/app/millions.java +++ b/src/main/java/org/engineerscodes/app/jpa/millions.java @@ -1,14 +1,14 @@ -package org.engineerscodes.app; +package org.engineerscodes.app.jpa; import jakarta.persistence.Entity; import jakarta.persistence.Id; -import lombok.AllArgsConstructor; -import lombok.Builder; +import jakarta.persistence.Table; import lombok.Data; import lombok.NoArgsConstructor; @Entity +@Table @Data @NoArgsConstructor public class millions { diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 9cb1d20..6e0b699 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,12 +1,21 @@ ## Spring JPA -spring.datasource.url=jdbc:postgresql://localhost:5432/BigData -spring.datasource.username=postgres -spring.datasource.password=naveen +spring.db1.datasource.url=jdbc:postgresql://localhost:5432/BigData +spring.db1.datasource.username=postgres +spring.db1.datasource.password=naveen spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.properties.hibernate.format_sql=true spring.threads.virtual.enabled=true -hibernate.dialect=org.hibernate.dialect.PostgreSQL9Dialect +#hibernate.dialect=org.hibernate.dialect.PostgreSQL9Dialect hibernate.generate_statistics=true #spring.jpa.properties.hibernate.jdbc.batch_size=30 #spring.jpa.properties.hibernate.default_batch_fetch_size=20 +logging.level.org.springframework.r2dbc=DEBUG +#spring.datasource-secondary.url=r2dbc:postgresql://localhost:5432/BigData +#spring.datasource-secondary.username=postgres +#spring.datasource-secondary.password=naveen +#spring.datasource-secondary.driverClassName=org.postgresql.Driver +server.connection-timeout=30m +spring.webflux.timeout.connect=30m +spring.webflux.timeout.response=30m +spring.mvc.async.request-timeout=3000000000