DBICS::Loader使った時にふがふがしたいの巻

Loaderを使うと各スキーマは定義しなくてもLoaderが自動にやってくれるのですが、
スキーマをちょーっと拡張したい時とかは軽く工夫します。

例えば、

+------------+------------------+------+-----+---------------------+----------------+
| Field      | Type             | Null | Key | Default             | Extra          |
+------------+------------------+------+-----+---------------------+----------------+
| id         | int(10) unsigned |      | PRI | NULL                | auto_increment |
| rid        | varchar(10)      |      | UNI |                     |                |
| name_sei   | varchar(255)     |      |     |                     |                |
| name_mei   | varchar(255)     |      |     |                     |                |
| created_on | datetime         |      |     | 0000-00-00 00:00:00 |                |
| timestamp  | timestamp        | YES  |     | CURRENT_TIMESTAMP   |                |
+------------+------------------+------+-----+---------------------+----------------+

こんな感じのテーブルがあるとします。
名前の部分が姓と名にわかれてるのですが、これって、

$member = $self->model('Member')->search->first;
$membr->name; # name_sei + name_mei

こんな感じでnameメソッドとかで姓と名をくっつけて表示したかったりしますよね?
そんな時はこんな感じでやるとよかばってん。

package Proj::Schema::Member;
use strict;
use warnings;
sub name {
    my $self = shift;
    return $self->name_sei.$self->name_mei;
}

Proj::Schema::Memberは普通Loaderで自動的に作られてロードされるのですが、
拡張したいスキーマと同じ名前のモジュールを作っておいてあげると、
Loaderが自動でそれを読み込んでくれます(requireしてくれます)

べんりべんりーとか思ってたのですが。。。
まあ、普通はこうやって拡張するのですが、これにはちと問題がありまして、
updateメソッドとかcreateメソッドとかをHookしたい時に普通に、

package Proj::Schema::Member;
use strict;
use warnings;
sub update {
    my $self = shift;
    ...
}

とか書くとredefinedワーニングが発生します。
requireでロードしてるからすね。なのーで、
updateとかのHookはload_componentsしてあげるのが吉です。(たぶん)
ただ、みたところLoaderには各スキーマ用でload_componentsさせる機能がないので
MoFedgeのLoaderでむりくり実装してみました。

なんかLoaderの仕様が微妙っす><

(追記)

スキーマでのload_componentsはそれぞれ拡張クラスを用意してやって
その中でload_componentsすればいいだけだから問題ないっす。