ఫ్రంటెండ్లోని మూడవ మాడ్యూల్ నుండి ప్రాజెక్ట్ను గుర్తుంచుకోవాలా, సర్వర్ API కోసం rpg అడ్మిన్ పానెల్ను అమలు చేయాల్సిన అవసరం ఉందా? ఎవరైనా గుర్తుంచుకుంటే, సర్వర్లో నిల్వగా మ్యాప్ ఉపయోగించబడుతుంది. సహజంగానే, నిజ జీవితంలో, అటువంటి నిల్వలు ఉపయోగించబడవు, కానీ డేటాబేస్లు ఉపయోగించబడతాయి. హైబర్నేట్ ఉపయోగించి ప్రత్యామ్నాయ రిపోజిటరీ లేయర్ అమలును వ్రాయడం ఈ ప్రాజెక్ట్ యొక్క లక్ష్యం.
దీని కోసం మీకు ఇది అవసరం:
- రిపోజిటరీ నుండి ఫోర్క్
- మీ ప్రాజెక్ట్ సంస్కరణను మీ కంప్యూటర్కు డౌన్లోడ్ చేయండి.
- pom.xmlకి డిపెండెన్సీలను జోడించండి:
- mysql:mysql-connector-java:8.0.30
- org.hibernate: hibernate-core-jakarta: 5.6.11.Final
- మావెన్ బిల్డ్ (mvn క్లీన్ ఇన్స్టాల్) చేయండి. మార్పు కోసం, మేము జావా వెర్షన్ 1.8ని ఉపయోగిస్తాము.
- ఐడియా ద్వారా లాంచ్ కాన్ఫిగరేషన్ని జోడించండి. ఈ అంశం అమలును ఉపన్యాసం https://codegym.cc/quests/lectures/cgu.module3.lecture02 (ఐటెమ్ 4) లో చూడవచ్చు . కళాఖండానికి వేరే పేరు మాత్రమే తేడా. మీరు ప్రతిదీ సరిగ్గా చేసి, అప్లికేషన్ను ప్రారంభించినట్లయితే, మీరు ఇలాంటివి చూస్తారు:
- వర్క్బెంచ్లో RPG స్కీమా సృష్టి స్క్రిప్ట్ను అమలు చేయండి:
CREATE SCHEMA `rpg` ;
- ఐచ్ఛికం . మీరు ఏ ప్రవర్తన అంచనా వేయబడుతుందో చూడాలనుకుంటే, మీరు కన్స్ట్రక్టర్ పారామీటర్లోని క్లాస్లో
com.game.service.PlayerService
ఉల్లేఖన విలువను “db” నుండి “మెమరీ” కి@Qualifier
మార్చవచ్చు . ఈ సందర్భంలో, స్ప్రింగ్ ఉపయోగిస్తుంది . పరీక్ష తర్వాత, ఉల్లేఖన విలువను తిరిగి "db" కి మార్చడం మర్చిపోవద్దు .IPlayerRepository
PlayerRepositoryMemory
@Qualifier
- ఎంటిటీ క్లాస్లో అవసరమైన అన్ని ఉల్లేఖనాలను అమర్చండి
com.game.entity.Player
. పట్టికకు "ప్లేయర్", స్కీమా "rpg" అని పేరు పెట్టాలి. ఎనామ్స్ కోసం,@Enumerated(EnumType.ORDINAL)
ఉల్లేఖనానికి అదనంగా ఉపయోగించండి@Column
. పేరు ఫీల్డ్ యొక్క పొడవు 12 అక్షరాలు, టైటిల్ ఫీల్డ్ - 30 అక్షరాల వరకు ఉండాలని నేను మీకు గుర్తు చేస్తాను. ఖచ్చితంగా అన్ని ఫీల్డ్లు శూన్యం కాకూడదు. - క్లాస్లో ప్రైవేట్ ఫైనల్ ఫీల్డ్ని
PlayerRepositoryDB
జోడించండి , క్లాస్ కన్స్ట్రక్టర్లో ఈ ఫీల్డ్ని ప్రారంభించండి. సాధారణ పనులలో వలె లక్షణాలను ఉపయోగించండి (మేము MySQL డేటాబేస్ వెర్షన్ 8తో పని చేస్తాము). ఆసక్తికరమైన నుండి - జోడించండిSessionFactory sessionFactory
ఇది పట్టికను మానవీయంగా (లేదా sql స్క్రిప్ట్ని అమలు చేయడం ద్వారా) సృష్టించకుండా మిమ్మల్ని అనుమతిస్తుంది.properties.put(Environment.HBM2DDL_AUTO, "update");
- అన్ని తరగతి పద్ధతులను అమలు చేయండి. మార్పు కోసం, ఇలా చేద్దాం:
getAll
ద్వారా పద్ధతిని అమలు చేయండిNativeQuery
getAllCount
ద్వారా పద్ధతిని అమలు చేయండిNamedQuery
- పద్ధతిలో
beforeStop
, ysessionFactory
పద్ధతిని కాల్ చేయండిclose
. పద్ధతిపై ఉల్లేఖనాన్ని కలిగి ఉండటం ద్వారా@PreDestroy
, అప్లికేషన్ను ఆపివేసే ముందు స్ప్రింగ్ ఈ పద్ధతిని కాల్ చేస్తుంది మరియు ఇది అన్ని సిస్టమ్ వనరులను చెల్లుబాటుగా విడుదల చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. - ఇతర పద్ధతుల అమలు మీ ఇష్టం. కానీ లావాదేవీల గురించి మర్చిపోవద్దు మరియు డేటాబేస్ యొక్క కంటెంట్లను ఏదో ఒకవిధంగా మార్చే పద్ధతుల కోసం కట్టుబడి ఉండండి.
- అప్లికేషన్ను ప్రారంభించండి. మీరు ప్రతిదీ సరిగ్గా చేస్తే, మీరు పని చేసే అప్లికేషన్ పొందుతారు. కానీ అక్కడ డేటా లేదు, కాబట్టి init.sql స్క్రిప్ట్ను (వనరుల నుండి) వర్క్బెంచ్ ద్వారా అమలు చేయండి, తద్వారా అవి కనిపిస్తాయి. ఆ తర్వాత, బ్రౌజర్లో F5 నొక్కండి మరియు మీరు అన్ని పద్ధతులను సరిగ్గా అమలు చేశారో లేదో తనిఖీ చేయండి.
- హైబర్నేట్ ఏ ప్రశ్నలను అమలు చేస్తుందో చూడటం ఆసక్తికరంగా ఉంటుంది, కాబట్టి ప్రశ్న లాగింగ్ను జోడిద్దాం. దీన్ని చేయడానికి, pom.xml కు p6spy:p6spy:3.9.1 డిపెండెన్సీని జోడించండి . వనరుల ఫోల్డర్లో, ఒక ఫైల్ను సృష్టించండి spy.properties , దీనిలో పేర్కొనండి:
మరియు PlayerRepositoryDB క్లాస్ యొక్క కన్స్ట్రక్టర్లో, రెండు ఎంపికలను మార్చండి:driverlist=com.mysql.cj.jdbc.Driver dateformat=yyyy-MM-dd hh:mm:ss a appender=com.p6spy.engine.spy.appender.StdoutLogger logMessageFormat=com.p6spy.engine.spy.appender.MultiLineFormat
ఇప్పుడు ప్రతి అభ్యర్థన కోసం సర్వర్ అవుట్పుట్లో మీరు 2 లైన్లను చూస్తారు. మొదటిది ఏ స్టేట్మెంట్ తయారు చేయబడింది, రెండవది చొప్పించిన పారామితులతో కూడిన ప్రశ్న.properties.put(Environment.DRIVER, "com.p6spy.engine.spy.P6SpyDriver"); properties.put(Environment.URL, "jdbc:p6spy:mysql://localhost:3306/rpg");
అంతే, ప్రాజెక్ట్ సిద్ధంగా ఉంది, అభినందనలు!
వాస్తవానికి, స్ప్రింగ్ నుండి హైబర్నేట్తో పనిచేయడం వేరొక విధానాన్ని ఉపయోగిస్తుంది, దీనిని మేము ఐదవ మాడ్యూల్లో కవర్ చేస్తాము.
ప్రాజెక్ట్ విశ్లేషణ.
GO TO FULL VERSION