gikoha’s blog

個人的メモがわり

middlegen

http://ameblo.jp/archive-redo-blog/entry-10033356393.html#main
ここを参考に..
build.xml

<?xml version="1.0" encoding="utf-8"?>

<project name="Hibernate Sample" default="jar" basedir=".">
   <target name="init">

      <property file="${basedir}/build.properties"/>

      <path id="lib.class.path">
         <pathelement path="${database.driver.classpath}"/>
        <fileset dir="${middlegen.dir}" includes="**/*.jar"/>
         <fileset dir="${middlegen.dir}/samples/lib" includes="*.jar"/>
         <fileset dir="${hibernate-ext.dir}/tools" includes="**/*.jar"/>
         <fileset dir="${hibernate.dir}"           includes="**/*.jar"/>
      </path>

      <taskdef
         name="middlegen"
         classname="middlegen.MiddlegenTask"
         classpathref="lib.class.path"
      />

      <taskdef
         name="hbm2java"
         classname="net.sf.hibernate.tool.hbm2java.Hbm2JavaTask"
         classpathref="lib.class.path"
      />
   </target>

   <target name="db2hbm" depends="init">

      <middlegen
         appname="${name}"
         prefsdir="${build.dir}"
         gui="${gui}"
         databaseurl="${database.url}"
         driver="${database.driver}"
         username="${database.userid}"
         password="${database.password}"
         schema="${database.schema}"
         catalog="${database.catalog}"
      >
         <hibernate
            destination="${src.dir}"
            package="${package}"
            genXDocletTags="${gen.xdoclet-tag}"
         javaTypeMapper="middlegen.plugins.hibernate.HibernateJavaTypeMapper"
         />
<table name="Tcholdata"/>      ここは変更必要
<table name="disease"/>   ここは変更必要
      </middlegen>

  </target>

  <target name="hbm2java" depends="db2hbm">
    <hbm2java output="${src.dir}">
      <fileset dir="${src.dir}">
        <include name="**/*.hbm.xml" />
      </fileset>
    </hbm2java>
  </target>

  <target name="compile" depends="hbm2java">

    <javac destDir="${build.dir}/classes"
           srcDir="${build.dir}/classes"
           classpathref="lib.class.path" />
    <copy todir="${build.dir}/classes">
      <fileset dir="${src.dir}">
         <include name="**/*.hbm.xml" />
      </fileset>
    </copy>

  </target>

  <target name="jar" depends="compile">
    <jar destfile="${name}.jar">
      <fileset dir="${build.dir}/classes">
         <include name="**/*" />
      </fileset>
    </jar>
  </target>

</project>

build.properties

middlegen.dir             = workspace/middlegen-2.1
hibernate.dir             = workspace/hibernate-distribution-3.6.5.Final/lib/required
hibernate-ext.dir         = workspace/hibernate-extensions-2
src.dir                   = src
build.dir                 = build
database.driver.classpath = /path/to/mysql-connector-java-5.1.17-bin.jar
package                   = testhib
name                      = testhib
database.driver           = com.mysql.jdbc.Driver
database.url              = jdbc:mysql://databasehost:3306/databasename
database.userid           = username
database.password         = pass
database.schema           =
database.catalog          =
gui                       = true
gen.xdoclet-tag           = true

これで "ant" と入力したらGUIまで立ち上がった
テーブル disease, Tcholdataを作成

テーブルの.javaと.hbm.xmlができたので、testhibパッケージをsrcへ、.hbm.xmlはconfigへ

hibernate-distribution-3.6.5.Final, slf4j-1.6.1, commons-lang-2.6 をそれぞれダウンロードして展開
workspaceに配置して以下を外部JARとして取り込む

workspace/hibernate-distribution-3.6.5.Final/lib/required/antlr-2.7.6.jar
workspace/hibernate-distribution-3.6.5.Final/lib/required/commons-collections-3.1.jar
workspace/hibernate-distribution-3.6.5.Final/lib/required/dom4j-1.6.1.jar
workspace/hibernate-distribution-3.6.5.Final/lib/required/javassist-3.12.0.GA.jar
workspace/hibernate-distribution-3.6.5.Final/lib/required/jta-1.1.jar
workspace/hibernate-distribution-3.6.5.Final/lib/required/slf4j-api-1.6.1.jar
workspace/hibernate-distribution-3.6.5.Final/hibernate3.jar
workspace/slf4j-1.6.1/slf4j-nop-1.6.1.jar
workspace/commons-lang-2.6/commons-lang-2.6.jar
workspace/hibernate-distribution-3.6.5.Final/lib/jpa/hibernate-jpa-2.0-api-1.0.0.Final.jar

config/hibernate.cfg.xmlを作る

<?xml version="1.0"?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://DBHOST/DBNAME</property> ここ直してね
        <property name="connection.username">USERNAME</property> ここ直してね
        <property name="connection.password">PASSWORD</property> ここ直してね
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="show_sql">false</property>
        <property name="use_outer_join">true</property>
        <mapping resource="Disease.hbm.xml"/> ここ直してね
        <mapping resource="Tcholdata.hbm.xml"/> ここ直してね
    </session-factory>
</hibernate-configuration>

src/testhibbottom.java

import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.cfg.Configuration;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

import testhib.Disease;

public class testhibbottom
{

	/**
	 * @param args
	 */
	public static void main(String[] args) throws HibernateException
	{
		Configuration cfg = new Configuration();
		cfg.configure();

		SessionFactory factory = cfg.buildSessionFactory();
		Session s = factory.openSession();
		Transaction tx = s.beginTransaction();
		try
		{
			List list = s.createCriteria(Disease.class).list();
			for (int i = 0; i < list.size(); i++)
			{
				// レコードとなるオブジェクトを取得
				Disease obj = (Disease) list.get(i);
				System.out.println(obj.getId() + " : " + obj.getName());
			}
		}
		catch (HibernateException e)
		{
			tx.rollback();
		}
		finally
		{
			s.close();
		}
	}
}

ディレクトリ構造が↓のようになったところで

ビルド、実行すると

2308843 : 実●行●  プライバシー保護のため置き換えてあります
2576872 : す●る●       プライバシー保護のため置き換えてあります

はーやっとうまくいったわい