まめログ

Javaプログラマの歩み

VB.NETでPostgreSQL レコードを登録する(Entity Framework使用)

検索の次は登録ということで。

Insertの方法を残しておきたいと思います。

以下の続きです。

mamelog.hatenablog.jp

続きを読む

VB.NETでPostgreSQL 条件を指定してレコードを検索する(Entity Framework使用)

以下の記事の続きです。

mamelog.hatenablog.jp


次は条件を指定した検索処理を行いたいと思います。

前回のテーブルを少し修正し以下のようにします。
何期生かをレコードに持たせるようにしました。

create table Users (
  id serial
  , name character varying(30)
  , generation integer
  , constraint Users_PKC primary key (id)
) ;

comment on table Users is 'Users';
comment on column Users.id is 'ID';
comment on column Users.name is '名前';
comment on column Users.generation is '期';

Userクラスも以下のように修正します。

Imports System.ComponentModel.DataAnnotations
Imports System.ComponentModel.DataAnnotations.Schema

<Table("users")>
Public Class User

    <Key>
    <Column("id")>
    Public Property Id As Long

    <Column("name")>
    Public Property Name As String

    <Column("generation")>
    Public Property Generation As Integer

End Class
続きを読む

VB.NETでPostgreSQLに接続する(Entity Framework使用)

VB.NETのプロジェクトから、PostgreSQLへ接続する方法を紹介します。

DBへの接続には、Entity Frameworkを使用します。
今時ODBC接続とかないですよ、本当に。
もっと言っちゃうと、既存システムとかでない限りC#使いましょう。
VB.NETは新規で使う理由が全くありません。

開発環境は以下の通りです。

Entity Frameworkの導入

適当なプロジェクトを作成(ここではWindows Formプロジェクトを作成しています)して、
[参照設定] - [NuGet パッケージの管理]を選択します。

f:id:mamepika:20150401140219j:plain

出てきたウインドウの右上の検索キーワードにEntityと入力すると、
画面の通り、Entity Frameworkが出てくるのでインストールボタンをクリックしてインストールしてください。

f:id:mamepika:20150401140221j:plain

続きを読む

プログラマのためのVAIO Zレビュー

f:id:mamepika:20150326012325j:plain

VAIO Zが届いてから5日、
Eclipseも入れて少しですが触ってみたのでレビューをしてみたいと思います。
1.3㎏という重さは、最軽量のUltrabookに比べれば倍近い重さですが、
性能や剛性とトレードオフということで許容範囲内だと思います。

上品な黒にささやかなVAIOロゴは、
MBA勢にも負けずカフェで存在感を発揮できること間違いないです。

私が購入したVAIO Zのスペックは繰り返しになりますが以下の通りです。

OS:Windows 8.1 Pro
CPU:Core i7-5557U
RAM:メインメモリ 8GB
SSD:256GB

続きを読む

Javaのジェネリクスのワイルドカードが便利だった

複数の階層構造を表すJSON形式の文字列を一つの処理でクライアントに返す必要があった時に、
少し詰まったのでメモとして。
JSONへの変換にはGsonを使いました。

以下のような構造が異なる二つのクラスを、
一回の処理でJSON形式の文字列にする方法を考えたときに、
ワイルドカードで書くことでうまくできました。

/**
 * モーニング娘。のメンバー
 */
public class MorningMusumeMember implements HelloProject{

    private String generation;
    private String name;
    private String yomi;

    public MorningMusumeMember(String generation,String name,String yomi){
        this.generation = generation;
        this.name = name;
        this.yomi = yomi;
    }
}

モーニング娘。は、何期加入かと名前と読み仮名を保持するようにしておきます。

/**
 * Berryz工房のメンバー
 * @author ta
 *
 */
public class BerryzKoboMember implements HelloProject{

    private String name;
    private String yomi;

    public BerryzKoboMember(String name,String yomi){
        this.name = name;
        this.yomi = yomi;
    }
}

Berryz工房には、1期2期といった概念がないので、名前と読み仮名だけにしておきます。

続きを読む

ドメインモデル貧血症の処方箋

以前のプロジェクトで、ドメインモデル貧血症なプログラムに悩まされたので、学んだことを書いてみます。

ドメインモデル貧血症とは

オブジェクト指向におけるアンチパターン
振る舞いとデータが分かれてしまっており、手続型の設計・実装になってしまう状態。

詳しくは以下のURLで。
Martin Fowler's Bliki in Japanese - ドメインモデル貧血症

自分なりの理解では、ドメインモデル=エンティティクラスと思ってます。

試しに以下のような従業員クラスでドメインモデル貧血症を考えてみたいと思います。

/**
 * 従業員クラス
 */
public class Employee {

    private int employeeId;
    private String familyName;
    private String firstName;
    private double weight;
    private double height;
    
  //getter setter
}
続きを読む