InfoQ Software Architects' Newsletter A monthly overview of things you need to know as an architect or aspiring architect. View an example

概要 Ruby on Rails, CakePHP, LaravelといったWebアプリケーションフレームワークには標準でデータベースマイグレーションツールが包含されている。 一方でデータベースマイグレーションをwebアプリケーションと別に管理したいケースもある。別に管理するためにはフレームワークに包含されているツールよりも、スタンドアロンで利用可能なツールの方が良い。本記事ではスタンドアロンで利用可能なデータベースマイグレーションツールを比較してみる。 データベースマイグレーションとは何か データベースマイグレーションはRDBMSのdatabase・スキーマ定義をコード化し、テーブル・インデックス更新を自動化することである。主に下記を実施することができる。 databaseの作成 テーブルの作成・更新 インデックスの作成・更新 DBスキーマのバージョン管理(過去に実行されたSQLが特定の
KotlinでWebアプリケーションを作るにあたり、SQLを直接記述できるタイプのO/Rマッパー(本稿ではSQLマッパーと呼びます)を探し求めました。 SQLマッパーに求める機能 SQLマッパーに求める機能はBindとMapです。この記事ではBindとMapを次のように定義します。 Bind SQLに埋め込んだプレースホルダー(名前付きが望ましい)に対応するパラメーター群を渡す機能。 例: SELECT ... WHERE price BETWEEN :minPrice AND :maxPrice のようなSQLに、minPriceとmaxPriceプロパティを持つオブジェクトを渡す。 Map 実行結果として得られた行をオブジェクトにマッピングする機能。 例: SELECT id, name, price FROM ... のようなSQLの実行結果を、id, name, price のプロ
This document summarizes a microservices meetup hosted by @mosa_siru. Key points include: 1. @mosa_siru is an engineer at DeNA and CTO of Gunosy. 2. The meetup covered Gunosy's architecture with over 45 GitHub repositories, 30 stacks, 10 Go APIs, and 10 Python batch processes using AWS services like Kinesis, Lambda, SQS and API Gateway. 3. Challenges discussed were managing 30 microservices, ensur
どうも!アプリケーション基盤チームの横田(@yokotaso)です! kintoneなどで利用していたJavaフレームワークのSeasarのEOLに伴い、S2Daoからの脱却を試みたのですが、パフォーマンス問題や障害を発生させてしまうなど問題を多々発生させてしまいました。 同じ過ちを繰り返さないという強い決意のもと、今回の失敗をブログで公開いたします。 失敗をあえて公開する点で斬新かつ濃いブログ記事となっております! 失敗体験の公開は恥だが役に立つ! 移行先の選定の失敗 移行先として選定したプロダクトは Hibernate*1です。 Hibernateを選んだ理由としては Spring Framework を選定した Spring Frameworkで Interface + アノテーションでプログラミングするならSpring Data JPA が有力 JPAに準拠したのORMの中でも、H
Android用ORMライブラリを書き始めました。 github.com 開発の動機 AndroidのORM事情は2014年の天下一「AndroidのORM」武道会 - Qiita あたりをどうぞ。ただ2015年11月現在だとDBFlow 2.xが爆速になっており、GreenDAOに匹敵するレベルになっていそうです。ほかのライブラリもいろいろアップデートしているので、天下一Android ORM武闘会の2015年版が望まれます。 さて本題ですが、私がAndroidのORMに求めるものは下記のようなものです。 高速 Realm並は無理でも、爆速ORMとして知られるGreenDAO程度の速度はほしい upgrade / downgradeできるmigration機構 なるべく自動的によしなにやってくれるのがよい たとえば開発中にカラムを追加したときは自動的にmigrationしてほしい マイグ
Java EEアプリケーションにおけるデータベース操作を、よりシンプルで簡単にするためのデータ永続化機能が「JPA(Java Persistence API)」だ。同APIのキホンを、書籍「わかりやすいJava」シリーズでおなじみの川場隆氏が解説する。 Java EE 6や同7など最新のJava EEを使用したアプリケーション開発に初めて取り組む方にとって課題の1つとなるのは、Java EE特有のデータ永続化機構である「JPA(Java Persistence API)」の習得であろう。入門者向けのJava解説書として定評のある「わかりやすいJava」シリーズで知られる川場隆氏(活水女子大学 教授)の解説により、JPAの基本を学んでいただきたい。 ※本記事は、日本オラクルが2015年4月に開催した「Java Day Tokyo 2015」における川場隆氏のセッション「やさしく理解するはじめ
java-mysql-diff が出ました.Maven Central にもリリースしています. http://search.maven.org/#artifactdetails|net.moznion|mysql-diff|1.0.0| 本パッケージは id:onishi さん作の mysqldiff の Java 8 移植版です. 最近 Java の環境で作業することが多いので,なんだかんだで Java 版があると便利だよね〜ということで作成しました. 本家の Perl 版 mysqldiff と同じような感覚で利用したかったので,全部の依存パッケージを1つにまとめた fat-jar も用意してあります. java -jar というコマンドを余分にタイプする必要はありますが,Perl 版と同じような感覚で利用することが出来ます. https://github.com/moznion/j
このブログについて これはJava Advent Calendar 2014 - Qiitaの10日目の記事です。 昨日(2014/12/09)は@irofさんの「Javaであまりしないコーディング - 日々常々」でした。 明日(2014/12/11)は@dk_masuさんです。 今回、僕は「Doma」というORマッパーについて調べました。 Domaには「バージョン 1」と「バージョン 2」がありますが、今回はJava SE 8に対応している「バージョン 2」を取り上げます。 Domaは日本語のチュートリアルが充実しているため、今回のブログでは、Domaを使うための最初の環境作成や、チュートリアルを読んで理解できるようになるための下地となる、基本的な部分について解説したいと思います。 Domaを使って、簡単な検索Webアプリを作ります。 サーブレット・JSPで作っていますので、適宜お使いの
OutOfMemoryErrorの主な要因例として、DBMSからデータを取得しすぎがあります。 LASYフェッチによるN + 1 問題を回避するために、結合先テーブルの要素を一気に持ってくるJOIN FETCHを使ったところ、引き換えにJavaヒープ使用量が多くなるのはよくあるケースです。 以下のような、1つのIssueに対して複数のIssueAttributeを持つ1対多関連のエンティティの操作を例に、OutOfMemoryErrorを少しでも避ける方法を考えてみます。 @Entity public class Issue implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue private int issueId; private String tit
うらがみがJavaまわりのORMを知りたい会 - connpass Java の O/R マッパーまわりの話を知りたかったので、6/14 に行われた勉強会 「うらがみが Java まわりの ORM を知りたい会」 に参加してきました。 会場は和室でした。 Java まわりの O/R マッパー、あんまり詳しくないのでいろいろ知れて良かったです。 メモを残しておきます。 発表内容 Java の ORM、Doma の話 +α (@backpaper0 さん) 発表資料: JavaのORM、Domaの話 +α — JavaのORM、Domaの話 1.0 documentation いろんな O/R マッパーについての簡単な紹介と、Doma の紹介。 紹介された O/R マッパーのうち、使うとしたら JPA か Iciql か Doma かなーという気持ちになった。 (個人の感想です。) ちなみに紹
よく訓練されたアップル信者、都元です。Spring連載はもうちっとお待ちください。今回はその布石ということで。 DBアクセスというのは、システムを作る上で大抵避けられない領域でしょう。まぁ近年はRDBMSに限らず、各種NOSQLの台頭が目覚ましいわけですが、いまだRDBMSの世界は多く残っています。 そこで。今、Javaでサーバサイドアプリケーションを書くことになった時、データアクセスのフレームワークには何を使いましょうか。Hibernate (JPA)でしょうか。MyBatisでしょうか。Domaでしょうか。どれも凄いフレームワークです。どれを選ぶのか、真っ当な結論から先に言ってしまえば、そんなの案件次第なわけですがw そんな中、個人的に非常に使い勝手が良いと評価しているフレームワークに「Mirage SQL」があります。今回は、このMirageについてご紹介します。 Mirage SQ
Play frameworkのDB操作を楽にするEBeanの基礎知識:Javaの常識を変えるPlay framework入門(2)(1/3 ページ) DB操作で使うPlay frameworkのフォルダ構成 前回の記事「Java開発で泣かないためのPlay frameworkの基礎」では、Play frameworkの特徴から始まり、セットアップ、そしてEclipseでの環境設定までを解説しました。 いよいよ今回からPlay frameworkでのプログラミングの仕方を紹介します。今回は、DBスキーマを作成するなどの作業を行わず、手軽に行えるDB操作を紹介します。 まず、プログラミングに入る前に、今回のDB操作で使うPlay frameworkのフォルダ2つを簡単に説明します。そのほかのフォルダについての説明は次回以降の連載で説明していきます。 「app」フォルダ Javaクラスやビューテ
はじめに Androidアプリケーションを作成する上でSQLiteを使用してデータベースを扱うことは多々あります。データの永続化や検索といった処理を容易に実装することができるので、多くのアプリケーションで使用されています。しかし、AndroidにはSQLiteを使用するための方法が以下のようにいくつか用意され、それぞれファイル作成時のパーミッションの挙動が異なっています。 SQLiteDatabase#openOrCreateDatabaseを使用して作成する Context#openOrCreateDatabaseを使用して作成する SQLiteOpenHelperクラスを使用して作成する もし、開発者がこれら方法の挙動を十分に理解していない場合、知らずのうちに脆弱性を作り込んでしまいます。 実際に、いくつかのアプリケーションではSQLiteDatabase#openOrCreateDa
S2JDBCを使って DBのデータ数十万件をまとめてDLしようとしたらエラーになった。 getResultList()じゃなくてiterate()使ったら結果をまとめて保持しなくなるからメモリを使わなくなるんじゃないの?と思ったけどダメ。 WicketのResourceStream系がキャッシュしてるのか自分で書いたオブジェクトを書き出す処理がミスってたのか何か使い方が間違ってたのか分からずハマった。 Eclipse Memory Analyzer でダンプを見たら、どこかでデータを全件保持している模様。 2/29 ここから追記S2JDBC+PostgreSQLだとs2jdbc.diconのfetchSizeプロパティの設定+トランザクションをきちんと開始する、で解決しそう。(とりあえずローカル環境でエラーの再現 → エラー修正の確認まではできた) PostgreSQL: http://o
Commons DBCPを超えるTomcat JDBC Poolとは:Tomcat 7の新機能で何ができるようになるのか?(番外編)(1/2 ページ) TomcatのDBコネクション・プールは2つある @IT読者の皆さんは「Tomcat JDBC Connection Pool」をご存じですか? 通常、TomcatのDBコネクション・プールといえばApache Commonsプロジェクトの「Commons DBCP」を想像するかと思います。しかし、Tomcatには「Commons DBCP」以外にもDBコネクション・プールの実装が存在します。それが、「Tomcat JDBC Connection Pool」(以下、Tomcat JDBC Pool)です。 Tomcat JDBC Poolとは、Apache Tomcatプロジェクトが独自に作成したDBコネクション・プールの実装のことです。
latest official release 25 October 2024 Download latest version 2.7.4 Latest version 2.7.4 works with JDK 8 and above. The How To pages are regularly updated and include a list of useful links. commercial support: Commercial support for business users of HSQLDB is available from the HyperXtremeSQL web site. A higher-performance database engine based on HSQLDB, with several additional features such
この記事は Java Advent Calendar -ja 2010 の4日目のものです。 はじめに 継続的な開発では、データベーススキーマも段階的変化に耐えることが求められる。マイグレーション・システムが必要だ。 そこで、MyBatis Schema Migrationというのがあるらしいので試してみた。ほら、Java屋にはおなじみのMyBatisだ。 インストールする http://code.google.com/p/mybatis/downloads/list?can=3&q=migrations から、「MyBatis Schema Migrations 3.0.2 GA」をダウンロードし、適当な場所に展開し、PATHを通す。 migrate init - 初期設定 プロジェクトのホームがあれば、その下に空のディレクトリを作り、そこでスキーマの管理をするとしよう。空のディレクトリ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く