Skip to content

Commit ddad356

Browse files
committed
Finalize the repository layer
1 parent 5bc39b0 commit ddad356

File tree

8 files changed

+104
-1
lines changed

8 files changed

+104
-1
lines changed

src/main/java/lk/ijse/dep/notes/repository/CrudRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
public interface CrudRepository<T extends SuperEntity,ID extends Serializable> extends SuperRepository {
1212

13-
ID save(T entity);
13+
T save(T entity);
1414
void deleteById(ID pk);
1515
boolean existById(ID pk);
1616
Optional<T>findById(ID pk);
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package lk.ijse.dep.notes.repository;
2+
3+
import lk.ijse.dep.notes.entity.SuperEntity;
4+
5+
import javax.persistence.EntityManager;
6+
import javax.persistence.PersistenceContext;
7+
import java.io.Serializable;
8+
import java.lang.reflect.ParameterizedType;
9+
import java.util.List;
10+
import java.util.Optional;
11+
12+
public abstract class CrudRepositoryImpl <T extends SuperEntity,ID extends Serializable> implements CrudRepository<T,ID>{
13+
14+
@PersistenceContext
15+
protected EntityManager entityManager;
16+
17+
private Class<T> entityClzObj;
18+
19+
public CrudRepositoryImpl(){
20+
this.entityClzObj= (Class<T>) ((ParameterizedType)this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
21+
}
22+
@Override
23+
public T save(T entity) {
24+
return entityManager.merge(entity);
25+
26+
}
27+
28+
@Override
29+
public void deleteById(ID pk) {
30+
31+
entityManager.remove(entityManager.getReference(entityClzObj,pk));
32+
}
33+
34+
@Override
35+
public boolean existById(ID pk) {
36+
return findById(pk).isPresent();
37+
}
38+
39+
@Override
40+
public Optional<T> findById(ID pk) {
41+
return Optional.of( entityManager.find(entityClzObj,pk));
42+
}
43+
44+
@Override
45+
public List<T> findAll() {
46+
return entityManager.createQuery("SELECT e FROM "+entityClzObj.getName()+" e",entityClzObj).getResultList();
47+
}
48+
49+
@Override
50+
public long count() {
51+
return entityManager.createQuery("SELECT COUNT(e) FROM "+entityClzObj.getName()+" e",Long.class).getSingleResult();
52+
}
53+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package lk.ijse.dep.notes.repository.custom;
2+
3+
import lk.ijse.dep.notes.entity.Note;
4+
import lk.ijse.dep.notes.repository.CrudRepository;
5+
6+
public interface NoteRepository extends CrudRepository<Note,Integer> {
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package lk.ijse.dep.notes.repository.custom;
2+
3+
import lk.ijse.dep.notes.repository.CrudRepository;
4+
import lk.ijse.dep.notes.repository.SuperRepository;
5+
6+
public interface QueryRepository extends SuperRepository {
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package lk.ijse.dep.notes.repository.custom;
2+
3+
import lk.ijse.dep.notes.entity.User;
4+
import lk.ijse.dep.notes.repository.CrudRepository;
5+
6+
public interface UserRepository extends CrudRepository<User,String> {
7+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package lk.ijse.dep.notes.repository.custom.impl;
2+
3+
import lk.ijse.dep.notes.entity.Note;
4+
import lk.ijse.dep.notes.repository.CrudRepositoryImpl;
5+
import org.springframework.stereotype.Repository;
6+
7+
@Repository
8+
public class NoteRepositoryImpl extends CrudRepositoryImpl<Note,String> {
9+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package lk.ijse.dep.notes.repository.custom.impl;
2+
3+
import lk.ijse.dep.notes.repository.custom.QueryRepository;
4+
5+
import javax.persistence.EntityManager;
6+
import javax.persistence.PersistenceContext;
7+
8+
public class QueryRepositoryImpl implements QueryRepository {
9+
@PersistenceContext
10+
private EntityManager em;
11+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package lk.ijse.dep.notes.repository.custom.impl;
2+
3+
import lk.ijse.dep.notes.entity.User;
4+
import lk.ijse.dep.notes.repository.CrudRepositoryImpl;
5+
import org.springframework.stereotype.Repository;
6+
7+
@Repository
8+
public class UserRepositoryImpl extends CrudRepositoryImpl<User,String> {
9+
}

0 commit comments

Comments
 (0)