হাইবারনেটে @ টেম্পোরাল টীকাগুলির ব্যবহার কী?


104

হাইবারনেট ডকুমেন্টেশনে @Temporalটীকা দেওয়ার জন্য নীচের তথ্য রয়েছে :

সাধারণ জাভা এপিআইগুলিতে, সময়ের অস্থায়ী নির্ভুলতা সংজ্ঞায়িত হয় না। টেম্পোরাল ডেটা নিয়ে কাজ করার সময় আপনি ডাটাবেসে প্রত্যাশিত নির্ভুলতা বর্ণনা করতে চাইতে পারেন। টেম্পোরাল ডেটাতে DATE, TIME, বা TIMESTAMP নির্ভুলতা থাকতে পারে (যেমন আসল তারিখ, কেবলমাত্র সময় বা উভয়)। এটি সূক্ষ্ম করতে @ টেম্পোরাল টিকাটি ব্যবহার করুন।

কী temporal precision of time is not definedমানে? কি temporalতথ্য এবং তার স্পষ্টতা? টিউন টিউনটি কেমন করে?


4
আপনি যদি ক্যালেন্ডারটিকে আপনার সত্তার সম্পত্তি হিসাবে ব্যবহার করেন তবে সরল জাভাতে এটি প্রচুর তথ্য মুদ্রণ করে যা আপনি যখন এটি ডাটাবেসে সংরক্ষণ করতে চান তখন উদাহরণস্বরূপ that সেই ক্ষেত্রে আপনার কাছে @ টেম্পোরাল (টেম্পোরাল টাইপ.টাইমস্ট্যাম্প) এর মতো কিছু থাকতে পারে আপনার সত্ত্বায় ক্যালেন্ডার ক্যালেন্ডার আপনার ডাটাবেসে টাইমস্ট্যাম্প সংরক্ষণ করার জন্য বা ঠিক তারিখ বা ঠিক সময় আপনার ক্যালেন্ডারের সম্পত্তিতে @ টেম্পোরাল (টেম্পোরাল টাইপ.প্রাইডি) বা @ টেম্পোরাল (টেম্পোরাল টাইপ.টাইম) পরিবর্তন করে।
ব্যবহারকারী 3487063

উত্তর:


107

এই টীকাটি ধ্রুবক ক্ষেত্র বা প্রকার java.util.Dateএবং এর বৈশিষ্ট্যের জন্য নির্দিষ্ট করা আবশ্যক java.util.Calendar। এটি কেবল ক্ষেত্র বা এই ধরণের বৈশিষ্ট্যের জন্য নির্দিষ্ট করা যেতে পারে।

Temporalটীকা সাথে ব্যবহার করা যেতে পারে Basicটীকা, Idটীকা বা ElementCollectionটীকা (যখন উপাদান সংগ্রহ মূল্য যেমন একটি সময়গত ধরনের হয়।

সাধারণ জাভা এপিআইগুলিতে, সময়ের অস্থায়ী নির্ভুলতা সংজ্ঞায়িত হয় না। অস্থায়ী ডেটা নিয়ে কাজ করার সময়, আপনি ডাটাবেসে প্রত্যাশিত নির্ভুলতা বর্ণনা করতে চাইতে পারেন। টেম্পোরাল ডেটাতে DATE, TIME, বা TIMESTAMP নির্ভুলতা থাকতে পারে (যেমন, আসল তারিখ, কেবলমাত্র সময় বা উভয়)। @Temporalসূক্ষ্ম সুরতে টীকাটি ব্যবহার করুন ।

টেম্পোরাল ডেটা হ'ল সময় সম্পর্কিত ডেটা। উদাহরণস্বরূপ, একটি বিষয়বস্তু পরিচালন ব্যবস্থায়, কোনও নিবন্ধের তৈরি-তারিখ এবং শেষ-আপডেটের তারিখটি অস্থায়ী ডেটা। কিছু ক্ষেত্রে, টেম্পোরাল ডেটা যথাযথ প্রয়োজন এবং আপনি সুনির্দিষ্ট তারিখ / সময় বা উভয় ( TIMESTAMP) ডাটাবেস সারণিতে সঞ্চয় করতে চান ।

মূল জাভা এপিআইগুলিতে অস্থায়ী নির্ভুলতা নির্দিষ্ট করা হয়নি। টাইমস্ট্যাম্প এবং এর মধ্যে পিছনে রূপান্তর করে @Temporalএমন একটি JPAটিকা java.util.Date। এটি time-stampসময়ে রূপান্তরিত হয়। উদাহরণস্বরূপ, নীচে স্নিপেটে, @Temporal(TemporalType.DATE) সময় মানটি হ্রাস করে এবং কেবল তারিখটি সংরক্ষণ করে

@Temporal(TemporalType.DATE)
private java.util.Date creationDate;

জাভাডোকস হিসাবে,

কোয়েরি পদ্ধতির পরামিতিগুলিতে একটি উপযুক্ত c @ কোড কোড টেম্পোরাল টাইপ declare ঘোষণা করার জন্য টিকা। মনে রাখবেন, এই টীকা শুধুমাত্র টাইপ {@link তারিখ} সঙ্গে পরামিতি ব্যবহার করা যেতে পারে ডিফল্টTemporalType.DATE

[উপরে বিভিন্ন তথ্য থেকে সংগৃহীত তথ্য]


আমি জাভা টাইপ টাইমস্ট্যাম্পের সাহায্যে এটি কেন ব্যবহার করতে পারি না?
পাউডার366

4
সুতরাং আপনি যদি কেবল টেম্পোরালটাইপ ব্যবহার করেন? টাইমস্ট্যাম্প ... এই টীকাটি ব্যবহার করার কোনও মানে আছে কি? তারিখগুলি
এগুলি

আমি কীভাবে মাইএসকিএল ডিবিতে এই ফর্ম্যাটটিতে সঞ্চয় করতে পারিyyyy-MM-dd
শান্তারাম টুপে

@ শান্তরাম_ এটি আপনাকে সাহায্য করতে পারে
অঙ্কুর

4
আমি ইনপুট আছে: 02/10/2017এবং তা রূপান্তর করতে চান 2017-10-02বা2017/10/02
শান্তারাম Tupe

43

@Temporal নীচের কলাম আইটেমগুলির মধ্যে ডাটাবেস টেবিলটিতে সঞ্চয় করতে ব্যবহার করা যেতে পারে এমন একটি জেপিএ টিকা রয়েছে:

  1. তারিখ ( java.sql.Date)
  2. সময় ( java.sql.Time)
  3. টাইমস্ট্যাম্প ( java.sql.Timestamp)

সাধারণত যখন আমরা Dateক্লাসে কোনও ক্ষেত্র ঘোষণা করি এবং এটি সঞ্চয় করার চেষ্টা করি।
এটি ডাটাবেসে TIMESTAMP হিসাবে সঞ্চয় করবে ।

@Temporal
private Date joinedDate;

উপরের কোডের মান 08-07-17 04: 33: 35.870000000 এএম দেখায়

আমরা যদি কেবলমাত্র তারিখটি ডাটাবেসে সঞ্চয় করতে চাই ,
আমরা ব্যবহার / সংজ্ঞা দিতে পারি TemporalType

@Temporal(TemporalType.DATE)
private Date joinedDate;

এবার এটি ডাটাবেজে 08-07-17 সঞ্চয় করবে

পাশাপাশি আরও কিছু বৈশিষ্ট্য রয়েছে @Temporalযা প্রয়োজনের ভিত্তিতে ব্যবহার করা যেতে পারে।


ডিফল্ট মান হ'ল টেম্পোরালটাইপ। আপনি কেন সময় অংশের সাথে অ-টিকা বিশিষ্ট মানটির জন্য সরবরাহ করেছেন সে সম্পর্কে কোনও ধারণা নেই।
সাইমন লজিক

যদি ওপরের দিক দিয়ে দু'টি তারিখ একই থাকে তবে উপরের দিকটি কাজ করছে (টেম্পোরাল টাইপ.আর।)।
লোভা চিত্তুমুরি

কপি পেস্ট করবেন না উত্তর। stackoverflow.com/questions/25333711/...
Lova Chittumuri

11

টেম্পোরাল টাইপগুলি সময় ভিত্তিক প্রকারের সেট যা স্থির স্থির ম্যাপিংয়ে ব্যবহার করা যেতে পারে।

সমর্থিত সময়গত ধরনের তালিকাতে তিন অন্তর্ভুক্ত java.sqlধরনের java.sql.Date, java.sql.Timeএবং java.sql.Timestamp, এবং এটি দুই অন্তর্ভুক্ত java.utilধরনের java.util.Dateএবং java.util.Calendar

java.sqlধরনের সম্পূর্ণরূপে ঝামেলা মুক্ত। এগুলি অন্য যে কোনও সাধারণ ম্যাপিংয়ের মতোই কাজ করে এবং তাদের কোনও বিশেষ বিবেচনার প্রয়োজন নেই।

জেডিবিসি ড্রাইভারের সাথে যোগাযোগ করার সময় java.utilকোনটি জেডিবিসি java.sqlব্যবহার করতে হবে তা নির্দেশ করতে দুটি ধরণের অতিরিক্ত মেটাডেটা প্রয়োজন । এটি টীকা দিয়ে @Temporalএনেট করে এবং জেডিবিসি টাইপকে TemporalTypeগণনা করা টাইপের মান হিসাবে উল্লেখ করে এটি করা হয় ।

প্রতিটি java.sqlধরণের প্রতিনিধিত্ব করার জন্য DATE, TIME এবং TIMESTAMP এর তিনটি গণনা করা মান রয়েছে ।


5

এটা ব্যবহার কর

@Temporal(TemporalType.TIMESTAMP)
@Column(name="create_date")
private Calendar createDate;

public Calendar getCreateDate() {
    return createDate;
}

public void setCreateDate(Calendar createDate) {
    this.createDate = createDate;
}

4

যদি আপনি সংক্ষিপ্ত উত্তর খুঁজছেন:

Java.util.Date ব্যবহারের ক্ষেত্রে জাভা সত্যিই জানে না কীভাবে সরাসরি এসকিউএল টাইপের সাথে সম্পর্কিত। এই যখন @Temporalখেলা আসে। এটি পছন্দসই এসকিউএল টাইপ নির্দিষ্ট করতে ব্যবহৃত হয়।

সূত্র: বেলডাং


3

আমি হাইবারনেট 5.2 ব্যবহার করি এবং এটির @Temporalআর প্রয়োজন হয় না।
java.util.date , sql.date , time.LocalDate তারিখ / টাইমস্ট্যাম্প হিসাবে উপযুক্ত ডেটাটাইপ সহ ডিবিতে সংরক্ষণ করা হয়।


তবে সমাধানটি কী যদি আমরা কেবলমাত্র হাইবারনেট 5.x
কিমি থেকে

জাভা 8 স্থানীয় তারিখের ব্যবহার
জোশ

1

আমরা ডেটাবেস টেবিলটিতে তারিখ, সময় বা উভয় সন্নিবেশ করতে @ টেম্পোরাল টীকাগুলি ব্যবহার করি Temp

@Temporal(TemporalType.DATE) // insert date
@Temporal(TemporalType.TIME) // insert time
@Temporal(TemporalType.TIMESTAMP) // insert  both time and date.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.