জাভা অবজেক্ট ম্যাপিংয়ের জন্য কোনও সরঞ্জাম? [বন্ধ]


231

আমি নিজের লেখা শুরু করার আগে জাভা ব্যবহার করে ডিটিও-তে ডিটিওতে রূপান্তর করার চেষ্টা করছি এবং স্বয়ংক্রিয় সরঞ্জামের সন্ধান করছি। আমি কেবল এটির জন্য কোনও বিনামূল্যে সরঞ্জাম উপলব্ধ কিনা তা জানতে চেয়েছিলাম।


1
জ্যাকসন (তাদেরকে JSON গ্রন্থাগার) একটি পন্থা নেই new ObjectMapper().convertValue(...)। জ্যাকসনের এনটেশন এবং টিকা-মিশ্রণগুলির জন্যও সমর্থন রয়েছে তাই আমি এটি একটি খুব ভাল বিকল্প বলে মনে করি।
সাইমন ফোর্সবার্গ

1
এখানে বিভিন্ন ফ্রেমওয়ার্ক এবং পারফরম্যান্স তুলনা সহ একটি নিবন্ধ রয়েছে। baeldung.com/java-performance-mapping-frameworks
খ্রিস্টান

উত্তর:


105

আপনি ডোজার চেষ্টা করতে পারেন ।

দোজার হ'ল জাভা বিন থেকে জাভা বিন ম্যাপার যা একটি বস্তুর থেকে অন্য বস্তুর কাছে পুনরাবৃত্তভাবে ডেটা অনুলিপি করে। সাধারণত, এই জাভা বিনগুলি বিভিন্ন জটিল ধরণের হবে।

ডোজার সাধারণ প্রপার্টি ম্যাপিং, জটিল ধরণের ম্যাপিং, দ্বি-দিকনির্দেশক ম্যাপিং, অন্তর্নিহিত-সুস্পষ্ট ম্যাপিং পাশাপাশি পুনরাবৃত্ত ম্যাপিং সমর্থন করে। এর মধ্যে ম্যাপিং সংগ্রহের বৈশিষ্ট্য অন্তর্ভুক্ত রয়েছে যা উপাদান স্তরের ম্যাপিংয়েরও প্রয়োজন।


24
খুব দীর্ঘ সময় পরে, আমি একটি আপডেট করতে এসেছি, আমি আশা করি আমার মন্তব্যটি পড়বে: এখন ডোজার মনে হচ্ছে একটি মৃত, এবং একটি ভাল বিকল্পটি ম্যাপস্ট্রাক ব্যবহার করা সহজ, এটি সহজ (টীকাগুলি সমর্থন করে), দ্রুত (কোনও প্রতিচ্ছবি নয়) ) এবং সুরক্ষিত বলে মনে হচ্ছে (এই মুহুর্তে)। এটি @ প্যাসাল থিভেন্ট তালিকায় অন্তর্ভুক্ত রয়েছে যদিও, তবে আমি এটির পরামর্শ দিই (লম্বোকের পাশাপাশি এটি ব্যবহার করে আমার কিছু সমস্যা হলেও)।
অ্যালেক্স


394

আশেপাশে কয়েকটি গ্রন্থাগার রয়েছে:

  • Commons-BeanUtils : ConversUtils -> স্ট্রিং স্কেলারের মানকে নির্দিষ্ট শ্রেণীর অবজেক্টে রূপান্তর করার জন্য ইউটিলিটি পদ্ধতি, স্ট্রিং অ্যারেগুলি নির্দিষ্ট শ্রেণীর অ্যারেতে রূপান্তর করা।

  • কমন্স-ল্যাং : অ্যারে ইউটিলেস -> অ্যারে, আদিম অ্যারে (যেমন ইনট []] এবং আদিম মোড়কের অ্যারে (যেমন পূর্ণসংখ্যার []] তে অপারেশন।

  • স্প্রিং ফ্রেমওয়ার্ক : স্প্রিংয়ের প্রোপার্টিএডিটরগুলির জন্য একটি দুর্দান্ত সমর্থন রয়েছে, এটি স্ট্রিংগুলিতে / থেকে অবজেক্টগুলিকে রূপান্তর করতেও ব্যবহার করা যেতে পারে।

  • ডোজার : ডোজার একটি শক্তিশালী, তবুও জাভা বিন ম্যাপের কাছে একটি জাভা বিন, যা এক বস্তুর থেকে অন্য বস্তুর কাছে পুনরাবৃত্তভাবে তথ্য অনুলিপি করে। সাধারণত, এই জাভা বিনগুলি বিভিন্ন জটিল ধরণের হবে।

  • ModelMapper : ModelMapper একটি বুদ্ধিমান অবজেক্ট ম্যাপিং কাঠামো যা স্বয়ংক্রিয়ভাবে একে অপরের কাছে মানচিত্র তৈরি করে। এটি নির্দিষ্ট ব্যবহারের ক্ষেত্রে পরিচালনা করার জন্য একটি সাধারণ রিফ্যাক্টরিং নিরাপদ এপিআই সরবরাহ করার সময় মানচিত্র অবজেক্টগুলিতে কনভেনশন ভিত্তিক পদ্ধতির ব্যবহার করে।

  • ম্যাপস্ট্রাক্ট : ম্যাপস্ট্রাক্ট শিম ম্যাপিংয়ের জন্য একটি সংকলন-সময় কোড জেনারেটর, যার ফলে দ্রুত হয় (প্রতিবিম্ব বা অনুরূপ ব্যবহার হয় না), নির্ভরতা কম এবং রানটাইমের সময় টাইপ-নিরাপদ ম্যাপিং কোড।

  • অরিকা : ওড়িকা ন্যূনতম ওভারহেড সহ দ্রুত ম্যাপার তৈরি করতে বাইট কোড জেনারেশন ব্যবহার করে।

  • সেলমা : ম্যাপিংয়ের জন্য সংকলন-সময় কোড-জেনারেটর

  • জেএম্প্পার : টিকা, এক্সএমএল বা এপিআই ব্যবহার করে শিমের ম্যাপার প্রজন্ম (2 বছর আগে শেষবারের মতো মৃত মনে হয়েছে)

  • স্মুকস : স্মুকস জাভাবিয়ান কার্টরিজ আপনাকে আপনার বার্তাগুলির ডেটা থেকে জাভা অবজেক্ট তৈরি করতে এবং পপুলেট করতে দেয় (যেমন ডেটা বাঁধুন) ( মন্তব্যগুলিতে সুপারফিলিন দ্বারা প্রস্তাবিত )। (সক্রিয় বিকাশের অধীনে আর নেই)

  • কমন্স-কনভার্ট : কমন্স-কনভার্টের উদ্দেশ্য একটি একক লাইব্রেরি সরবরাহ করা যা এক প্রকারের বস্তুকে অন্য প্রকারে রূপান্তর করার কাজে নিবেদিত হয়। প্রথম পর্যায়ে অবজেক্ট টু স্ট্রিং এবং স্ট্রিং টু অবজেক্ট রূপান্তরগুলিতে ফোকাস করা হবে। (মৃত মনে হচ্ছে, শেষ আপডেট ২০১০)

  • ট্রান্সমোর্ফ : ট্রান্সমোর্ফ হ'ল একটি নিখরচায় জাভা গ্রন্থাগার যা এক প্রকারের জাভা অবজেক্টকে অন্য ধরণের বস্তুতে রূপান্তর করতে ব্যবহৃত হয় (অন্য স্বাক্ষরের সাথে, সম্ভবত প্যারামিটারাইজড)। (মৃত মনে হচ্ছে, শেষ আপডেট 2013)

  • ইজেডমরফ : ইজডরফটি কোনও বস্তুকে অন্য অবজেক্টে রূপান্তর করার জন্য সহজ জাভা গ্রন্থাগার। এটি ডায়ানাবিয়ান্সের সাথে বহুমাত্রিক অ্যারে এবং ট্রান্সফর্মেশনগুলির জন্য আদিম ও অবজেক্টের রূপান্তরকে সমর্থন করে (মৃত মনে হচ্ছে, সর্বশেষ আপডেট হওয়া ২০০৮)

  • মরফ : মরফ একটি জাভা ফ্রেমওয়ার্ক যা কোনও অ্যাপ্লিকেশনটির অভ্যন্তরীণ আন্তঃআযোগিতা সহজ করে। তথ্য যেমন একটি অ্যাপ্লিকেশন মাধ্যমে প্রবাহিত হয়, এটি একাধিক রূপান্তর হয়। এই রূপান্তরগুলি বাস্তবায়নের জন্য মরফ একটি মানক উপায় সরবরাহ করে। (মৃত মনে হচ্ছে, শেষ আপডেট ২০০৮)

  • লরেন্টজ : লরেন্টজ একটি জেনেরিক অবজেক্ট-টু-অবজেক্ট রূপান্তর কাঠামো। এটি এক ধরণের জাভা অবজেক্টকে অন্য ধরণের একটি অবজেক্টে রূপান্তর করতে একটি সহজ এপিআই সরবরাহ করে। (মৃত মনে হচ্ছে)

  • OTOM : OTOM এর সাহায্যে আপনি যে কোনও অবজেক্ট থেকে অন্য কোনও অবজেক্টে কোনও ডেটা অনুলিপি করতে পারবেন। সম্ভাবনার শেষ নেই. "শরত্কালে" আপনাকে স্বাগতম। (মৃত মনে হচ্ছে)



1
কমন্স-রূপান্তর কেবল সুপ্ত নয় তবে এখন পুরোপুরি চলে গেছে ...
জিম ফেরানস

আসলে, আপনি যদি আপনার তালিকায় মু যুক্ত করতে চান তবে আমি আমার উত্তরটি সরিয়ে ফেলতে পারি, কারণ আপনার উত্তরটি স্পষ্টতই আরও সম্পূর্ণ। ;)
জিওফ্রে উইজম্যান

3
জাভা 8+ এর জন্য আরেকটি বিকল্প: erchu.github.io/bean-cp (অস্বীকৃতি: আমি এই প্রকল্পের লেখক)
রাফাল

1
@ টিএমট্রন: সম্পন্ন হয়েছে এবং আমি উত্তরটি সম্পাদনা করে ধর্মঘট সরিয়ে রেপো ইউআরএল রেফারেন্স করতে পারি (যেহেতু মূল পৃষ্ঠাটি এখনও 0.7.5 উল্লেখ করে)
patric.schenke

31

আর একটি হ'ল ওড়িকা - https://github.com/orika-mapper/orika

অরিকা হ'ল একটি জাভা বিন ম্যাপিং ফ্রেমওয়ার্ক যা পুনরুক্তরূপে (অন্য ক্ষমতাগুলির মধ্যে) ডেটা এক জিনিস থেকে অন্য বস্তুর অনুলিপি করে। বহু-স্তরযুক্ত অ্যাপ্লিকেশনগুলি বিকাশ করার সময় এটি খুব কার্যকর হতে পারে।

প্রয়োজনে কনফিগারেশন এবং এক্সটেনশনের মাধ্যমে কাস্টমাইজেশন সরবরাহ করার সময় অরিকা যতটা সম্ভব স্বয়ংক্রিয়ভাবে মনোনিবেশ করতে জোর দেয়।

ওরিকা বিকাশকারীকে এতে সক্ষম করে:

  • জটিল এবং গভীরভাবে কাঠামোগত সামগ্রী মানচিত্র
  • নেস্টেড বৈশিষ্ট্যগুলি শীর্ষ স্তরের বৈশিষ্ট্যে ম্যাপিং করে "ফ্ল্যাটেন" বা "প্রসারিত করুন" অবজেক্টগুলি এবং তদ্বিপরীত
  • ফ্লাইট অন ম্যাপার তৈরি করুন এবং ম্যাপিং কিছু বা সমস্ত নিয়ন্ত্রণ করতে কাস্টমাইজেশন প্রয়োগ করুন
  • বস্তু গ্রাফের যে কোনও জায়গায় অবজেক্টের নির্দিষ্ট সেট ম্যাপিংয়ের উপর সম্পূর্ণ নিয়ন্ত্রণের জন্য রূপান্তরকারী তৈরি করুন - টাইপ করে, এমনকি নির্দিষ্ট সম্পত্তি নাম দিয়েও
  • প্রক্সি বা বর্ধিত বস্তুগুলি হ্যান্ডেল করুন (হাইবারনেট বা বিভিন্ন মক ফ্রেমওয়ার্কের মতো)
  • একটি কনফিগারেশন সহ দ্বি-দিকীয় ম্যাপিং প্রয়োগ করুন
  • একটি লক্ষ্য বিমূর্ত শ্রেণি বা ইন্টারফেসের জন্য উপযুক্ত কংক্রিট শ্রেণীর উদাহরণগুলির মানচিত্র
  • বিপরীত ম্যাপিংগুলি হ্যান্ডেল করুন
  • জাভাবিয়ান চশমা ছাড়িয়ে জটিল কনভেনশনগুলি পরিচালনা করুন।

ন্যূনতম ওভারহেড সহ দ্রুত ম্যাপার তৈরি করতে অরিকা বাইট কোড জেনারেশন ব্যবহার করে।


2
আপনি অরিকা সম্পর্কে কয়েকটি শব্দ সরবরাহ করতে পারেন - এটি অন্যদের থেকে কী আলাদা করে তোলে
অলিম্পিউ পিওপি

এটি সম্ভবত ডোজারের চেয়ে অনেক দ্রুত - ডোজার শান্ত ধীর।
ওন্দ্রেজ বোজেক

21

মডেলম্যাপার চেক আউট মূল্যবান আরেকটি গ্রন্থাগার। মডেলম্যাপারের ডিজাইন এটি অন্যান্য লাইব্রেরির চেয়ে আলাদা:

  • উত্স এবং গন্তব্য বৈশিষ্ট্যের সাথে মেলে বুদ্ধিমানভাবে বস্তু মডেলগুলি স্বয়ংক্রিয়ভাবে মানচিত্র করে
  • একটি রিফ্যাক্টরিং নিরাপদ ম্যাপিং এপিআই সরবরাহ করে যা স্ট্রিংগুলি ব্যবহার না করে ক্ষেত্র এবং পদ্ধতিগুলি মানচিত্রের জন্য প্রকৃত কোড ব্যবহার করে
  • কাস্টম পরিস্থিতিতে সাধারণ পরিচালনা করার জন্য কনভেনশন ভিত্তিক কনফিগারেশন ব্যবহার করে

আরও তথ্যের জন্য মডেলম্যাপার সাইটটি দেখুন:

http://modelmapper.org


13

অ্যাপাচি কমন্স বিয়ান্টিল ব্যবহার করুন:

static void copyProperties(Object dest, Object orig) -জগতের নাম সমান হ'ল সমস্ত ক্ষেত্রে মূল বিন থেকে গন্তব্য বিন পর্যন্ত কপির সম্পত্তি মান।

http://commons.apache.org/proper/commons-beanutils/


3
হ্যাঁ, তবে উত্স শিমের মধ্যে থাকা বৈশিষ্ট্যগুলি, তবে গন্তব্য শিমের মধ্যে নেই simply যাইহোক পাবলোজিমকে ধন্যবাদ :) আমি মনে করি ডিও এবং
ডিটিওর

1
যথেষ্ট ভাল - আমি এটি জানতাম না ... পাস্কেলের তালিকাটি বেশ চিত্তাকর্ষক!
পাবলোজিম


3

আমি আপনাকে JMapper ফ্রেমওয়ার্ক চেষ্টা করার পরামর্শ দিচ্ছি ।

এটি জাভা বিন ম্যাপের জাভা বিন, আপনাকে টিকা এবং / অথবা এক্সএমএল দিয়ে গতিশীলভাবে ডেটা প্যাসেজ করতে দেয়।

জেএম্প্পার দিয়ে আপনি করতে পারেন:

  • লক্ষ্য বস্তুগুলি তৈরি এবং সমৃদ্ধ করুন
  • ম্যাপিংয়ে একটি নির্দিষ্ট যুক্তি প্রয়োগ করুন
  • এক্সএমএল ফাইলটি স্বয়ংক্রিয়ভাবে পরিচালনা করুন
  • 1 থেকে N এবং N এর সাথে 1 টি সম্পর্ক বাস্তবায়ন করুন
  • সুস্পষ্ট রূপান্তর কার্যকর করুন
  • উত্তরাধিকার সূত্রে প্রাপ্ত কনফিগারেশন প্রয়োগ করুন

2

আমি মৌ কে বিকল্প হিসাবে যুক্ত করতে পেরে খুশি, যদিও স্পষ্টতই আমি এর প্রতি পক্ষপাতিত্ব করেছি: http://geoffreywiseman.github.com/Moo/

এটি আরও জটিল জটিলতার জন্য যুক্তিসঙ্গতভাবে সহজ মামলার ক্ষেত্রে সহজ ক্ষেত্রে ব্যবহার করা খুব সহজ, যদিও এমন আরও কিছু ক্ষেত্র রয়েছে যেখানে আমি আরও জটিলতার জন্য এটি বাড়ানোর কল্পনা করতে পারি।


2

আপনি ডোজারের উপর ভিত্তি করে ম্যাপিং ফ্রেমওয়ার্কটি চেষ্টা করতে পারেন তবে এক্সেল ম্যাপিং ঘোষণার মাধ্যমেও। তারা কিছু সরঞ্জাম এবং অতিরিক্ত দুর্দান্ত বৈশিষ্ট্য পেয়েছে। এ চেক করুন http://openl-tablets.sf.net/mapper

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.