উপরের সমস্ত উত্তর একত্রিত করে, আপনি বেসএন্টিটির সাথে পুনরায় ব্যবহারযোগ্য কোডটি লিখতে পারেন:
@Data
@NoArgsConstructor
@MappedSuperclass
public abstract class BaseEntity {
@Transient
public static final Sort SORT_BY_CREATED_AT_DESC =
Sort.by(Sort.Direction.DESC, "createdAt");
@Id
private Long id;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
@PrePersist
void prePersist() {
this.createdAt = LocalDateTime.now();
}
@PreUpdate
void preUpdate() {
this.updatedAt = LocalDateTime.now();
}
}
ডিএও অবজেক্ট ওভারলোডগুলি সন্ধান করে সমস্ত পদ্ধতি - মূলত, এখনও ব্যবহার করে findAll()
public interface StudentDAO extends CrudRepository<StudentEntity, Long> {
Iterable<StudentEntity> findAll(Sort sort);
}
StudentEntity
BaseEntity
পুনরাবৃত্তিযোগ্য ক্ষেত্রগুলি রয়েছে এমন প্রসারিত হয় (সম্ভবত আপনি আইডির মাধ্যমেও বাছাই করতে চান)
@Getter
@Setter
@FieldDefaults(level = AccessLevel.PRIVATE)
@Entity
class StudentEntity extends BaseEntity {
String firstName;
String surname;
}
অবশেষে, পরিষেবা এবং এর ব্যবহারগুলি SORT_BY_CREATED_AT_DESC
সম্ভবত কেবলমাত্র ব্যবহার করা হবে না StudentService
।
@Service
class StudentService {
@Autowired
StudentDAO studentDao;
Iterable<StudentEntity> findStudents() {
return this.studentDao.findAll(SORT_BY_CREATED_AT_DESC);
}
}
List<StudentEntity> findAllByOrderByIdAsc();
। একটি রিটার্ন টাইপ যুক্ত করা এবং অপ্রয়োজনীয় পাবলিক মডিফায়ার অপসারণ করাও একটি ভাল ধারণা;)