(十) 使用Hibernate 注解

  • Hibernate里有两种注解 :
  1. Hibernate 注解
  2. JPA注解

案例一:   用注解对非复合主键的表生成配置文件

package bean;

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

import org.hibernate.annotations.GenericGenerator;

@Entity   // 表明这个类是一个实体类,所谓实体类就是该类对应数据库中的表
@Table(name = "user")   // 该实体类对应着数据库中的user表
public class UserBean {

    @Id
    @GeneratedValue(generator="a")
    @GenericGenerator(name="a",strategy="assigned")   //设置主键增长机制,assigned为程序中定义,这也是默认方式。
    private Integer userid;
    private String username;
    private String password;
    private String sex;
    @Column(name = "is_admin")      // 表示idAdmin这个属性对应着数据库中的is_admin这个字段
    private String isAdmin;

    public UserBean() {

    }

    public UserBean(Integer userid, String username, String password,
            String sex, String isAdmin) {
        super();
        this.userid = userid;
        this.username = username;
        this.password = password;
        this.sex = sex;
        this.isAdmin = isAdmin;
    }

    public Integer getUserid() {
        return userid;
    }

    public void setUserid(Integer userid) {
        this.userid = userid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getIsAdmin() {
        return isAdmin;
    }

    public void setIsAdmin(String isAdmin) {
        this.isAdmin = isAdmin;
    }
}
  • 更新总配置文件
    <mapping class="bean.UserBean"/>

案例二:  用注解对含有复合主键的表生成配置文件

package bean;

import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * Score entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name="score")
public class Score implements java.io.Serializable {

    // Fields
    @Id
    @EmbeddedId  // 表示主键是一个复合主键
    private ScoreId id;
    private Integer score;

    // Constructors

    /** default constructor */
    public Score() {
    }

    /** minimal constructor */
    public Score(ScoreId id) {
        this.id = id;
    }

    /** full constructor */
    public Score(ScoreId id, Integer score) {
        this.id = id;
        this.score = score;
    }

    // Property accessors

    public ScoreId getId() {
        return this.id;
    }

    public void setId(ScoreId id) {
        this.id = id;
    }

    public Integer getScore() {
        return this.score;
    }

    public void setScore(Integer score) {
        this.score = score;
    }

}
  • ScoreId.java
package bean;

import javax.persistence.Embeddable;

/**
 * ScoreId entity. @author MyEclipse Persistence Tools
 */
@Embeddable   //表示该类可被其他类嵌入
public class ScoreId implements java.io.Serializable {

    // Fields

    private Integer userid;
    private String subject;

    // Constructors

    /** default constructor */
    public ScoreId() {
    }

    /** full constructor */
    public ScoreId(Integer userid, String subject) {
        this.userid = userid;
        this.subject = subject;
    }

    // Property accessors

    public Integer getUserid() {
        return this.userid;
    }

    public void setUserid(Integer userid) {
        this.userid = userid;
    }

    public String getSubject() {
        return this.subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public boolean equals(Object other) {
        if ((this == other))
            return true;
        if ((other == null))
            return false;
        if (!(other instanceof ScoreId))
            return false;
        ScoreId castOther = (ScoreId) other;

        return ((this.getUserid() == castOther.getUserid()) || (this
                .getUserid() != null && castOther.getUserid() != null && this
                .getUserid().equals(castOther.getUserid())))
                && ((this.getSubject() == castOther.getSubject()) || (this
                        .getSubject() != null && castOther.getSubject() != null && this
                        .getSubject().equals(castOther.getSubject())));
    }

    public int hashCode() {
        int result = 17;

        result = 37 * result
                + (getUserid() == null ? 0 : this.getUserid().hashCode());
        result = 37 * result
                + (getSubject() == null ? 0 : this.getSubject().hashCode());
        return result;
    }

}
  • 更新总配置文件
<mapping class="bean.Score"/>



使用注解方式配置bean的时候,Hibernate默认把bean中的所有成员属性都与数据库中的字段相关联,如果有些成员属性并不是数据库中的字段的时候,此时就会报错,

则这时在这些属性前添加  @Transient 注解, 表明这个属性不是数据库的字段。

时间: 2024-11-08 15:58:08

(十) 使用Hibernate 注解的相关文章

Spring+SpringMVC+MyBatis深入学习及搭建(十六)——SpringMVC注解开发(高级篇)

转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7085268.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十五)——SpringMVC注解开发(基础篇) 本文主要内容: (1)SpringMVC校验 (2)数据回显 (3)异常处理器 (4)图片上传 (5)Json数据交互 (6)支持RESTful 1.SpringMVC校验 1.1校验理解 项目中,通常使用较多的是前端的校验,比如页面中js校验.对于安全要求较高的

hibernate注解

慕课网:http://www.imooc.com/learn/524 一.类级别注解 简介 使用注解的目的:为了简化繁琐的ORM映射文件(*.hbm)的配置 JPA(Java Persistence API)与hibernate的关系:JPA是标准接口,hibernate是实现(hibernate的功能是jpa的超集,功能更强大) hibernate如何实现与JPA的关系:通过hibernate-annotation.hibernate-entitymanager.hibernate-core三

Hibernate学习一:Hibernate注解CascadeType

http://zy19982004.iteye.com/blog/1721846 ———————————————————————————————————————————————————————— Hibernate学习一:Hibernate注解CascadeType 博客分类: Hibernate hibernate 一.概念 现有一场景:一个管理员可以管理多个网吧,一个网吧可以被多个管理员管理.从中抽象出一个多对多的例子user-bar. 主控方user:多对多里面里面会有第三张表user_b

Hibernate注解总结:

Hibernate注解总结: 首先我们都知道Hibernate框架是持久层的一个框架,用于对数据的访问和操作.个人觉得其强大就在于它可以使用HQL语句来进行快速的增.删.改的操作,也可以使用Sql语句来进行数据操作,很是方便快捷,备受大型项目青睐,之前所做的都是用的MyBatis感觉比MyBatis要方便些.但是有些人会认为说开发人员理应熟练使用sql语句,对MyBatis更欢迎.智者见智仁者见仁.我就从我平时使用的注解说起吧: @id:这个想必大家都不会陌生的,在实体类中定以主键的标识. @E

关于hibernate注解的简单应用

@Override 用途:重写父类的同名方法 单元测试注解 @Test 用途:用于测试 @Before 用途:单测方法走之前执行 @After 用途:单测方法走之后执行 注解的目标:替换小配置.替换hbm文件 @Entity  :标识实体类(被持久化) @Table  :DB层表的名称 @Transient :不持久化某个属性 @Column:数据表中的字段名 @GenerateValue :主键生成策略 -----------------关联--------------------------

Hibernate注解映射联合主键的三种主要方式(转载)

转自:http://blog.csdn.net/robinpipi/article/details/7655388 联合主键用hibernate注解映射方式主要有三种:第一.将联合主键的字段单独放在一个类中,该类需要实现Java.io.Serializable接口并重写equals和hascode,再将该类注解为@Embeddable,最后在主类中(该类不包含联合主键类中的字段)保存该联合主键类的一个引用,并生成set和get方法,并将该引用注解为@Id 第二.将联合主键的字段单独放在一个类中,

【学习笔记】Hibernate 注解 (Y2-1-9)

Hibernate注解 1.什么是注解在类上或者方法上打上其他类型的类型元数据 @标志 使用过的注解: @override  方法重写 @Test Junit 单元测试 @Before 单元测试 @After 单元测试 Hibernate中常用的注解 [email protected] 将一个类声明为持久化类 [email protected] 声明持久化类的标识属性 [email protected] 定义标识属性值的生成策略,默认为native [email protected] 将属性映射

hibernate注解解析

最近学习hibernate注解形式配置POJO类,将注解的解析记下来,以备以后使用. 例1. @Entity@Table(name="user")  public class Flight implements Serializable {    Long id; @Id @GeneratedValue(generator="generator") @GenericGenerator(name="generator", strategy = &q

SHOP++ 中Hibernate 注解 用法

最近接触到一款JAVA开源软件(shop++)这是一款电商软件.然后看了这款软件的源代码,发现真的很强大.框架采用的是spring mvc + hibernate + freemarker ,代码结构层次分明,代码封装和重用性也很高.非常适合二次开发.其次重点说说hibernate 注解吧 数据库表采用的是hibernate注解映射的方式.然后略微研究了下,分享一下自己的见解. @Entity说明此类是一个实体映射 @Tabletable用来定义entity主表的name,cataloh,sch