Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

जेपीए भंडार के साथ लाइट इकाई संस्करण को कैसे कार्यान्वित करें?

स्प्रिंग दो तंत्र प्रदान करता है जिनका उपयोग प्राप्त किए जाने वाले डेटा को सीमित करने के लिए किया जा सकता है।

अनुमान ए>

अनुमान आपको डेटाबेस से पुनर्प्राप्त डेटा को कम करने में मदद कर सकते हैं, यह निर्धारित करके कि आप वास्तव में कौन सी विशेषताएँ लाना चाहते हैं।

उदाहरण:

@Entity
class Person {
    @Id UUID id;
    String firstname, lastname;
    @OneToOne
    Address address;
}

@Entity
static class Address {
    @Id UUID id;
    String zipCode, city, street;
}

interface NamesOnly {
    String getFirstname();
    String getLastname();
}

@Repository
interface PersonRepository extends Repository<Person, UUID> {
    Collection<NamesOnly> findByLastname(String lastname);
}

इकाई ग्राफ़

व्याख्या EntityGraph डेटाबेस में प्रश्नों की मात्रा को कम करने में आपकी मदद कर सकता है, यह निर्धारित करके कि आपको वास्तव में कौन सी संबंधित इकाइयां लाने की आवश्यकता है।

उदाहरण:

@Entity
@NamedEntityGraph(name = "GroupInfo.detail", attributeNodes = @NamedAttributeNode("members"))
public class GroupInfo {
    @Id UUID id;
    @ManyToMany //default fetch mode is lazy.
    List<GroupMember> members = new ArrayList<GroupMember>();
}

@Repository
public interface GroupRepository extends CrudRepository<GroupInfo, String> {

    @EntityGraph(value = "GroupInfo.detail", type = EntityGraphType.LOAD)
    GroupInfo getByGroupName(String name); //Despite of GroupInfo.members has FetchType = LAZY, it will be fetched because of using EntityGraph
}

EntityGraph दो तरह के होते हैं :

  1. EntityGraphType.LOAD - एक निकाय ग्राफ़ निर्दिष्ट करने के लिए उपयोग किया जाता है, निकाय ग्राफ़ के विशेषता नोड्स द्वारा निर्दिष्ट विशेषताएँ FetchType.EAGER के रूप में मानी जाती हैं और विशेषताएँ जो निर्दिष्ट नहीं हैं, उनके निर्दिष्ट या डिफ़ॉल्ट के अनुसार व्यवहार की जाती हैं FetchType .
  2. EntityGraphType.FETCH - एक निकाय ग्राफ़ निर्दिष्ट करने के लिए उपयोग किया जाता है, निकाय ग्राफ़ के विशेषता नोड्स द्वारा निर्दिष्ट विशेषताएँ FetchType.EAGER के रूप में मानी जाती हैं और निर्दिष्ट नहीं की गई विशेषताओं को FetchType.LAZY . के रूप में माना जाता है ।

PS: यह भी याद रखें कि आप आलसी फ़ेच प्रकार सेट कर सकते हैं:@ManyToOne(fetch = FetchType.LAZY) और जब माता-पिता को लाया जा रहा है तो जेपीए बाल संस्थाओं को नहीं लाएगा।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. बिना cPanel लॉगिन के PhpMyAdmin को कैसे एक्सेस करें

  2. एक टेबल से एक ही कॉलम पर दो विदेशी कुंजियाँ

  3. विभिन्न एप्लिकेशन से MySQL इंसर्ट की निगरानी करें

  4. MySQL - JDBC - एक ही समय में चुनें और हटाएं

  5. रिकॉर्ड की संख्या के आधार पर एक मैसकल क्वेरी के निष्पादन समय की गणना करना