சர்வர் ஏபிஐக்கு ஒரு ஆர்பிஜி நிர்வாக குழுவை செயல்படுத்த வேண்டிய அவசியமான முன்முனையில் உள்ள மூன்றாவது தொகுதியிலிருந்து திட்டத்தை நினைவில் கொள்கிறீர்களா? யாராவது நினைவில் வைத்திருந்தால், சர்வரில் சேமிப்பகமாக வரைபடம் பயன்படுத்தப்பட்டது. இயற்கையாகவே, நிஜ வாழ்க்கையில், அத்தகைய சேமிப்பகங்கள் பயன்படுத்தப்படுவதில்லை, ஆனால் தரவுத்தளங்கள் பயன்படுத்தப்படுகின்றன. ஹைபர்னேட்டைப் பயன்படுத்தி மாற்று களஞ்சிய அடுக்கு செயலாக்கத்தை எழுதுவதே இந்தத் திட்டத்தின் குறிக்கோளாக இருக்கும்.
இதற்கு உங்களுக்கு தேவை:
- ஒரு களஞ்சியத்திலிருந்து முட்கரண்டி
- திட்டத்தின் உங்கள் பதிப்பை உங்கள் கணினியில் பதிவிறக்கவும்.
- pom.xml இல் சார்புகளைச் சேர்க்கவும்:
- mysql:mysql-connector-java:8.0.30
- org.hibernate: hibernate-core-jakarta: 5.6.11.இறுதி
- ஒரு மேவன் கட்டமைப்பை உருவாக்கவும் (mvn சுத்தமான நிறுவல்). மாற்றத்திற்காக, நாங்கள் ஜாவா பதிப்பு 1.8 ஐப் பயன்படுத்துகிறோம்.
- ஐடியா வழியாக துவக்க உள்ளமைவைச் சேர்க்கவும். இந்த உருப்படியை செயல்படுத்துவதை விரிவுரையில் காணலாம் https://codegym.cc/quests/lectures/cgu.module3.lecture02 (உருப்படி 4). ஒரே வித்தியாசம் கலைப்பொருளுக்கு வேறு பெயர். நீங்கள் எல்லாவற்றையும் சரியாகச் செய்து பயன்பாட்டைத் தொடங்கினால், இது போன்ற ஒன்றை நீங்கள் காண்பீர்கள்:
- ஆர்பிஜி ஸ்கீமா உருவாக்க ஸ்கிரிப்டை ஒர்க் பெஞ்சில் இயக்கவும்:
CREATE SCHEMA `rpg` ;
- விருப்பத்தேர்வு . என்ன நடத்தை எதிர்பார்க்கப்படுகிறது என்பதை நீங்கள் பார்க்க விரும்பினால், கன்ஸ்ட்ரக்டர் அளவுருவில் உள்ள வகுப்பில்
com.game.service.PlayerService
சிறுகுறிப்பு மதிப்பை “db” இலிருந்து “மெமரி” ஆக@Qualifier
மாற்றலாம் . இந்த வழக்கில், ஸ்பிரிங் பயன்படுத்துகிறது . சோதனைக்குப் பிறகு, சிறுகுறிப்பு மதிப்பை "db" க்கு மாற்ற மறக்காதீர்கள் .IPlayerRepository
PlayerRepositoryMemory
@Qualifier
- நிறுவன வகுப்பில் தேவையான அனைத்து சிறுகுறிப்புகளையும் ஒழுங்கமைக்கவும்
com.game.entity.Player
. அட்டவணைக்கு "பிளேயர்", ஸ்கீமா "ஆர்பிஜி" என்று பெயரிட வேண்டும். ஈனாம்களுக்கு,@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