猿教程 Logo

Hibernate入门实例:Maven 2 + Hibernate 3.2 + MySQL Example (XML Mapping)

本快速指南介绍了如何使用Maven生成一个简单的Java项目,并使用Hibernate将记录插入到MySQL数据库中。

本文中使用的工具和技术:

  1. Maven 2.2.1

  2. JDK 1.6.0_13

  3. Hibernate 3.2.3.GA

  4. MySQL 5.0

1.表创建

MySQL脚本创建一个“Stock”表。

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 原型: 生成", 选择 project # 15 创建一个快速启动 maven 的 java 项目, 然后填写您的项目信息-groupid、artifactId 和软件包。

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.审查项目结构

确保文件夹结构如下


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

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文件+模型类

在前提条件中,创建了一个名为“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;
}
}

9.创建Hibernate配置文件

创建一个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方言告诉您的Hibernate应用程序哪些SQL必须生成与数据库通信。

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.再次审查项目结构

听起来像创建许多新的文件和文件夹,查看它,并确保文件夹结构如下


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,它将在“stock”表中插入一个新的记录。

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 (?, ?)



版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Hibernate/Hibernate-Session.html