タグ

2017年3月11日のブックマーク (9件)

  • DDD の Java EE 実装サンプル - Cargo Tracker を読み解く - Qiita

    Cargo Tracker とは エリック・エヴァンスのドメイン駆動設計 で紹介されている様々なパターンを実際に使用して、有志が作成したサンプル Web アプリのこと。 DDD Sample Application - Introduction オリジナルは Spring Framework を使用している。 一方、この実装を Java EE 7 で置き換えたサンプルが公開されている。 Cargo Tracker この実装を読みながら、 DDD で紹介されている以下のパターンがどのように実装されているのかを確かめてみる。 レイヤ化アーキテクチャ エンティティ 値オブジェクト 集約 リポジトリ サンプルアプリを動かす ソースのダウンロード このページ の一番下に zip のリンクがあるので、そこからダウンロードする。 環境準備 以下のソフトウェアをインストールする。 JDK 7 以上 Mav

    DDD の Java EE 実装サンプル - Cargo Tracker を読み解く - Qiita
    stockedge
    stockedge 2017/03/11
    “デフォルトの可視性である パッケージプライベート は、集約内部で閉じた処理を実現するときに有効”
  • DDD超入門(後編) - Domain-Driven Designの適用Step - エンタープライズギークス (Enterprise Geeks)

    前編ではDDDの概要についてふれたが、後編ではDDDの適用Stepを3つのStepに分けて紹介する。 まずStep1として、アプリケーションに登場しうる概念を抽出してドメインモデルで表現する。 次にStep2として、各ドメインの概念を深掘りしてソフトウェアとしてどう表現するかにについて紹介する。 最後にStep3でドメイン部品の仕上げとDDDの恩恵ついてふれていく。 Step1: ドメインモデルによる表現 DDDでは機能やユースケースに加えて、その裏に潜んでいる「概念」を抽出する必要がある。そのため、DDDを導入するにあたってアプリケーションに登場しうる概念を整理した「ドメインモデル」がまず必要となる。全体のコンテキストを整理して、該当のドメインモデルを描くことがDDDの最初の1歩となる。 例として、よくある一般的な受注管理の簡単なドメインモデルをあげる。 「顧客」からある「商品」の「注文

    DDD超入門(後編) - Domain-Driven Designの適用Step - エンタープライズギークス (Enterprise Geeks)
    stockedge
    stockedge 2017/03/11
    “実際のビジネスロジックの記述はドメインレイヤーの部品に委譲して、アプリケーションサービス自体はドメインレイヤーの部品の調整に徹する”
  • Spring Bootで始めるDDD

    Spring Bootで始めるDDD 1. Spring Bootで始めるDDD ドメイン駆動設計導入 第一章 2. 今日話すこと ● DDDを実際の開発に導入するためにやったこと ● Spring BootでDDDを実現するために行なったこと ● 既存システムをDDDで置き換えるためにやっていく予定のこと 3. DDD導入の背景 4. サービスの成長と複雑度の増加 ● サービスの拡大 ● 開発メンバーの増加 ● アプリケーション知識の複雑化 ● 開発・テスト工数の増大 5. トランザクションスクリプト public void updateXxx(Long value) { Xxx xxx = dto.selectXxx(value); if (xxx.xxx = "xxx") { xxx.setFoo("XXX"); dto.updateXxx(xxx); dto.updateXxx(

    Spring Bootで始めるDDD
    stockedge
    stockedge 2017/03/11
    ユースケース図→ユースケース記述→ドメインモデル図
  • UMLを描こう – Vol.3 ドメインモデル図

    プロジェクトの初期段階において最も重要なのは、 システムが取り扱う「もの」の概念について、チーム内で共通認識を築くことです。 これを怠りなんとなく実装を進めてしまうと、後半になって、 Aさん「あれ?この言葉ってこういう意味じゃないの?」 Bさん「え?そうじゃないよ。もしかして認識ずれてた?・・・」 ↓ 認識ズレ発覚!といった状況が発生することでしょう。 そこで、プロジェクト開始時にドメインモデル図を描くことで、 主要な「もの」の概念についてチーム内で共通認識を固めることができます。 ドメインモデル図とは、ユーザの視点で見た、システムに登場する「もの」の概念(ドメインクラス)を集めた図です。プロジェクトの用語集をクラス図風に表現した図ということにもなります。ドメインモデル図は自然言語で構成するため、要件定義や仕様の把握に有効です。 ここでは、ICONIX Process(ユースケース駆動型の

    UMLを描こう – Vol.3 ドメインモデル図
    stockedge
    stockedge 2017/03/11
    “プロジェクトの用語集をクラス図風に表現した図”
  • JPA2.1 でアノテーション使わずに Named Query を登録するには - A Memorandum

    JPA 2.1 の javax.persistence.EntityManagerFactory#addNamedQuery() のはなし。 検索してもあまりヒットしないので。 普通の NamedQuery の使い方 JPA で NamedQuery 使う時は、Entity にアノテーション指定して以下のように定義する。 @Entity @NamedQuery(name="Country.findAll", query="SELECT c FROM Country c") public class Country { ... } 複数ある場合には、@NamedQueries で。 @Entity @NamedQueries({ @NamedQuery(name="Country.findAll", query="SELECT c FROM Country c"), @NamedQuery(

    JPA2.1 でアノテーション使わずに Named Query を登録するには - A Memorandum
  • JPAでEntityからテーブルスキーマを生成する方法を教えて頂きました! - Challenge Engineer Life !

    今日は午後からOracleで開催された「WebLogic Server 12c Forum 2013~ Java EEの現在と未来、WebLogicが拓く新たな可能性 ~」に参加してきました。今週はJenkins勉強会、Java x HTML5 Nightと参加したので、週3でOracleに…(^^; セミナー内容は明日にでも簡単に触れようかなと思います。 で、上記セミナーで寺田さんの発表をみていたら、デモ動画の中で、NetBeansを使ってEntityからテーブルのカラムを追加して反映させる、というのが出てきて「えっ、そんなのできるの!?」と初めて知りました(^^; 私はDDL書いて、テーブルを先に作って「データベースからのエンティティクラス」メニューを使ってEntityクラスを生成する、というのはよく使っています。 この一方向しかできないかと勝手に思っていたので、実は地味に衝撃でした。

    JPAでEntityからテーブルスキーマを生成する方法を教えて頂きました! - Challenge Engineer Life !
    stockedge
    stockedge 2017/03/11
    “Entityからテーブルのカラムを追加して反映させる”
  • Spring Boot その3 + mysql

    Spring Boot その3 + mysql編 ※ その3を改良 【mysqlを使ってみる】 「その3」では,データの永続化にSpring Data JPA + hsqldbをつかったが, mysqlを使ってみるメモ。 0)予め,mysqlをセットアップしときます(筋でないので,手順は割愛します)。 例えば,localhostmysqlをセットアップして, ユーザ ohta@localhost, パスワードは(ほにゃらら)で接続した後, springbootsample というデータベースだけを作成しておく。 テーブルは特に用意しなくてOK。 mysql> create database springbootsample; Query OK, 1 row affected (0.00 sec) mysql> show databases; +---------------

    Spring Boot その3 + mysql
    stockedge
    stockedge 2017/03/11
    “開発中はupdateで,一度テーブルデータをばっさり捨てたいときは一時的にcreateかcreate-dropにして, 運用に入ったら,noneというのが安全”
  • ぼくの実装した最弱のディープラーニング - きしだのHatena

    8月の頭からディープラーニングを実装していたのを、先日、プレゼンしてきました。 プログラマのための数学勉強会@福岡 - connpass ぼくの実装した最弱のディープラーニング from なおき きしだ ※追記 2023/4/12 SpeakerDeckにも置いてます https://speakerdeck.com/kishida/weakest-deep-learning-i-implemented GPU対応したり、ドロップアウトとかミニバッチとかいろいろ実装して、結構つよくなってます。 ちゃんと学習してくれないこと以外は。 ソースはこんな感じになってきています。 https://github.com/kishida/neuralnet/tree/CorrectOperationAsCCN GPU対応にはaparapiを使っています。JavaGPUコードが書けるスグレモノです。 ap

    ぼくの実装した最弱のディープラーニング - きしだのHatena
    stockedge
    stockedge 2017/03/11
    doubleではなくfloatを使う。学習に精度はあまり関係ない「誤差の減り方は殆ど同じであり、数値に高い精 度は必要ない」
  • volatileってなんだろう - ぼっち勉強会

    目的 「volatileって何?」という質問があり、自分の理解も曖昧だったので復習してみた。 勉強内容 volatileって? 何の意味があるの? コンパイラの最適化(置き換え)を抑止する コンパイラの最適化(リオーダー)を抑止する スレッドが値を参照する際に、必ず最新の値を見るようにする volatileって? 修飾子です。次のようにフィールドに対して付けます。 public class Hoge { public volatile int num; } 何の意味があるの? ぼくは次のように理解していますが、まだ自信はありません。 コンパイラの最適化(置き換え)を抑止する コンパイラの最適化(リオーダー)を抑止する スレッドが値を参照する際に、必ず最新の値を見るようにする Javaでは3つ目の説明ばかり見るのですが、これは結果として他のも対応されるからなのかな? まだよく分かっていません

    volatileってなんだろう - ぼっち勉強会
    stockedge
    stockedge 2017/03/11
    “スレッドが値を参照する際に、必ず最新の値を見るようにする”