Hibernate4 mysql 采用注解(annotation)方式配置入门例子

前面的例子(参考 hibernate4 mysql xml )中记录了利用传统的hibernate XML 隐射方式配置, 但这种处理方式在近几年已经不流行了,因为要维护太多的XML 配置文件,而且修改之后还得重启应用服务器。近年流行的是用注解方式写程序, 直观,对程序员来说更容易维护,代码更少。所以在前一个例子的基础上,改写成hibernate 注解方式.

1. 拷贝前面的例子,重新命名为一个新的工程


删掉 Stock.xml hibernate映射配置文件, 修改 Stock.java 为如下:
程序代码 程序代码

package com.yihaomen.hibernate.domain;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

/**
* Model class for Stock
*/

@Entity
@Table(name="stock")
public class Stock implements java.io.Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="STOCK_ID")
    private Integer stockId;
    
    @Column(name="STOCK_CODE", length=10)
    private String stockCode;
    
    @Column(name="STOCK_NAME", length=20)
    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;
    }

}


这里注意 怎么定义映射那个表,那个字段的。当然还有自动增量的定义,Id,以及生成策略, 先简单介绍一下有如下几种生成策略:
AUTO - 可以是identity column类型,或者sequence类型或者table类型,取决于不同的底层数据库.
TABLE - 使用表保存id值(也就是会为应用的表创建一张专门保存Id的表)
IDENTITY - identity column
SEQUENCE – sequence

这里采用了 AUTO 方式,可以在多个数据库之间切换,自动识别,如果是oracle 应该用 sequence 方式了,具体才用那种方式,根据自己数据库需要,以及程序要求.

2. 更新注解下的hibernate 配置文件
程序代码 程序代码

<?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/yihaomen-hibernate</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/yihaomen/hibernate/domain/Stock.hbm.xml"></mapping>
        -->
       <mapping class="com.yihaomen.hibernate.domain.Stock"></mapping>
    </session-factory>
</hibernate-configuration>


这里的重点是将
程序代码 程序代码

<mapping resource="com/yihaomen/hibernate/domain/Stock.hbm.xml"></mapping>

替换成
程序代码 程序代码

<mapping class="com.yihaomen.hibernate.domain.Stock"></mapping>


3. 其他配置部分以及程序代码保持原样

运行测试程序,可以但到结果,数据被成功插入到数据库中了,源代码在下面下载:
下载文件 hibernate4 mysql annotation download

除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: hibernate annotation
相关日志:
评论: 1 | 引用: 0 | 查看次数: -
回复回复坎坎坷坷[2015-03-28 02:55 PM | del]
坎坎坷坷
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.