Bütün servislər eyni bazanı paylaşır — anti-pattern sayılsə da, real həyatda tez-tez rast gəlinir. Xüsusilə monolit→mikroservis keçid dövründə.
Bu pattern adətən tövsiyə olunmur. Lakin monolit-dən mikroservisə keçid dövründə qısamüddətli keçid strategiyası kimi istifadə edilir.
Tight Coupling: bir servisin sxem dəyişikliyi digər servislərə təsir edir. Müstəqil deployment demək olar ki mümkün deyil.
Legacy sistem keçidi, kiçik komandalar, data bütövlüyü (referential integrity) vacib olduqda, MVP dövründə.
@Service
public class OrderService {
@Autowired
private JdbcTemplate jdbc;
public OrderDto createOrder(Long userId, BigDecimal amount) {
// ❌ PROBLEM: Order servisi birbaşa "users" tablosuna SELECT edir
// User service-in sxem dəyişikliyi bizi SIRAR!
String sql = "SELECT name, email FROM users WHERE id = ?";
Map<String, Object> user = jdbc.queryForMap(sql, userId);
// Sifariş yarat — eyni bazaya
jdbc.update("INSERT INTO orders (user_id, total) VALUES (?, ?)",
userId, amount);
return new OrderDto(user.get("name"), amount);
}
}