S2Dao.NET を使ってみる - (3) Entity と Dao [.NET]

| コメント(0) | トラックバック(0)

S2Daoを使ったプログラミングの核となる、Entity(JavaではBeanと表現する。データを入れる「箱」)とDao(Data Access Object。データベース等へのアクセスを透過する)を作っていきませう。

とりあえず、不本意ながらどこにでもあるような 社員と部署 のサンプル を考えてみます。データは以下の通り

EMPLOYEE テーブル

IDNAMEDEPT
1山田 太郎1
2田中 一郎2
3鈴木 源太郎1

DEPT テーブル

IDNAME
1開発
2営業
using System;
using Seasar.Dao.Attr;

namespace S2DaoTest {
	class Employee {
		private int id;
		private string name;
		private int deptid;

		[ID("identity")]
		public int Id {
			set { id = value; }
			get { return id; }
		}

		public string Name {
			set { name = value; }
			get { return name; }
		}

                [Column("DEPT")]
		public int DeptId {
			set { deptid = value; }
			get { return deptid; }
		}
	}

	[Table("DEPT")]
	class Department {
		private int id;
		private string name;

		[ID("identity")]
		public int Id {
			set { id = value; }
			get { return id; }
		}

		public string Name {
			set { name = value; }
			get { return name; }
		}
	}
}

とても直感的ですね :)

classにTable属性、プロパティにColumn属性を付けることで、それぞれクラス名とDBテーブル名、プロパティ名とDB列名を関連付けることができます。指定しない場合はクラス名=テーブル名、プロパティ名=DB列名として扱われます。

上の例のIdプロパティに付いているID属性は、INSERT時にDB側で自動付番される値を使うという指示です。(SQLite であれば INTEGER PRIMARY KEY AUTOINCREMENT で作成した列に対して使う)

続いてDaoインタフェースの定義

using System;
using System.Collections.Generic;
using Seasar.Dao.Attr;

namespace S2DaoTest {
	[Bean(typeof(Employee))]
	interface IEmployeeDao
	{
		void Insert(Employee e);
		void Update(Employee e);
		void Delete(Employee e);

		Employee Select(int id);

		IList<Employee> GetAllList();
	}

	[Bean(typeof(Department))]
	interface IDepartmentDao
	{
		void Insert(Department d);
		void Update(Department d);
		void Delete(Department d);

		Department Select(int id);

		IList<Department> GetAllList();

		[Sql("SELECT COUNT(*) FROM EMPLOYEE WHERE DEPT=/*id*/1")]
		int GetNumberOf(int id);
	}
}

もう見たまんまですよね :D

Bean属性で各Daoが扱うEntityのクラスを指定してあげます。

最後のGetNumberOfは、Sql属性を使って使用すべきSQLをそのまま指定しています。(このクラスに定義すべきかどうかってのはまぁ置いておいて..)

というわけで、次はS2Dao/S2Containerの設定ファイルを書いてあげて、動かしてみます。

トラックバック(0)

トラックバックURL: http://floralcompany.jp/mt/mt-tb.cgi/73

コメントする

AUTHOR

  • turugina (虎王 剱奈)
  • E-mail: turugina {at} floralcompany.jp
  • pixiv
  • ニジエ

2014年5月

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

アーカイブ

OpenID対応しています OpenIDについて
Powered by Movable Type 5.2.10

- 警 告 -

本サイトにはいわゆる「18禁画像」(イラスト)へのリンクが存在します。 未成年の方や、その手の画像に不快感を覚える方は、 該当記事(「えちぃの」及び「ちょっとえちぃの」カテゴリ) をご覧にならないようお願いいたします。

上記を理解した上で非表示のブログパーツを表示する
あわせて読みたいブログパーツ
ついった
drawr/pixiv/twitpic