Day 54/100 Today I learned something that silently slows down applications… 👉 Lazy vs Eager fetching 👉 The N+1 query problem At first, everything worked fine. But under the hood, multiple unnecessary database queries were being executed. That’s when I understood: Just because code works doesn’t mean it’s efficient. Now I’m more conscious about: ✔ When data should be fetched ✔ Avoiding unnecessary DB calls ✔ Writing performance-aware backend code Small optimization, big impact. #100DaysOfCode #SpringBoot #BackendDevelopment #Performance #Java
Optimizing Database Queries for Efficient Backend Code
More Relevant Posts
-
A single slow Database query almost brought down a production system I worked on. Not because of the query itself, but because it consumed every available thread, leaving nothing for the services that actually mattered. The fix? Bulkhead Semaphore pattern. Isolate your thread pools. Set a queue. Define a fallback. The slides show exactly how. Full Resilience4j docs: https://lnkd.in/dyMxUx_j #java #springboot #backend #resilience4j #softwareengineering
To view or add a comment, sign in
-
#Post5 In the previous post, we saw how @RequestBody helps us handle request data. Now the next question is 👇 How do we get data from the URL? There are two common ways: • @PathVariable • @RequestParam Let’s understand 👇 👉 @PathVariable Used when the value is part of the URL path Example: GET /users/10 @GetMapping("/users/{id}") public String getUser(@PathVariable int id) { return "User id: " + id; } 👉 @RequestParam Used when the value comes as a query parameter Example: GET /users?id=10 @GetMapping("/users") public String getUser(@RequestParam int id) { return "User id: " + id; } 💡 Key difference: @PathVariable → part of URL @RequestParam → query parameter Key takeaway: Use the right approach based on how data is passed in the request 👍 In the next post, we will explore exception handling in Spring Boot 🔥 #Java #SpringBoot #BackendDevelopment #RESTAPI #LearnInPublic
To view or add a comment, sign in
-
I had an API returning correct data. But response time was too high. Issue turned out to be unnecessary data being fetched from DB. Reduced fields, optimized query. Small change, big impact. #Backend #Java #SpringBoot #Performance
To view or add a comment, sign in
-
Just published my first technical article on Dev.to! "Building a Database Engine from Scratch" Covered everything: - B+ Tree implementation in C++ - Java + C++ IPC bridge - Docker deployment - Live analytics dashboard Read here: https://lnkd.in/grR247qE Live Demo: fourmulaquery.onrender.com GitHub: https://lnkd.in/gKrjbYGh #buildinpublic #cpp #java #database
To view or add a comment, sign in
-
Most transaction bugs in Spring Boot are not SQL bugs—they’re transaction boundary bugs. Today’s focus is a deep dive into @Transactional: propagation, isolation, and rollback rules. If you only use the default settings everywhere, you may accidentally create hidden data inconsistencies or unexpected commits. Example: @Service public class PaymentService { @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class) public void processPayment(Order order) { paymentRepository.save(new Payment(order.getId(), order.getTotal())); inventoryService.reserve(order.getItems()); } } Key idea: REQUIRED joins an existing transaction or starts a new one, REQUIRES_NEW creates a separate one, and isolation controls visibility of concurrent changes. By default, rollback happens for unchecked exceptions, so checked exceptions often need explicit rollbackFor. Treat @Transactional as an architectural decision, not just an annotation. #Java #SpringBoot #BackendDevelopment
To view or add a comment, sign in
-
-
Most transaction bugs in Spring Boot are not SQL bugs—they’re transaction boundary bugs. Today’s focus is a deep dive into @Transactional: propagation, isolation, and rollback rules. If you only use the default settings everywhere, you may accidentally create hidden data inconsistencies or unexpected commits. Example: @Service public class PaymentService { @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class) public void processPayment(Order order) { paymentRepository.save(new Payment(order.getId(), order.getTotal())); inventoryService.reserve(order.getItems()); } } Key idea: REQUIRED joins an existing transaction or starts a new one, REQUIRES_NEW creates a separate one, and isolation controls visibility of concurrent changes. By default, rollback happens for unchecked exceptions, so checked exceptions often need explicit rollbackFor. Treat @Transactional as an architectural decision, not just an annotation. #Java #SpringBoot #BackendDevelopment
To view or add a comment, sign in
-
-
🔥Today’s DSA Update — #Day62 Today I worked on Implementing Stack using Queue. 💡 The key idea I used a single queue and applied a rotation strategy. Whenever I add a new element: 1. I insert it into the queue 2. Then I move all the previous elements behind it This way, the most recent element always comes to the front, and behaves like the top of a stack. 💡 What I understood Unlike the "Queue using Stacks" (which was efficient over time), this Stack implementation has a O(n) push time. We pay a price in speed to change the fundamental behavior of the data flow Push operation → O(n) Pop operation → O(1) So we are shifting the cost to maintain the stack behavior. 🧠 What I learned today Today’s lesson was that if we understand how data flows in a structure, we can modify its behavior using simple operations. #Java #DSA #Stack #Queue #LeetCode #ConsistencyCurve
To view or add a comment, sign in
-
-
How I improved API performance by ~40% 🚀 Problem: Slow response time due to heavy DB queries What I changed: • Optimized SQL queries • Added indexing • Reduced unnecessary joins • Used proper pagination Result: Faster APIs Better user experience Most performance issues are not in code, they’re in the database. #Backend #Java #Performance #Microservices #TechTips
To view or add a comment, sign in
-
🚀 Day 3/30 – Spring Boot Journey Today I explored @Component, @Service, and @Repository in Spring Boot. 🔹 @Component → Creates Spring Bean automatically 🔹 @Service → Used for business logic layer 🔹 @Repository → Handles database operations + exception handling 💡 Key Learning: All these annotations are special types of @Component, but using them properly improves code structure, readability, and follows clean architecture. Also understood how these layers work together: 👉 Controller → Service → Repository This made Dependency Injection much clearer! #SpringBoot #Java #BackendDeveloper #Learning #Microservices #100DaysOfCode
To view or add a comment, sign in
-
Is your @Transactional annotation actually doing what you think? 🧐 In Spring Boot, data integrity is everything. But I often see a common trap: Self-invocation. If you call a transactional method from another method within the same class, the Spring Proxy is bypassed. 📉 The result? No transaction starts, and your data might end up inconsistent without any error message. Check: ✅ The Proxy Rule: Spring uses AOP proxies. External calls go through the proxy; internal calls don't. ✅ The Fix: Move the transactional logic to a separate Service or use AspectJ if complexity scales. ✅ Bonus: Always use readOnly = true for fetch operations to improve performance and avoid unnecessary flush calls. It’s not just about using the framework; it’s about understanding the "Magic" behind it. 🚀 Have you ever faced a "phantom" database bug because of this? Let's swap stories! 👇 hashtag #Java #SpringBoot #Backend #Database #CleanCode #SoftwareEngineering #JavaDeveloper
To view or add a comment, sign in
-
Explore content categories
- Career
- Productivity
- Finance
- Soft Skills & Emotional Intelligence
- Project Management
- Education
- Technology
- Leadership
- Ecommerce
- User Experience
- Recruitment & HR
- Customer Experience
- Real Estate
- Marketing
- Sales
- Retail & Merchandising
- Science
- Supply Chain Management
- Future Of Work
- Consulting
- Writing
- Economics
- Artificial Intelligence
- Employee Experience
- Workplace Trends
- Fundraising
- Networking
- Corporate Social Responsibility
- Negotiation
- Communication
- Engineering
- Hospitality & Tourism
- Business Strategy
- Change Management
- Organizational Culture
- Design
- Innovation
- Event Planning
- Training & Development