JPA Data Access Overview
Sproogy's JPA module brings Spring Data JPA's powerful repository pattern to your socket applications with full dependency injection support.
Why Use Sproogy JPA?
Traditional JDBC requires extensive boilerplate. With Sproogy JPA:
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByUsername(String username);
}
That's it! No manual SQL, no result set mapping, no connection management.
Quick Start
1. Add Dependencies
dependencies {
implementation 'com.sproogy:jpa:1.0.0'
implementation 'org.hibernate:hibernate-core:5.6.15.Final'
implementation 'mysql:mysql-connector-java:8.0.33'
}
2. Configuration
.env:
DB_URL=jdbc:mysql://localhost:3306/sproogy_db
DB_USER=root
DB_PASSWORD=secret
application.yml:
data:
jdbc:
driver: "com.mysql.cj.jdbc.Driver"
hibernate:
dialect: "org.hibernate.dialect.MySQL8Dialect"
hbm2ddl.auto: "update"
show_sql: "true"
3. Create Entity
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, unique = true)
private String username;
private String email;
// getters/setters...
}
4. Create Repository
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByUsername(String username);
List<User> findByEmailContaining(String emailPart);
}
5. Use in Service
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
@Transactional
public User createUser(String username, String email) {
User user = new User();
user.setUsername(username);
user.setEmail(email);
return userRepository.save(user);
}
}
Built-In Methods
All repositories get these methods:
save(T entity)- Insert or updatefindById(ID id)- Find by primary keyfindAll()- Get alldeleteById(ID id)- Delete by IDcount()- Count total
Method Name Queries
Generate queries from method names:
findByUsername(String username)
findByAgeGreaterThan(int age)
findByUsernameAndActive(String username, boolean active)
findByEmailContaining(String part)
findAllByOrderByCreatedAtDesc()