Hiberante+Mysql+Maven 2 XMLプロファイル
9073 ワード
詳細
Maven 3+Hibernate 3.1+Mysqlを用いて簡単なモデルを実現
使用するツール: Eclipse 4.3 Maven 3.1 Hibernate 3.1rc2 MySQL 5.0
具体的な構築実現手順:
1.Davidとしてデータベースを作成します.
2.Davidデータベースにテーブルを作成する
3.EclipseでMaven Projectを作成する
4.POM.xmlの作成
5.
Stock.hbm.xmlを構成するこのファイルはsrc/main/resources/com/david/common/stock.hbm.xmlに置く
6.Stockエンティティークラスの作成
7.簡単なHibernateツールクラスを作成します.セッションなどの操作を取得するために使用
8.
最後にHibernate.cfg.xmlを作成/src/main/resources/hibernate.cfg.xmlに配置
9.構成に問題があるかどうかを確認するために、テストクラスを書きます.
10.運転中にエラーが検出されました.エラーメッセージは次のとおりです.
11.この問題を解決する:元はパケットの競合(asmが3.3バージョンを導入していない場合、mavenの依存伝達は自動的に1.5.3バージョンのasmjarパケットを導入するため、このパケットはcglib 2.2バージョンのパケットと競合する.そのため、表示する高バージョンのasmパケットを導入する)
pom.xmlに追加を表示
12.再稼働すれば問題ありません.
Maven 3+Hibernate 3.1+Mysqlを用いて簡単なモデルを実現
使用するツール: Eclipse 4.3 Maven 3.1 Hibernate 3.1rc2 MySQL 5.0
具体的な構築実現手順:
1.Davidとしてデータベースを作成します.
2.Davidデータベースにテーブルを作成する
DROP TABLE IF EXISTS `stock`;
CREATE TABLE `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 DEFAULT CHARSET=utf8;
3.EclipseでMaven Projectを作成する
4.POM.xmlの作成
4.0.0
com.david.common
SpringExample
0.0.1-SNAPSHOT
jar
SpringExample
http://maven.apache.org
UTF-8
junit
junit
3.8.1
test
hibernate
hibernate
3.1rc2
mysql
mysql-connector-java
5.1.9
dom4j
dom4j
1.6.1
commons-logging
commons-logging
1.1.1
commons-collections
commons-collections
3.2.1
cglib
cglib
2.2
javax.transaction
jta
1.1
com.jolira
asm
3.3.0
5.
Stock.hbm.xmlを構成するこのファイルはsrc/main/resources/com/david/common/stock.hbm.xmlに置く
6.Stockエンティティークラスの作成
public class Stock implements Serializable {
private static final long serialVersionUID = 1L;
private Integer stockId;
private String stockCode;
private String stockName;
public Stock () {
}
public Stock(String stockCode, String stockName){
this.stockCode = stockCode;
this.stockName = stockName;
}
public Integer getStockId() {
return stockId;
}
public void setStockId(Integer stockId) {
this.stockId = stockId;
}
public String getStockCode() {
return stockCode;
}
public void setStockCode(String stockCode) {
this.stockCode = stockCode;
}
public String getStockName() {
return stockName;
}
public void setStockName(String stockName) {
this.stockName = stockName;
}
public String toString(){
return "[ stockId:"+stockId
+" stockName:"+stockName+" stockCode:"+stockCode+"]";
}
}
7.簡単なHibernateツールクラスを作成します.セッションなどの操作を取得するために使用
public class HibernateUtil {
private static final SessionFactory sessionFactory = buildSessionFactory();
public static SessionFactory buildSessionFactory(){
try {
return new Configuration().configure().buildSessionFactory();
} catch (Exception ex) {
System.err.println("Initial SessionFactory creation fails"+ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
public static void shutdown(){
getSessionFactory().close();
}
}
8.
最後にHibernate.cfg.xmlを作成/src/main/resources/hibernate.cfg.xmlに配置
false
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/david
root
123456
org.hibernate.dialect.MySQLDialect
true
9.構成に問題があるかどうかを確認するために、テストクラスを書きます.
public class App
{
public static void main( String[] args )
{
System.out.println("Maven +hibernate + Mysql");
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
Stock stock = new Stock();
stock.setStockCode("47135");
stock.setStockName("GENM");
session.save(stock);
session.getTransaction().commit();
}
}
10.運転中にエラーが検出されました.エラーメッセージは次のとおりです.
Exception in thread "main" java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.(I)V
at net.sf.cglib.core.DebuggingClassWriter.(DebuggingClassWriter.java:47)
at net.sf.cglib.core.DefaultGeneratorStrategy.getClassWriter(DefaultGeneratorStrategy.java:30)
at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:24)
at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:144)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:116)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)
at org.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:362)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1145)
at com.david.utils.HibernateUtil.buildSessionFactory(HibernateUtil.java:16)
at com.david.utils.HibernateUtil.(HibernateUtil.java:12)
at com.david.common.App.main(App.java:17)
11.この問題を解決する:元はパケットの競合(asmが3.3バージョンを導入していない場合、mavenの依存伝達は自動的に1.5.3バージョンのasmjarパケットを導入するため、このパケットはcglib 2.2バージョンのパケットと競合する.そのため、表示する高バージョンのasmパケットを導入する)
pom.xmlに追加を表示
com.jolira
asm
3.3.0
12.再稼働すれば問題ありません.