Maven 2 + Hibernate 3.2 + MySQL示例(XML映射)

注意
本文已过时,请参阅最新的Hibernate 3.6教程-Maven 3 + Hibernate 3.6 + Oracle 11g示例(XML映射)

本快速指南向您展示如何使用Maven生成一个简单的Java项目,以及如何使用Hibernate将记录插入MySQL数据库。

本文使用的工具和技术:

  1. Maven的2.2.1
  2. JDK 1.6.0_13
  3. 休眠3.2.3.GA
  4. MySQL 5.0

1.表创建

MySQL脚本创建一个“股票”表。

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;

2.使用Maven生成项目结构

在命令提示符下,发出“ mvn archetype:generate ”,选择项目15创建一个快速启动的Maven的Java项目,然后填写项目的信息– groupId,artifactId和package。

E:\workspace>mvn archetype:generate
[INFO] Scanning for projects...
...
Choose a number:  
(1/2/3....) 15: : 15
...
Define value for groupId: : com.mkyong.common
Define value for artifactId: : HibernateExample
Define value for version:  1.0-SNAPSHOT: :
Define value for package:  com.mkyong.common: : com.mkyong.common
[INFO] OldArchetype created in dir: E:\workspace\HibernateExample
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------

3.转换为Eclipse项目

发出“ mvn eclipse:eclipse ”,将新生成的项目转换为Eclipse的样式项目

4.将转换后的项目导入Eclipse IDE

在Eclipse IDE中,选择“文件”->“导入”->“常规”文件夹,“现有项目到工作区”->“选择项目文件夹位置”。 完成了

5.创建一个资源文件夹

在“ src / main ”文件夹下的“ / src / main / resources ”下创建一个资源文件夹,以后所有Hibernate的xml文件都将放在这里。 Maven会将此文件夹中的所有文件视为资源文件,并自动将其复制到输出类。

6.审查项目结构

确保文件夹结构如下

hibernate-example-1

Maven将为您生成所有Java的标准文件夹结构(在资源文件夹旁边,快速入门原型#15不包含resources文件夹)

7.添加Hibernate和MySQL依赖关系

修改Maven的pom.xml文件,添加对Hibernate和MySQL的支持。 Hibernate需要dom4j,commons-logging,commons-collections和cglib作为依赖库,将其添加。

档案:pom.xml

<project ...>
<modelVersion>4.0.0</modelVersion>
  <groupId>com.mkyong.common</groupId>
  <artifactId>HibernateExample</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>HibernateExample</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 framework -->
	<dependency>
		<groupId>hibernate</groupId>
		<artifactId>hibernate3</artifactId>
		<version>3.2.3.GA</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>
	
	<dependency>
		<groupId>commons-collections</groupId>
		<artifactId>commons-collections</artifactId>
		<version>3.2.1</version>
	</dependency>
	
	<dependency>
		<groupId>cglib</groupId>
		<artifactId>cglib</artifactId>
		<version>2.2</version>
	</dependency>
	<!-- Hibernate library dependecy end -->
	
	<dependency>
		<groupId>javax.transaction</groupId>
		<artifactId>jta</artifactId>
		<version>1.1</version>
	</dependency>
	
  </dependencies>
</project>

发出“ mvn eclipse:eclipse ”,Maven将自动下载所有的Hibernate和MySQL库,并放入Maven的本地存储库中。 同时,出于依赖的目的,Maven会将下载的库添加到Eclipse“ .classpath ”中。 再次喜欢🙂,无需查找库并自己复制。

8.创建Hibernate Mapping文件+ Model类

在先决条件下,将创建一个名为“ stock”的表,现在您需要为其创建一个Hibernate XML映射文件和模型类。

创建一个Stock.hbm.xml文件,并将其放在“ src / main / resources / com / mkyong / common / Stock.hbm.xml ”中。 如果“ resources / com / mkyong / common /”文件夹不存在,则创建它。

档案:Stock.hbm.xml

<?xml version="1.0"?>
<!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>

创建一个Stock.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 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;
	}

}

注意
创建模型类和映射文件在大型应用程序中非常繁琐,使用Hibernate工具可以自动生成,请查看本文– Hibernate工具自动生成

9.创建休眠配置文件

创建一个Hibernate的配置文件,并将其放在资源根文件夹“ src / main / resources / hibernate.cfg.xml ”下。 相应地填写您的MySQL设置。

档案: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">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="show_sql">true</property>
        <mapping resource="com/mkyong/common/Stock.hbm.xml"></mapping>
    </session-factory>
</hibernate-configuration>

将“ show_sql”属性设置为true将输出Hibernate SQL语句。 Hibernate Dialect告诉您的Hibernate应用程序必须生成哪个SQL才能与您的数据库对话。 请参考本文以获得其他数据库方言-Hibernate方言集合

10.创建Hibernate Utility类

创建一个HibernateUtil.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();
    }

}

11.再次检查项目结构

听起来就像创建许多新文件和文件夹,进行检查并确保文件夹结构如下

休眠示例2

12.对其进行编码以保存记录

修改默认的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();
    }
}

13.运行并查看输出

运行您的App.java,它将在“股票”表中插入一条新记录。

Maven + Hibernate + MySQL
...
Dec 17, 2009 5:05:26 PM org.hibernate.impl.SessionFactoryObjectFactory addInstance
INFO: Not binding factory to JNDI, no JNDI name configured
Hibernate: insert into mkyong.stock (STOCK_CODE, STOCK_NAME) values (?, ?)

做完了

下载它– Maven_Hibernate_MySQL_Example.zip (12kb)

参考

  1. http://docs.jboss.org/hibernate/core/3.3/reference/zh/html/tutorial.html

翻译自: https://mkyong.com/hibernate/quick-start-maven-hibernate-mysql-example/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值