Hibernate Configuration File සිංහලෙන් | hibernate.cfg.xml Properties | Java Hibernate Sinhala

Hibernate Configuration File සිංහලෙන් | hibernate.cfg.xml Properties | Java Hibernate Sinhala

හලෝ කට්ටියටම! Hibernate Configuration File එක සිංහලෙන් තේරුම් ගනිමු

අද අපි කතා කරන්න යන්නේ Java developers ලට නැතුවම බැරි තාක්ෂණයක් ගැන. ඒ තමයි Hibernate Framework එක. විශේෂයෙන්ම, Hibernate project එකක හදවත වගේ ක්‍රියා කරන Configuration File එක ගැන. මේක හරියට ඔයාගේ වාහනේ එන්ජිමට ඉන්ධන සපයන විදිය, ටයර් වලට වාතය පුරවන විදිය වගේ පොඩි පොඩි settings තීරණය කරන තැනක් වගේ තමයි. ඒ නිසා මේක හරියට තේරුම් ගැනීම ඔයාගේ project එකේ සාර්ථකත්වයට අත්‍යවශ්‍යයි.

database එකක් එක්ක Java application එකක් සම්බන්ධ කරනකොට අපිට ගොඩක් දේවල් configure කරන්න වෙනවා. JDBC drivers load කරන එක, database URL එක, username, password දෙන එක වගේ දේවල්. Hibernate අපිට මේ වැඩේ ගොඩක් ලේසි කරනවා. හැබැයි ඒකට, Hibernate වලට මේ හැම විස්තරයක්ම දැනගන්න ඕනේ. ඒ විස්තර ටික තමයි අපි hibernate.cfg.xml කියන XML file එකෙන් නැත්නම් application.properties වගේ files වලින් දෙන්නේ.

අද මේ article එකෙන් අපි hibernate.cfg.xml file එකේ තියෙන ප්‍රධානම properties ගැන විස්තරාත්මකව කතා කරනවා. ඔයා දැනටමත් Hibernate project එකක් කරන කෙනෙක්ද, නැත්නම් අලුතින් ඉගෙන ගන්න කෙනෙක්ද? මේ information ඔයාට අනිවාර්යයෙන්ම ප්‍රයෝජනවත් වෙයි!

මොකක්ද මේ Hibernate Configuration File එක?

සරලවම කිව්වොත්, hibernate.cfg.xml කියන්නේ Hibernate framework එකේ runtime behavior එක define කරන XML file එකක්. Database එකට connect වෙන්නේ කොහොමද, මොන වගේ SQL queries ද generate කරන්න ඕනේ, ඒ වගේම අපේ Java classes database tables වලට map කරන්නේ කොහොමද කියන හැම දේම මේ file එකෙන් තමයි configure කරන්නේ.

මේ file එක සාමාන්‍යයෙන් ඔයාගේ project එකේ src/main/resources ෆෝල්ඩර් එක ඇතුලේ තමයි තියෙන්නේ. මේකට hibernate.properties කියන alternative එකත් තියෙනවා, ඒක key-value pairs විදියට properties define කරනවා. හැබැයි hibernate.cfg.xml එකේ වැඩි flexibility එකක් තියෙන නිසා ගොඩක් අය ඒක භාවිතා කරනවා.

hibernate.cfg.xml File එකක මූලික සැකිල්ලක්

මුලින්ම බලමු මේ file එකක මූලික structure එක කොහොමද කියලා.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- Hibernate Properties will go here -->

        <!-- Mapping files for your entity classes will go here -->
        <!-- <mapping class="com.yourpackage.YourEntityClass"/> -->

    </session-factory>
</hibernate-configuration>

මේක තමයි සාමාන්‍යයෙන් හැම hibernate.cfg.xml file එකකම තියෙන මූලික structure එක. <session-factory> tag එක ඇතුලේ තමයි අපි Hibernate properties සහ entity classes වලට අදාළ mapping files specify කරන්නේ.

Database Connection Properties

මේවා තමයි Hibernate වලට database එකකට connect වෙන්න අවශ්‍ය මූලිකම විස්තර ටික. හරියට database එකට යන පාර වගේ!

1. connection.driver_class

මේකෙන් කියන්නේ අපි භාවිතා කරන database එකට අදාළ JDBC driver එක මොකක්ද කියලා. හැම database එකකටම ඒකටම ආවේණික JDBC driver එකක් තියෙනවා. උදාහරණයක් විදියට:

  • MySQL: com.mysql.cj.jdbc.Driver
  • PostgreSQL: org.postgresql.Driver
  • Oracle: oracle.jdbc.driver.OracleDriver

2. connection.url

මේක තමයි database එකට connect වෙන්න ඕනේ URL එක. මේකෙදි database වර්ගය, host name එක, port එක, database name එක වගේ විස්තර සඳහන් වෙනවා.

  • MySQL: jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC
  • PostgreSQL: jdbc:postgresql://localhost:5432/your_database_name

3. connection.username

database එකට access වෙන්න අවශ්‍ය username එක.

4. connection.password

database එකට access වෙන්න අවශ්‍ය password එක.

මේ properties ටික අපි <property> tag එක ඇතුලේ දාන්නේ මෙහෙමයි:

<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">my_secret_password</property>

සැලකිය යුතුයි: production environment වලදී password එක මෙහෙම directly දාන්නේ නැහැ. Environment variables, vault services වගේ ආරක්ෂිත ක්‍රම භාවිතා කරනවා.

SQL Dialect Properties (hibernate.dialect)

මේක Hibernate configuration file එකේ තියෙන ඉතාම වැදගත් property එකක්. මේකෙන් කරන්නේ අපි භාවිතා කරන database එකට ගැලපෙන SQL queries generate කරන්න Hibernate වලට උදව් කරන එක.

ඇයි මේක වැදගත්? මොකද හැම database එකක්ම (MySQL, PostgreSQL, Oracle වගේ) SQL standard එක implement කරලා තියෙන්නේ පොඩි පොඩි වෙනස්කම් එක්ක. උදාහරණයක් විදියට, "limit" clause එක MySQL වලදි භාවිතා කරන විදියට නෙවෙයි Oracle වලදි භාවිතා කරන්නේ. ඒ වගේ database specific features Hibernate වලට හඳුනාගන්න hibernate.dialect එක උදව් කරනවා.

සාමාන්‍යයෙන් භාවිතා වන Dialects කිහිපයක්:

  • MySQL 5.x: org.hibernate.dialect.MySQL5Dialect
  • PostgreSQL: org.hibernate.dialect.PostgreSQLDialect
  • Oracle 10g: org.hibernate.dialect.Oracle10gDialect
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>

ඔයා භාවිතා කරන database එකට අදාළ dialect එක හරියටම දෙන්න අමතක කරන්න එපා. වැරදි dialect එකක් දුන්නොත් ඔයාගේ application එකේ runtime errors එන්න පුළුවන්.

වෙනත් අත්‍යවශ්‍ය Properties

1. hibernate.show_sql

මේ property එක true විදියට set කලොත්, Hibernate විසින් generate කරන හැම SQL query එකක්ම console එකේ print කරනවා. Debugging කරනකොට මේක ගොඩක් ප්‍රයෝජනවත්. Production environment වලදි නම් මේක false විදියට තියන එක හොඳයි, මොකද performance වලට බලපෑමක් වෙන්න පුළුවන්.

<property name="hibernate.show_sql">true</property>

2. hibernate.format_sql

hibernate.show_sql එක true නම්, මේ property එකත් true කළොත් console එකේ print වෙන SQL queries ලස්සනට, format වෙලා පෙන්නනවා. කියවන්න ලේසියි.

<property name="hibernate.format_sql">true</property>

3. hibernate.hbm2ddl.auto

මේ property එකෙන් define කරන්නේ Hibernate විසින් database schema එක create, update, drop කරන විදිය. මේකට ගොඩක් values තියෙනවා:

  • create: Hibernate විසින් application එක start වෙනකොට හැම table එකක්ම drop කරලා අලුතින් create කරනවා. (Development වලදී මුලින්ම tables හදාගන්න හොඳයි, production වලට නම් භයානකයි!)
  • create-drop: create වගේම, application එක shutdown වෙනකොට tables drop කරනවා. (Testing වලට ගොඩක් හොඳයි.)
  • update: Hibernate විසින් දැනට තියෙන tables එක්ක අපේ entity classes වලට ගැලපෙන විදියට වෙනස්කම් කරනවා. අලුත් columns add කරනවා, type වෙනස් කරනවා. (Development වලදී ගොඩක් භාවිත වෙනවා. Production වලදී පරිස්සමෙන්!)
  • validate: Hibernate විසින් දැනට තියෙන database schema එක අපේ entity classes එක්ක validate කරනවා. මොකක් හරි නොගැලපීමක් තිබ්බොත් error එකක් දෙනවා. (Production වලට සුදුසුයි.)
  • none: කිසිම දෙයක් කරන්නේ නැහැ. Database schema එක maintain කරන්න වෙනත් tool එකක් (Flyway, Liquibase) භාවිතා කරනවා නම් මේක හොඳයි.
<property name="hibernate.hbm2ddl.auto">update</property> <!-- Development වලට ගොඩක් වෙලාවට මේක භාවිතා කරනවා. -->

අවවාදයයි: create සහ create-drop production environment වලදී කිසිසේත්ම භාවිතා කරන්න එපා. ඔයාගේ database එකේ තියෙන data ඔක්කොම නැතිවෙන්න පුළුවන්.

4. hibernate.current_session_context_class

මේ property එකෙන් define කරන්නේ Hibernate Session object එක manage කරන විදිය. ගොඩක් වෙලාවට අපි thread එක භාවිතා කරනවා. Spring Framework වගේ දේවල් එක්ක වැඩ කරනකොට මේක auto-managed වෙනවා. සාමාන්‍ය Standalone application එකකදී thread කියලා දෙන්න පුළුවන්.

<property name="hibernate.current_session_context_class">thread</property>

Mapping Entity Classes

අන්තිමට, ඔයාගේ Java entity classes database tables වලට map කරන්න නම්, ඒ classes ටික configuration file එකට add කරන්න ඕනේ. මේක කරන්න පුළුවන් options දෙකක් තියෙනවා: <mapping resource="file.hbm.xml"/> (XML mapping files සඳහා) නැත්නම් <mapping class="com.yourpackage.YourEntityClass"/> (Annotation-based mapping සඳහා).

ගොඩක් වෙලාවට අපි annotations භාවිතා කරන නිසා දෙවෙනි option එක තමයි බහුලව භාවිත වෙන්නේ.

<!-- Example of mapping an entity class -->
<mapping class="com.example.model.Product"/>
<mapping class="com.example.model.User"/>

නිගමනය (Conclusion)

ඉතින් යාලුවනේ, hibernate.cfg.xml file එක කියන්නේ Hibernate project එකක cornerstone එකක් කියලා දැන් ඔයාලට පැහැදිලි ඇති කියලා හිතනවා. Database connection details වල ඉඳලා SQL dialect එක, debugging settings, schema management වගේ හැම දෙයක්ම මේ file එකෙන් තමයි පාලනය වෙන්නේ.

මේ හැම property එකක්ම හරියට තේරුම් අරගෙන, ඔයාගේ project එකේ අවශ්‍යතාවලට ගැලපෙන විදියට configure කරන එක ගොඩක් වැදගත්. වැරදි configuration එකක් නිසා performance issues, runtime errors, නැත්නම් data loss වගේ ප්‍රශ්න පවා ඇතිවෙන්න පුළුවන්.

දැන් ඔයාට hibernate.cfg.xml එකේ තියෙන ප්‍රධානම properties ගැන හොඳ අවබෝධයක් තියෙනවා. මේ දැනුම ඔයාගේ ඊළඟ Hibernate project එකේදී සාර්ථකව භාවිතා කරන්න! ඔයාට මොනවා හරි ප්‍රශ්න තියෙනවා නම්, නැත්නම් ඔයාගේ අත්දැකීම් මොනවද කියලා පහළින් comment එකක් දාලා අපිට කියන්න. ඊළඟ tutorial එකෙන් හමුවෙමු!