మద్దతు ఉన్న డేటా రకాలు
మునుపటి మూడు స్థాయిలలో, మేము హైబర్నేట్తో కొంచెం పరిచయం పొందాము. ఇది రెండవ రౌండ్కు సమయం. ఇప్పుడు మనం అదే విషయాన్ని అధ్యయనం చేయడం ప్రారంభిస్తాము, లోతుగా మాత్రమే. మరియు మేము ఎంటిటీ క్లాస్ యొక్క ఫీల్డ్లను డేటాబేస్లోని పట్టికల నిలువు వరుసలకు మ్యాప్ చేయడం ద్వారా ప్రారంభిస్తాము.
మీకు ఇప్పటికే తెలిసినట్లుగా, ఎంటిటీ క్లాస్లోని ఫీల్డ్ని నిలువు వరుసకు మ్యాపింగ్ చేయడం @Column ఉల్లేఖనాన్ని ఉపయోగించి చేయబడుతుంది . మరియు ఇప్పుడు ప్రశ్న: అటువంటి ఉల్లేఖనంతో ఏ రకమైన ఫీల్డ్లను మ్యాప్ చేయవచ్చు?
జావాలోని అన్ని డేటా రకాలను మూడు గ్రూపులుగా విభజించవచ్చు:
- రకం చాలా సులభం మరియు డేటాబేస్లో నిల్వ చేయడం సులభం .
- రకం సంక్లిష్టమైనది మరియు మీరు దాని కోసం ప్రత్యేక కన్వర్టర్ను వ్రాయాలి .
- రకం చాలా క్లిష్టమైనది మరియు దాని విలువలను నిల్వ చేయడానికి ప్రత్యేక పట్టిక అవసరం .
హైబర్నేట్ ఎలా నిల్వ చేయాలో తెలిసిన సాధారణ రకాలు:
జావాలో రకాలు | ప్యాకేజీ | తరగతి ఉదాహరణలు |
---|---|---|
ఆదిమ జావా రకాలు | boolean , int , double , etc. | |
ఆదిమానవుల మీద చుట్టలు | java.lang | బూలియన్ , పూర్ణాంకం , డబుల్ , మొదలైనవి. |
తీగలు | java.lang | స్ట్రింగ్ |
"అధునాతన" సంఖ్యలు | java.math | BigInteger మరియు BigDecimal |
తేదీ మరియు సమయం | java.time | లోకల్డేట్ , లోకల్ టైమ్ , లోకల్ డేట్ టైమ్ , ఆఫ్సెట్ టైమ్ , ఆఫ్సెట్ డేట్ టైమ్ , ఇన్స్టంట్ |
వివిధ తేదీ మరియు సమయ వ్యత్యాసాలు | java.util | తేదీ మరియు క్యాలెండర్ |
పాత తేదీ మరియు సమయ ఫార్మాట్లు | java.sql | తేదీ , సమయం , టైమ్స్టాంప్ |
బైట్లు లేదా అక్షరాల శ్రేణి | బైట్[] లేదా బైట్[] , అక్షరం[] లేదా అక్షరం[] | |
ఎనమ్స్ | ఏదైనా enum | |
క్రమీకరించదగిన వస్తువులు | java.io.Serializable ఏదైనా అమలు |
ఈ అన్ని రకాలు SQL భాషలో వాటి ప్రతిరూపాలను కలిగి ఉంటాయి, కాబట్టి హైబర్నేట్ డేటాబేస్ నుండి వాటిని ఎలా నిల్వ చేయాలో మరియు లోడ్ చేయాలో తెలుసు.
ఉదాహరణ:
@Entity
@Table(name="user")
class User
{
@Column(name="id")
public Integer id;
@Column(name="name")
public String name;
@Column(name="level")
public Integer level;
@Column(name="created_date")
public Date createdDate;
}
మాన్యువల్ రకం అసైన్మెంట్లు - @రకం ఉల్లేఖన
కొన్నిసార్లు మీరు హైబర్నేట్ విధానాన్ని తారుమారు చేయాలనుకోవచ్చు మరియు డేటాబేస్లో డేటాను ఏ రకాన్ని నిల్వ చేయాలో స్పష్టంగా చెప్పండి. ఉదాహరణకు, మీరు మీ ఎంటిటీ క్లాస్ రకం పూర్ణాంకంలో ఫీల్డ్ని కలిగి ఉన్నారు, కానీ బేస్లో దాని కోసం VARCHAR రకంతో నిలువు వరుస ఉంది.
దీనికి ప్రత్యేక ఉల్లేఖన ఉంది - @రకం . ఇది చాలా సరళంగా కనిపిస్తుంది:
@Type(type="type-name")
ఉదాహరణకు, ఫీల్డ్ని తయారు చేయమని హైబర్నేట్ని అడుగుదాంసృష్టించిన తేదీమా వినియోగదారు తరగతి డేటాబేస్లో స్ట్రింగ్గా నిల్వ చేయబడింది:
@Entity
@Table(name="user")
class User
{
@Column(name="id")
public Integer id;
@Column(name="created_date")
@Type(type="org.hibernate.type.StringType")
public Date createdDate;
}
తేదీ రకాన్ని మీ కొత్త రకానికి ఎలా మార్చుకోవాలో హైబర్నేట్ గుర్తించినట్లయితే, అది అలా చేస్తుంది. ఇది అర్థం కాకపోతే, మీరు ప్రత్యేక రకం కన్వర్టర్ను పేర్కొనాలి. కానీ తరువాత దాని గురించి మరింత.
డేటాబేస్ల కోసం హైబర్నేట్ రకాల జాబితా
మార్గం ద్వారా, మేము స్ట్రింగ్ కాకుండా org.hibernate.type.StringType రకాన్ని పేర్కొన్నామని మీరు గమనించారా . ఎందుకంటే మేము జావా భాష ద్వారా కాకుండా DBMS ద్వారా మద్దతు ఇచ్చే రకాల్లో ఒకదాన్ని ఎంచుకున్నాము. వాటిలో ప్రతి దాని స్వంత రకం వ్యవస్థ ఉంటుంది. హైబర్నేట్ డెవలపర్లు ఈ VARCHARలకు బదులుగా అనుకూలమైన జావా-శైలి పేర్లతో ముందుకు వచ్చారు.
మార్గం ద్వారా, ఈ జాబితా చాలా చిన్నది కాదు. నేను దానిలో కొంత భాగాన్ని ఇక్కడ ఇస్తాను:
హైబర్నేట్ రకం (org.hibernate.type ప్యాకేజీ) | JDBC రకం | జావా రకం | BasicTypeRegistry కీ(లు) |
---|---|---|---|
స్ట్రింగ్ టైప్ | వర్చర్ | java.lang.string | స్ట్రింగ్, java.lang.string |
వస్తురూపం దాల్చింది | CLOB | java.lang.string | మెటీరియలైజ్డ్_క్లాబ్ |
టెక్స్ట్ రకం | లాంగ్వార్చార్ | java.lang.string | వచనం |
పాత్ర రకం | చార్ | చార్, జావా.లాంగ్. క్యారెక్టర్ | చార్, జావా.లాంగ్. క్యారెక్టర్ |
బూలియన్ రకం | బిట్ | బూలియన్, జావా.లాంగ్.బూలియన్ | బూలియన్, జావా.లాంగ్.బూలియన్ |
సంఖ్యా బూలియన్ రకం | INTEGER, 0 తప్పు, 1 నిజం | బూలియన్, జావా.లాంగ్.బూలియన్ | సంఖ్యా_బూలియన్ |
YesNoType | CHAR, 'N'/'n' తప్పు, 'Y'/'y' నిజం. పెద్ద అక్షరం విలువ డేటాబేస్కు వ్రాయబడింది. | బూలియన్, జావా.లాంగ్.బూలియన్ | అవును కాదు |
TrueFalseType | CHAR, 'F'/'f' తప్పు, 'T'/'t' నిజం. పెద్ద అక్షరం విలువ డేటాబేస్కు వ్రాయబడింది. | బూలియన్, జావా.లాంగ్.బూలియన్ | ఒప్పు తప్పు |
బైట్ టైప్ | TINYINT | బైట్, java.lang.Byte | బైట్, java.lang.Byte |
చిన్న రకం | SMALLINT | చిన్న, java.lang.Short | చిన్న, java.lang.Short |
పూర్ణాంక రకాలు | పూర్ణ సంఖ్య | int, java.lang. Integer | int, java.lang. Integer |
పొడవైన రకం | పెద్ద | పొడవు, java.lang.Long | పొడవు, java.lang.Long |
ఫ్లోట్ రకం | ఫ్లోట్ | ఫ్లోట్, జావా.లాంగ్.ఫ్లోట్ | ఫ్లోట్, జావా.లాంగ్.ఫ్లోట్ |
డబుల్ రకం | డబుల్ | డబుల్, java.lang.Double | డబుల్, java.lang.Double |
BigIntegerType | NUMERIC | java.math.BigInteger | పెద్ద_పూర్ణాంకం, java.math.BigInteger |
బిగ్ డెసిమల్ టైప్ | NUMERIC | java.math.BigDecimal | పెద్ద_దశాంశం, java.math.bigDecimal |
టైమ్స్టాంప్ రకం | టైమ్స్టాంప్ | java.sql.timestamp | టైమ్స్టాంప్, java.sql.timestamp |
సమయ రకం | TIME | java.sql.Time | సమయం, java.sql.Time |
తేదీ రకం | DATE | java.sql.date | తేదీ, java.sql.date |
క్యాలెండర్ రకం | టైమ్స్టాంప్ | java.util.Calendar | క్యాలెండర్, java.util.Calendar |
క్యాలెండర్ తేదీ రకం | DATE | java.util.Calendar | క్యాలెండర్_తేదీ |
కరెన్సీ రకం | java.util.కరెన్సీ | వర్చర్ | కరెన్సీ, java.util.Currency |
స్థానిక రకం | వర్చర్ | java.util.locale | లొకేల్, java.utility.locale |
టైమ్జోన్ రకం | VARCHAR, టైమ్జోన్ IDని ఉపయోగిస్తోంది | java.util.TimeZone | టైమ్జోన్, java.util.TimeZone |
UrlType | వర్చర్ | java.net.URL | url, java.net.URL |
తరగతి రకం | VARCHAR(తరగతి FQN) | java.lang.Class | తరగతి, java.lang.Class |
పట్టిక, వాస్తవానికి, పెద్దది, కానీ చాలా ఉపయోగకరంగా ఉంటుంది. ఉదాహరణకు, బూలియన్ రకం డేటాబేస్లో కనీసం ఆరు రకాలుగా నిల్వ చేయబడుతుందని దాని నుండి స్పష్టంగా తెలుస్తుంది. మీకు అంత అవసరం లేదా? మరియు మీరు పొదుపు మార్గాన్ని ఎంచుకున్నారని ఎవరు చెప్పారు?
SQLలో బూలియన్ రకం లేదు మరియు ఇది తరచుగా ఇలా నిల్వ చేయబడుతుంది:
- 1 లేదా 0
- 'F' లేదా 'T'
- 'Y' లేదా 'N'
అందువల్ల, హైబర్నేట్ ఈ ఇబ్బందులన్నింటినీ అర్థం చేసుకున్నప్పుడు చాలా మంచిది. లేదా, ఉదాహరణకు, డేటాబేస్లోని డేటా శ్రేణుల నిల్వను తీసుకుందాం. విభిన్న ఎంపికల సమూహం ఉన్నాయి మరియు వాటితో ఎలా పని చేయాలో హైబర్నేట్కు తెలుసు:
హైబర్నేట్ రకం (org.hibernate.type ప్యాకేజీ) | JDBC రకం | జావా రకం | బేసిక్ టైప్ రిజిస్టర్ |
---|---|---|---|
బొట్టు రకం | BLOB | java.sql.blob | బ్లాగ్, java.sql.blob |
clobtype | CLOB | java.sql.clob | clob, java.sql.clob |
బైనరీ టైప్ | వర్బినరీ | బైట్[] | బైనరీ, బైట్[] |
మెటీరియలైజ్డ్ బ్లాబ్ టైప్ | BLOB | బైట్[] | మెటరైజ్డ్_బొట్టు |
చిత్రం రకం | లాంగ్వర్బినరీ | బైట్[] | చిత్రం |
రేపర్ బైనరీ టైప్ | వర్బినరీ | java.lang.Byte[] | రేపర్-బైనరీ, బైట్[], java.lang.Byte[] |
CharArrayType | వర్చర్ | చార్[] | అక్షరాలు, చార్[] |
అక్షర శ్రేణి రకం | వర్చర్ | java.lang.Character[] | రేపర్-అక్షరాలు, అక్షరం[], java.lang.Character[] |
UUID బైనరీ రకం | బైనరీ | java.util.UUID | uuid-బైనరీ, java.util.UUID |
UUIDCharType | CHAR, VARCHAR కూడా చదవగలరు | java.util.UUID | uuid-char |
PostgreSQLUUID రకం | PostgreSQL UUID, రకాలు#OTHER ద్వారా, ఇది PostgreSQL JDBC డ్రైవర్ నిర్వచనానికి అనుగుణంగా ఉంటుంది | java.util.UUID | pg-uuid |
హైబర్నేట్ రకం (org.hibernate.type ప్యాకేజీ) | JDBC రకం | జావా రకం | బేసిక్ టైప్ రిజిస్టర్ |
---|---|---|---|
వ్యవధి రకం | పెద్ద | java.time.Duration | వ్యవధి, java.time.Duration |
తక్షణ రకం | టైమ్స్టాంప్ | java.time.Instant | తక్షణం, java.time.Instant |
స్థానిక తేదీ సమయం రకం | టైమ్స్టాంప్ | java.time.LocalDateTime | LocalDateTime, java.time.LocalDateTime |
స్థానిక తేదీ రకం | DATE | java.time.LocalDate | LocalDate, java.time.LocalDate |
స్థానిక సమయం రకం | TIME | java.time.LocalTime | LocalTime, java.time.LocalTime |
ఆఫ్సెట్ డేట్ టైమ్ టైప్ | టైమ్స్టాంప్ | java.time.OffsetDateTime | ఆఫ్సెట్ డేట్ టైమ్, java.time.OffsetDateTime |
ఆఫ్సెట్ టైమ్ టైప్ | TIME | java.time.OffsetTime | ఆఫ్సెట్ టైమ్, java.time.OffsetTime |
ఆఫ్సెట్ టైమ్ టైప్ | టైమ్స్టాంప్ | java.time.ZonedDateTime | ZonedDateTime, java.time.ZonedDateTime |
GO TO FULL VERSION