![SSSSLIDE](https://cdn-ak-scissors.b.st-hatena.com/image/square/161b2de6d8eceb6b26a9ffb1969f7844e5fdab0a/height=288;version=1;width=512/https%3A%2F%2Fsssslide.com%2Fogp.png)
ただ、これだけではバインドされた変数の値は分かりません。こちらは conf/application.conf と log4j.properties に Hibernate のオプションを指定することで出力することができます。 # You can even specify additional hibernate properties here: # hibernate.use_sql_comments=true # ... hibernate.show_sql=true hibernate.format_sql=true hibernate.use_sql_comments=true log4j.logger.org.hibernate=INFO, hb log4j.logger.org.hibernate.SQL=DEBUG log4j.logger.org.hibernate.type
業務アプリケーションを作っていると、監査証跡ということで、作成者、作成日時、更新者、更新日時を保存するということがあると思います。Spring Dataのアノテーションを使うと、自動でセットしてくれるので、アプリケーションで決まりきったコードを書かなくて済むということみたいです。 Task.java(モデルクラス) package sample.model; import org.springframework.data.annotation.CreatedBy; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedBy; import org.springframework.data.annotation.LastMod
@Entityアノテーションと@Idアノテーション @Tableアノテーション @GeneratedValueアノテーション @Columnアノテーション @Transientアノテーション @MappedSuperclassアノテーション 次回は @Entityアノテーションと@Idアノテーション まずは、これが無いと始りません。@Entityは該当のクラスがエンティティであることを指定し、@Idはプライマリキーとなるプロパティかフィールドを指定します。 @Entity public class Customer { @Id private Long id; private String firstname; private String lastname; // ・・ } @Idは以下の様に指定することもできます。というかこっちの方が一般的か? @Id public Long getI
Rails ActiveRecordで複数のカラムに対して一意制約を設ける。複合一意制約 複数のカラムの組み合わせがユニークであってほしい場面に遭遇しました。 例えば、Siteテーブル Keywordテーブルが存在する時、 Keywordテーブルにある site_id と name そして date の組み合わせはユニークでなければいけない状況でした。 site_id, name, date の組み合わせがユニーク この組み合わせのユニークを担保するために、Railsアプリケーション側でユニークであることを確認するvalidate処理を設けて解決させました。 class Keyword < ActiveRecord::Base validates :site_id, uniquness: { scope: [:name, :date] } end 上記の様に書くことで、データのinsert
背景 railsではrails g scaffoldなどでModelを作成すれば、 自動的にidが付与されます。 しかもprimary_keyでauto_incrementでかつindexも張られるので、 普段はidを気にする必要はありません。 railsを使い、自分でデータ構造を決める場合はrailsの流儀に則った方が楽で、問題も起こりません。 しかし、古いデータを活用した場合、流儀にそぐわない事もあり得ます。 今回は規約に沿わない場合の対応について大きく分けて2つの場合について説明します。 なお環境は以下の物で検証しています。 * ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.4.0] * Rails 4.0.0 * composite_primary_keys (6.0.0) 主キーがidではない 主キーがid
railsを既存アプリケーションのDBにつないで開発 PHPアプリケーションをrailsに一部のせかえる事にしました。 エゴです。えぇ、、、完全なエゴです。効率を考えると全くエゴではないかもしれません。それでもエゴです。 require ruby 2.0rails 4.0rails project作る$ gem install rails $ rails new hoge -T --skip-bundle その他最初にやる作業等(rails template作らないとなぁ、、、)をごにょごにょとします。 dbつくってつなぐまず、DBにつなぎます Gemfile gem 'mysql2' database.ymlをよしなに設定 development: adapter: mysql2 encoding: utf8 database: my_db_name username: root pas
環境 osx10.9.1 ruby2.0.0 rails4 MySQL5.6.x 経緯 既にMySQL上に存在するtableを使ってrailsしてみた。 MySQLと接続する 下のサイトを参考にして、database.yamlを定義。 - development: adapter: mysql2 encoding: utf8 database: my_db_name username: root password: root host: localhost pool: 5 timeout: 5000 参考サイト http://threetreeslight.com/post/61834000065/rails-db MySQL上のテーブルからscheme.rbを生成する。 rake environment -v -t RAILS_ENV=development db:schema:dump
このエントリでは、Grzegorz Gajosによる記事、How Hibernate Almost Ruined My Careerを紹介する。 (Grzegorzから和訳と転載の許可は得た。) 以下はその全文の和訳だが、意訳超訳が混じっているので、もとのニュアンスを知りたければ元記事を読んでもいいし、読まなくてもいい。 想像してくれ。 君はJava開発者で、次のビッグプロジェクトを開始しようとしているところだ。 君は、そのプロジェクト全体に影響する根本的な決断をする必要がある。 君の柔軟なデータモデルをオブジェクト指向で抽象化するベストな方法を選択したい。生のSQLを扱いたくはないからね。 どんな種類のデータもサポートしたいし、理想では全種のデータベースをサポートしたい。 すぐに思いつくのは、単にHibernateを使うという解だ。そうだろ? Javaディベロッパの90%は君に同意するだ
関連エンティティのfetch方法を指定する設定値をデフォルト値から変更した方がよいケースの具体例について。
6.4.1. Overview¶ 排他制御とは、複数のトランザクションから同じデータに対して、同時に更新処理が行われる際に、データの整合性を保つために行う処理のことである。 複数のトランザクションから同じデータに対して、同時に更新処理が行われる可能性がある場合は、基本的に排他制御を行う必要がある。 ここで言うトランザクションとは、かならずしもデータベースとのトランザクションとは限らず、ロングトランザクションも含まれる。 Note ロングトランザクションとは データの取得とデータの更新を、別々のデータベーストランザクションとして行う際に発生するトランザクションのことである。 具体例としては、取得したデータを編集画面に表示し、画面で編集した値をデータベースに更新するようなアプリケーションで発生する。
JPAに楽観ロックがサポートされているのでそれを使おうとしたけれど、ロングトランザクションの場合、どうやるのか不明でここ3日ほど悩みました。 ※ロングトランザクションという言葉もこの調査で初めて知りましたw やりたかったのは以下のようなこと。 ①ID入力→検索ボタン押下→DBからデータ取得→画面にデータ表示 ②画面入力でデータを書き換える ③更新ボタン押下→DBのデータ更新 この①~③の処理をひとつのトランザクションでやるようなイメージで①~③の間に他の誰かがデータ更新していたら異常としたい。 というわけで、今回はロングトランザクション(複数リクエスト)時の楽観ロック方法 まずは楽観ロックするためのバージョニング用カラムを追加してEntityにも対応するプロパティと@Versionアノテーションを設定 package jp.test.spring.entity; import java.i
少し前に検証したものだが、改めて整理。 テーブルAとテーブルBを結合した結果を取得したい場合に、普通にSpring DataのRepositoryを作って@Query のメソッドを定義してもうまくいかない。 例えば以下のようなクエリは表現できない。
テーブル構成 CDとアーティストが多対多で紐づているとします。 ER図で下記のようになっているとします。 ソース CDのエンティティ @Entity @Table(name = "cd") public class Cd implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) @Column(name = "id") @Getter @Setter private Integer id; @Getter @Setter @Column(name = "title") private String title; @Getter @Sette
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く