日本語のテーブル名・カラム名とHibernate
誓いを破ってO/Rマッピングツールに手を出してしまいました。独自のSQLフレームワークは開発を断念。いや、凍結。
Hibernate 2.1.4になってから、日本語のテーブル名・カラム名でも正しく動くようになった模様です。2.1.3で試した時はダメだったのですが。なお、DBMSはPostgreSQL 7.3.4です。
ただし素直に使うと、マッピングしたJavaBeansクラスはこんな感じになります。
public class 従業員 implements Serializable { private int 社員番号; private String 氏名; public int get社員番号() { ... } public void set社員番号(int 社員番号) { ... } public String get氏名() { ... } public void set氏名(String 氏名) { ... } ... }
むむむむむ。これを許すかどうか・・・。ちゃんと動作はします。日本語の変数名やクラス名はJavaの言語仕様としてはOKですからね。
これが気に入らなければ、マッピングファイルで、
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"><class name="foo.bar.Employee" schema="public" table="従業員"> <id column="社員番号" name="number" type="int"> <property column="氏名" length="40" name="name" not-null="true" type="string"/>
という形で、カラム名と対応する内部名を定義する方法も採れます。こうすると、JavaBeansは、
public class Employee implements Serializable { private int number; private String name; public int getNumber() { ... } public void setNumber(int number) { ... } public String getName() { ... } public void setName(String name) { ... } ... }
となります。こちらも動作は確認しました。