1. 先在 eclipse create maven project
Choose File –> New –> Project. Select Maven-> Maven Project -> Next
-> choice "maven-archetype-quickstart" -> Next
Group Id: whatever
Artifact Id: test_hibernate
Package: com.wiki.common
Click Finish.
2. 在 eclipse 左方的 那欄 針對剛 create 的 project 按右鍵
New -> Source Folder -> src/main/resources
要置入一些 xml檔使用
3. 在 pom.xml <dependencies> </dependencies> 中加入以下的 dependency
Modify the Maven’s pom.xml file, add support for Hibernate and MySQL.
Hibernate requires dom4j, commons-logging, commons-collections and cglib as dependency library, mysql-connector-java add it.
org.hibernate
hibernate-core
4.3.5.Final
dom4j
dom4j
1.6.1
commons-logging
commons-logging
1.1.3
commons-collections
commons-collections
3.2.1
cglib
cglib
3.1
mysql
mysql-connector-java
5.1.30
4. 在 src/main/resources 底下 add two xml file : Stock.hbm.xml and hibernate.cfg.xml
Stock.hbm.xml
<hibernate-mapping>
<class catalog="stock" name="com.wiki.common.Stock" table="stock">
<id name="stockId" type="java.lang.Integer">
<column name="STOCK_ID">
<generator class="identity">
</generator></column></id>
<property name="stockCode" type="string">
<column length="10" name="STOCK_CODE" not-null="true" unique="true">
</column></property>
<property name="stockName" type="string">
<column length="20" name="STOCK_NAME" not-null="true" unique="true">
</column></property>
</class>
</hibernate-mapping>
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
< !DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.bytecode.use_reflection_optimizer">false</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/stock</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<mapping resource="Stock.hbm.xml"></mapping>
</session-factory>
</hibernate-configuration>
5. 在 src/main/java/com/wiki/common/ 新增 Stock.java 及 main.java
Stock.java
package com.wiki.common;
/**
* Model class for Stock
*/
public class Stock implements java.io.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 this.stockId;
}
public void setStockId(Integer stockId) {
this.stockId = stockId;
}
public String getStockCode() {
return this.stockCode;
}
public void setStockCode(String stockCode) {
this.stockCode = stockCode;
}
public String getStockName() {
return this.stockName;
}
public void setStockName(String stockName) {
this.stockName = stockName;
}
}
main.java
package com.wiki.common;
import org.hibernate.Session;
import com.wiki.persistence.HibernateUtil;
public class main
{
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("9999");
stock.setStockName("法克康");
session.save(stock);
session.getTransaction().commit();
}
}
6. 在 src/main/java/com/wiki/persistence 新增 HibernateUtil.java
HibernateUtil.java
package com.wiki.persistence;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static final SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
try {
// Create the SessionFactory from hibernate.cfg.xml
return new Configuration().configure().buildSessionFactory();
}
catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
public static void shutdown() {
// Close caches and connection pools
getSessionFactory().close();
}
}
7. 到 mysql 終端介面 create database
# mysql -uroot -p
mysql> create database stock;
mysql> use stock;
mysql> 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;
8. Run main.java
若有成功看到這兩行,代表 data 已成功寫入 DB了
Maven + Hibernate + MySQL
Hibernate: insert into stock.stock (STOCK_CODE, STOCK_NAME) values (?, ?)
reference(參考來源)