Maven + Spring + Hibernate + MySqlの例
この例では、Mavenを使用して簡単なJavaプロジェクト構造を作成し、MySQLデータベースでデータフレームワーク(挿入、選択、更新、削除)を行うためにSpringフレームワークでHibernateを使用する方法を示します。
最終プロジェクト構造
最終的なプロジェクトファイル構造は次のようになります。フォルダ構造の作成に迷った場合は、ここでこのフォルダ構造を確認してください。

1. テーブル作成
MySQLデータベースに「ストック」テーブルを作成します。 次のようなSQLステートメント:
CREATE TABLE `example`.`stock` ( `STOCK_ID` int(10) unsigned NOT NULL AUTO_INCREMENT, `STOCK_CODE` varchar(10) NOT NULL, `STOCK_NAME` varchar(20) NOT NULL, PRIMARY KEY (`STOCK_ID`) USING BTREE, UNIQUE KEY `UNI_STOCK_NAME` (`STOCK_NAME`), UNIQUE KEY `UNI_STOCK_ID` (`STOCK_CODE`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
2. プロジェクトファイル構造
Mavenコマンド ‘mvn archetype:generate‘、see example hereを使用して、簡単なプロジェクトファイル構造を作成します。 それをEclipseプロジェクト(mvn eclipse:eclipse)に変換し、EclipseIDEにインポートします。
E:\workspace>mvn archetype:generate [INFO] Scanning for projects... ... Choose a number: (1/2/3....) 15: : 15 ... Define value for groupId: : com.example.common Define value for artifactId: : HibernateExample Define value for version: 1.0-SNAPSHOT: : Define value for package: com.example.common: : com.example.common [INFO] OldArchetype created in dir: E:\workspace\HibernateExample [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------
3. Pom.xml file configuration
Mavenのpom.xmlファイルにSpring、Hibernate、MySQL、およびそれらの依存関係を追加します。
4.0.0 com.example.common SpringExample jar 1.0-SNAPSHOT SpringExample http://maven.apache.org junit junit 3.8.1 test org.springframework spring 2.5.6 cglib cglib 2.2 mysql mysql-connector-java 5.1.9 hibernate hibernate3 3.2.3.GA dom4j dom4j 1.6.1 commons-logging commons-logging 1.1.1 commons-collections commons-collections 3.2.1 antlr antlr 2.7.7
4. モデル&BO&DAO
Model、Business Object(BO)、およびData Access Object(DAO)パターンは、プロジェクト構造の混乱を避けるためにレイヤーを明確に識別するのに役立ちます。
ストックモデル
後で株式データを保存する株式モデルクラス。
package com.example.stock.model;
import java.io.Serializable;
public class Stock implements Serializable {
private static final long serialVersionUID = 1L;
private Long stockId;
private String stockCode;
private String stockName;
//getter and setter methods...
}
ストックビジネスオブジェクト(BO))
ストックビジネスオブジェクト(BO)インターフェースと実装、プロジェクトのビジネス機能を保存するために使用されます。実際のデータベース操作(CRUD)の作業はこのクラスに関係するべきではなく、代わりにDAO(StockDao)クラスがあります。
package com.example.stock.bo;
import com.example.stock.model.Stock;
public interface StockBo {
void save(Stock stock);
void update(Stock stock);
void delete(Stock stock);
Stock findByStockCode(String stockCode);
}
package com.example.stock.bo.impl;
import com.example.stock.bo.StockBo;
import com.example.stock.dao.StockDao;
import com.example.stock.model.Stock;
public class StockBoImpl implements StockBo{
StockDao stockDao;
public void setStockDao(StockDao stockDao) {
this.stockDao = stockDao;
}
public void save(Stock stock){
stockDao.save(stock);
}
public void update(Stock stock){
stockDao.update(stock);
}
public void delete(Stock stock){
stockDao.delete(stock);
}
public Stock findByStockCode(String stockCode){
return stockDao.findByStockCode(stockCode);
}
}
株式データアクセスオブジェクト
ストックDAOインターフェースと実装であるdao実装クラスは、Springの「HibernateDaoSupport」を拡張して、SpringフレームワークでHibernateをサポートします。 これで、getHibernateTemplate()を介してHibernate関数を実行できます。
package com.example.stock.dao;
import com.example.stock.model.Stock;
public interface StockDao {
void save(Stock stock);
void update(Stock stock);
void delete(Stock stock);
Stock findByStockCode(String stockCode);
}
package com.example.stock.dao.impl;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.example.stock.dao.StockDao;
import com.example.stock.model.Stock;
public class StockDaoImpl extends HibernateDaoSupport implements StockDao{
public void save(Stock stock){
getHibernateTemplate().save(stock);
}
public void update(Stock stock){
getHibernateTemplate().update(stock);
}
public void delete(Stock stock){
getHibernateTemplate().delete(stock);
}
public Stock findByStockCode(String stockCode){
List list = getHibernateTemplate().find(
"from Stock where stockCode=?",stockCode
);
return (Stock)list.get(0);
}
}
5. リソース構成
‘project_name/main/java/ ‘の下に‘resources ‘フォルダーを作成すると、Mavenはこのフォルダーの下のすべてのファイルをリソースファイルとして扱います。 Spring、Hibernate、およびその他の構成ファイルを保存するために使用されます。
休止状態の設定
StockテーブルのHibernateマッピングファイル(Stock.hbm.xml)を作成し、「resources/hibernate/」フォルダーに配置します。
スプリング構成
データベース関連…。
データベースの詳細用のプロパティファイル(database.properties)を作成し、「resources/properties」フォルダに配置します。 データベースの詳細とSpring Beanの構成を異なるファイルに分散することをお勧めします。
database.properties
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/example jdbc.username=root jdbc.password=password
データベースの「dataSource」Bean構成ファイル(DataSource.xml)を作成し、database.propertiesからプロパティをインポートして、「“resources/database」フォルダーに配置します。
DataSource.xml
properties/database.properties
休止状態関連…。
セッションファクトリBean構成ファイル(Hibernate.xml)を作成し、“resources/database”フォルダに配置します。 このLocalSessionFactoryBeanクラスは、Springアプリケーションコンテキストで共有HibernateSessionFactoryをセットアップします。
Hibernate.xml
春豆関連…。
BOクラスとDAOクラスのBean構成ファイル(Stock.xml)を作成し、「resources/spring」フォルダーに配置します。 依存関係は、dao(stockDao)Beanをbo(stockBo)Beanに注入します。 stockDaoへのsessionFactory Bean。
Stock.xml
すべてのSpringのBean構成ファイルを単一のファイル(BeanLocations.xml)にインポートし、それを「resources/config」フォルダーに配置します。
BeanLocations.xml
6. それを実行します
すべてのファイルと構成があり、実行します。
package com.example.common;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.example.stock.bo.StockBo;
import com.example.stock.model.Stock;
public class App
{
public static void main( String[] args )
{
ApplicationContext appContext =
new ClassPathXmlApplicationContext("spring/config/BeanLocations.xml");
StockBo stockBo = (StockBo)appContext.getBean("stockBo");
/** insert **/
Stock stock = new Stock();
stock.setStockCode("7668");
stock.setStockName("HAIO");
stockBo.save(stock);
/** select **/
Stock stock2 = stockBo.findByStockCode("7668");
System.out.println(stock2);
/** update **/
stock2.setStockName("HAIO-1");
stockBo.update(stock2);
/** delete **/
stockBo.delete(stock2);
System.out.println("Done");
}
}
出力
Hibernate: insert into example.stock (STOCK_CODE, STOCK_NAME) values (?, ?) Hibernate: select stock0_.STOCK_ID as STOCK1_0_, stock0_.STOCK_CODE as STOCK2_0_, stock0_.STOCK_NAME as STOCK3_0_ from example.stock stock0_ where stock0_.STOCK_CODE=? Stock [stockCode=7668, stockId=11, stockName=HAIO] Hibernate: update example.stock set STOCK_CODE=?, STOCK_NAME=? where STOCK_ID=? Hibernate: delete from example.stock where STOCK_ID=? Done
ダウンロード–Spring-Hibernate-Example.zip