A library and a CLI for simplifying development, and managing entities lifecycles using Spring, Liquibase, Hibernate, and JOOQ.
- A generic resource repository that implements the most frequently used queries, utilizing JOOQ and Spring Webflux
- A CLI for managing JOOQ records life cycle
- Add Sajooq to your pom.xml
<dependency>
<groupId>io.github.muizmahdi</groupId>
<artifactId>sajooq</artifactId>
<version>1.0.4</version>
</dependency>
- Make your Entity, POJO, or DAO extend
BaseEntity
:
@Data
public class Account extends BaseEntity {
private String username, email, password;
}
- Create an interface for your resource repository that extends
ResourceRepository
:
@Repository
public interface AccountRepository extends ResourceRepository<Account, AccountsRecord, Accounts> {
// Account => POJO
// AccountsRecord => JOOQ generated record
// Accounts => JOOQ generated TableImpl of the record
}
- Create an implementation for that interface, which extends
DefaultResourceRepository
:
@Repository
public class AccountRepositoryImpl extends DefaultResourceRepository<Account, AccountsRecord, Accounts>
implements AccountRepository {
}
- Inject your repository and use any of the queries
@Autowired private AccountRepository accountRepository;
@Override
public Mono<ApiResponse> create(Account accountToCreate) {
// Insert Account
return accountRepository.insert(accountToCreate, Accounts.ACCOUNTS).flatMap(account -> {
return Mono.just(new ApiResponse(account, HttpStatus.CREATED.value()));
});
}