電脳羊(Android Dream)

アクセスカウンタ

zoom RSS Spring boot Sequenceを使って自動的にプライマリーキーを生成する

<<   作成日時 : 2016/07/22 15:15   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

vagrant で作成した仮想環境上にPostgresqlをインストールしてあります。

テーブル定義はこんな感じ、flywayでテーブル作成します。
CREATE TABLE mst_user (
id SERIAL PRIMARY KEY,
email CHAR varying(20) NOT NULL,
name CHAR varying(40) NOT NULL,
password CHAR varying(50) NOT NULL,
UNIQUE (email)
);

vagrant sshでログインして確認すると
demodb=> \d
List of relations
Schema | Name | Type | Owner
--------+-----------------+----------+---------
public | mst_user | table | vagrant
public | mst_user_id_seq | sequence | vagrant
public | schema_version | table | vagrant

mst_user_id_seqというシーケンスが自動的に作られていますね。

1、エンティティクラス作成
エンティティクラスで以下のように設定します。
@SequenceGeneratorで生成されたmst_user_id_seqを指定しています。

@Entity
@Table(name="mst_user")
public class UserData {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "mst_user_id_seq")
@SequenceGenerator(name = "mst_user_id_seq",sequenceName = "mst_user_id_seq",initialValue = 1, allocationSize = 1)
@Column
private long id;

以下省略

2、リポジトリ作成(インターフェースの定義のみ)

@Repository
public interface UserRepository extends JpaRepository<UserData, Long> {

}

3、データベースにデータ保存
後は入力フォームをHTMLで書いて(入力フィールドはID以外)
POSTした結果をControllerで受け取って

@Controller
public class UserController {
@Autowired
UserRepository repository;

@RequestMapping(value="/", method = RequestMethod.POST)
@Transactional(readOnly=false)
public ModelAndView send(@ModelAttribute("formModel") UserData userdata, ModelAndView mav){

repository.saveAndFlush(userdata);
return new ModelAndView("redirect:/");

}
}

でIDは自動的にインクリメントした値でテーブルにレコードが挿入されます。

私はSQL文も含めてコードでガリガリ書く派だったので、まだ慣れないですね。
ここまで一回もSQL文が出てこない(隠蔽されてる)ですね。

今回は単なるInsert文でしたが、今後複数のテーブルをジョインするめんどくさいSQLを発行する必要がある場合にどうやってSpring bootで実装するのか、ちょいと調べていたいですね。
副問い合わせとかどうすんだろ?



SpringBootプログラミング入門
秀和システム
掌田 津耶乃

amazon.co.jpで買う
Amazonアソシエイト by SpringBootプログラミング入門 の詳しい情報を見る / ウェブリブログ商品ポータル





Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発
翔泳社
株式会社NTTデータ

amazon.co.jpで買う
Amazonアソシエイト by Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発 の詳しい情報を見る / ウェブリブログ商品ポータル


テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
Spring boot Sequenceを使って自動的にプライマリーキーを生成する 電脳羊(Android Dream)/BIGLOBEウェブリブログ
文字サイズ:       閉じる