Hibernate+maven+mysql


最近在研究hibernate,想建立一個簡單的Hibernate+maven+mysql工程,網上找了一大堆的示例,要么看不懂結構,要么就是缺少必要文件。總之都沒有成功,結果無意在一個外文網上找了一個實例,驚嘆於人家的排版。也不得不感嘆的說下浩瀚的百度里,想找到自己想要的東西是多么難啊!

以下借鑒人家文章和內容並做部分補充,以供初學者一起分享:

(准備工作myeclipse的安裝+maven的下載+mysql的配置略過)

 

1.mysql中建一個mkyong的數據庫,其下面新建一個stock的空表格。

 //啟動mysql服務器 sudo service mysql start  //進入mysql mysql -uroot -p 輸入mysql密碼  //創建數據庫mkyong >create database mkyong;  //使用數據庫mkyong >use mkyong;  //在數據庫mkyong中創建表stock。請直接copy。 >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;

 

2.在myeclipse中創建一個maven工程,自己取一個名字。

New --> Project --> Maven Project --> Next --> 在(New Maven Project )中選擇創建一個webapp項目

 

3.創建源文件(Source Folder)

在 “src/main”目錄下創建 “/src/main/resources” , 之后所有的Hibernate’s xml配置文件都將放置在該文件下。

在“src/main”目錄下創建“/src/main/java”文件,其中放置java源代碼文件。

 

4.現在該工程的結構看起來如下:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.添加Hibernate和Mysql依賴

修改項目的pom.xml配置文件,它將支持Hibernate和mysql的連接,Hibernate項目需要dom4j, commons-logging, commons-collections和 cglib文件,mysql需要連接jdbc的文件。將原來的內容更換為如下代碼。

文件:pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com</groupId>
  <artifactId>Hibernate</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>Hibernate Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
        <!-- MySQL database driver -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.9</version>
    </dependency>
    <!-- Hibernate library dependecy start -->
    <dependency>
        <groupId>dom4j</groupId>
        <artifactId>dom4j</artifactId>
        <version>1.6.1</version>
    </dependency> 
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.1</version>
    </dependency>
    <!-- http://mvnrepository.com/artifact/org.hibernate/hibernate -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate</artifactId>
        <version>3.2.6.ga</version>
    </dependency>
    <dependency>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
        <version>3.2.1</version>
    </dependency>
    <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib-nodep</artifactId>
        <version>3.1</version>
    </dependency>
    <!-- Hibernate library dependecy end -->
    <dependency>
        <groupId>javax.transaction</groupId>
        <artifactId>jta</artifactId>
        <version>1.1</version>
    </dependency>  
  </dependencies>
  <build>
    <finalName>Hibernate</finalName>
  </build>
</project>

 

6.創建Hibernate類表映射文件

新建一個Stock.hbm.xml映射文件,路徑為:“src/main/resources/com/mkyong/common/Stock.hbm.xml

文件:Stock.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="com.mkyong.common.Stock" table="stock" catalog="mkyong">
        <id name="stockId" type="java.lang.Integer">
            <column name="STOCK_ID" />
            <generator class="identity" />
        </id>
        <property name="stockCode" type="string">
            <column name="STOCK_CODE" length="10" not-null="true" unique="true" />
        </property>
        <property name="stockName" type="string">
            <column name="STOCK_NAME" length="20" not-null="true" unique="true" />
        </property>
    </class>
</hibernate-mapping>

 

7.創建一個Stock的POJO  java文件,路徑為:“src/main/java/com/mkyong/common/Stock.java

文件:Stock.java

package com.mkyong.common;

/**
 * Model class for Stock
 */
public class Stock implements java.io.Serializable {

    private static final long serialVersionUID = 1L;
    private Stock stock;
    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;
    }
    public Stock getOper() {
        return stock;
    }
 
    public void setOper(Stock stock) {
        this.stock = stock;
    }
}

 

 

8.創建Hibernate配置文件

創建一個Hibernate配置文件,路徑為:“src/main/resources/hibernate.cfg.xml“。(注意修改其中的“數據庫密碼”,mkyong即為數據庫的名稱)

文件: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/mkyong</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="person">true</property>
        <mapping resource="com/mkyong/common/Stock.hbm.xml"></mapping>
    </session-factory>
</hibernate-configuration>

 

 

9.創建Hibernate會話文件

創建一個java類型的Hibernate會話文件,路徑為:“src/main/java/com/mkyong/persistence/HibernateUtil.java”。
文件:HibernateUtil.java

 

package com.mkyong.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();
    }
}

 

 

10.創建測試文件

創建一個名為App.java的測試文件,路徑為:“src/main/java/com/mkyong/common/App.java”.

文件:App.java

package com.mkyong.common;

import org.hibernate.Session;
import com.mkyong.persistence.HibernateUtil;

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("4715");
        stock.setStockName("GENM");
        
        session.save(stock);
        session.getTransaction().commit();
    }
}

 

 

11.再來看看工程的結構

創建和修改的六個文件結構如下:

 

12.運行結果

運行App.java這個程序,它將會插入一條數據到mysql數據庫中去。我們可以在myeclipse中看到該結果,也可以去mysql數據庫中查看是否已經插入成功。以下是運行結果:

Picked up _JAVA_OPTIONS:   -Dawt.useSystemAAFontSettings=gasp
Maven + Hibernate + MySQL
.......
五月 24, 2016 5:31:56 上午 org.hibernate.impl.SessionFactoryImpl <init>
信息: building session factory
五月 24, 2016 5:31:56 上午 org.hibernate.impl.SessionFactoryObjectFactory addInstance
信息: Hibernate: insert into mkyong.stock (STOCK_CODE, STOCK_NAME) values (?, ?)

 

 

 參考文件鏈接:Maven+Hibernate+Mysql Example(XML Mapping)

     源文件下載:Maven+Hibernate+Mysql Example(XML Mapping)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM