Hibernate Ve Maven Ile Veritabanındaki Tablolara Karşılık Gelen Java Sınıflarının Yaratılması

10-06-2014
Hibernate ve Maven ile reverse engineering yaparak veritabanındaki tablolara karşılık gelecek Java sınıfları (POJO-Plain Old Java Object), Dao sınıfları, hbm.xml dosyaları yaratabiliriz. Bu sayede çok fazla sayıda veritabanı tablolarını manuel olarak yaratmaktan kurtulmuş oluruz. Bu işlemin yapılmasına reverse engineering( tersinir mühendislik ) denir.

Önceki makalede bu işlemlerin Eclipse ile yapılması anlatılmıştır. Bu makalemizde ise maven kullanarak aynı işlemleri yapacağız.

Gerekenler:


hibernate.properties dosyası
model_reveng.xml dosyası
hibernate3-maven plugin
mysql-connector.jar

Klasör Yapısı

  • ProjeAdi
    • src
      • main
        • java
        • resources
          • META-INF
            • hibernate.properties
          • reveng
            • model_reveng.xml
      • test
    • pom.xml


hibernate.properties dosyası

src/main/resources/ klasörüne META-INF isminde bir klasör eklenir. Bu klasör içerisinde ise hibernate.properties isimli bir dosya yaratılır. Bu dosya veritabanına bağlanmak için gerekli ayarları içerecektir. Örnek bir hibernate.properties dosya içeriği şu şekildedir:

hibernate.connection.username=root
hibernate.connection.password=12
hibernate.connection.url=jdbc:mysql://127.0.0.1:3306/yourDB
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.dialect=org.hibernate.dialect.MySQL5MyIsamDialect



model_reveng.xml dosyası


src/main/resources/ klasörüne reveng isminde bir klasör eklenir. Bu klasör içerisinde ise model_reveng.xml isimli bir dosya yaratılır. Bu dosya reverse engineering yapılması için, gerekli ayarları içerir. Örnek bir model_reveng.xml dosyası şu şekildedir:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-reverse-engineering SYSTEM
        "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd">
<hibernate-reverse-engineering>
    <table-filter match-name=".*" package="your.package.here"/>
</hibernate-reverse-engineering>


package kısmında oluşturulacak Java dosyalarının paketi belirtilir.


Maven Hibernate Plugin


<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>hibernate3-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <components>
            <component>
                <name>hbm2java</name>
                <outputDirectory>src/main/java</outputDirectory>
                <implementation>jdbcconfiguration</implementation>
            </component>
        </components>
        <componentProperties>
            <!--Reverse Eng using hbm2java: ejb3 give us annotated classes -->
            <revengfile>/src/main/resources/reveng/model_reveng.xml</revengfile>
            <propertyfile>/src/main/resources/META-INF/hibernate.properties</propertyfile>
            <jdk5>true</jdk5>
            <ejb3>true</ejb3>
            <format>true</format>
        </componentProperties>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib-nodep</artifactId>
            <version>2.1_3</version>
        </dependency>
    </dependencies>
</plugin>


componentProperties kısmı en önemli konfigürasyonların olduğu kısımdır. ejb3 true denilerek annotasyon özellikli Java sınıflarının oluşturulması sağlanır. Ayrıca jdk5 ile de JDK 5 yapısına uygun sınıfların üretilmesi sağlanır. Ayrıca dikkat ederseniz propertyfile ve revengfile ayarlarının aldıkları değerler önceki adımlarda belirtilen adreslerdir. Bu adresler explicitly olarak belirtilmiştir.


Goals


Hibernate maven plugin'in bazı goal(hedef) seçenekleri şunlardır:

mvn hibernate3:hbm2cfgxml: Bir tane hibernate.cfg.xml dosyası üretir. Bu dosya içerisine, reverse engineering ile üretilen sınıfların map'leri ve hibernate.properties dosyasındaki ayarlar eklenir.

mvn hibernate3:hbm2dao: bir dizi DAO sınıfları üretir.

mvn hibernate3:hbm2java: Bu komut ile veritabanındaki tablolara karşılık gelen Java sınıfları oluşturulur. Bu sınıflar oluşturulurken componentProperties kısmında bulunan ejb3 ve jdk5 değerlerine göre annotasyon tabanlı veya JDK 5 sentakslı sınıflar üretilir.


Mysql Connector Dependency

<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>5.1.6</version>
</dependency>

© 2019 Tüm Hakları Saklıdır. Codesenior.COM