সুতরাং, spring-dataএমন কিছু অতিরিক্ত যাদু যা জটিল প্রশ্নের সাথে সহায়তা করে। এটি প্রথমে অদ্ভুত এবং আপনি ডক্সে একেবারে এড়িয়ে যান তবে এটি সত্যই শক্তিশালী এবং দরকারী useful
Repositoryএটিতে একটি কাস্টম এবং একটি কাস্টম os RepositoryImpl 'তৈরি করা এবং স্প্রিংকে কোথায় এটি পাওয়া উচিত তা অন্তর্ভুক্ত রয়েছে। এখানে একটি উদাহরণ:
কনফিগারেশন ক্লাস - আপনার সংগ্রহস্থল প্যাকেজটির দিকে নির্দেশ করে টীকা সহ আপনার এখনও প্রয়োজনীয় xML কনফিগারেশনে নির্দেশ করুন (এটি *Implএখন স্বয়ংক্রিয়ভাবে ক্লাসগুলির জন্য দেখায় ):
@Configuration
@EnableJpaRepositories(basePackages = {"com.examples.repositories"})
@EnableTransactionManagement
public class MyConfiguration {
}
jpa-repositories.xML - Springআপনার সংগ্রহস্থলগুলি কোথায় পাবেন তা বলুন । ফাইলের নাম Springসহ কাস্টম সংগ্রহস্থলগুলি অনুসন্ধান করতে বলুন CustomImpl:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<jpa:repositories base-package="com.example.repositories" repository-impl-postfix="CustomImpl" />
</beans>
MyObjectRepository- এটি যেখানে আপনি টিকাশযুক্ত এবং অননোটিত কোয়েরি পদ্ধতিগুলি রাখতে পারেন। এই সংগ্রহস্থল ইন্টারফেসটি কীভাবে প্রসারিত করে তা নোট করুন Custom:
@Transactional
public interface MyObjectRepository extends JpaRepository<MyObject, Integer>, MyObjectRepositoryCustom {
List<MyObject> findByName(String name);
@Query("select * from my_object where name = ?0 or middle_name = ?0")
List<MyObject> findByFirstNameOrMiddleName(String name);
}
MyObjectRepositoryCustom - সংগ্রহশালা পদ্ধতি যা আরও জটিল এবং সাধারণ ক্যোয়ারী বা একটি টিকা দিয়ে পরিচালনা করা যায় না:
public interface MyObjectRepositoryCustom {
List<MyObject> findByNameWithWeirdOrdering(String name);
}
MyObjectRepositoryCustomImpl- যেখানে আপনি প্রকৃতপক্ষে কোনও স্বয়ংসম্পূর্ণ পদ্ধতি সহ বাস্তবে প্রয়োগ করেন EntityManager:
public class MyObjectRepositoryCustomImpl implements MyObjectRepositoryCustom {
@Autowired
private EntityManager entityManager;
public final List<MyObject> findByNameWithWeirdOrdering(String name) {
Query query = query(where("name").is(name));
query.sort().on("whatever", Order.ASC);
return entityManager.find(query, MyObject.class);
}
}
আশ্চর্যজনকভাবে, এই সমস্ত একসাথে আসে এবং উভয় ইন্টারফেসের পদ্ধতিগুলি (এবং সিআরইউডি ইন্টারফেস, আপনি বাস্তবায়ন করেন) সমস্ত আপনি যখন করবেন তখন দেখাবে:
myObjectRepository.
তুমি দেখবে:
myObjectRepository.save()
myObjectRepository.findAll()
myObjectRepository.findByName()
myObjectRepository.findByFirstNameOrMiddleName()
myObjectRepository.findByNameWithWeirdOrdering()
এটা সত্যিই কাজ করে। এবং আপনি অনুসন্ধানের জন্য একটি ইন্টারফেস পাবেন।spring-dataসত্যিই একটি বড় অ্যাপ্লিকেশন জন্য প্রস্তুত। এবং আরও প্রশ্নগুলি আপনি সাধারণ বা টীকাতে ধাক্কা দিতে পারেন আপনার চেয়ে আরও ভাল।
এই সমস্তগুলি স্প্রিং ডেটা জেপা সাইটে নথিভুক্ত করা হয় ।
শুভকামনা।