hibernate注解配置



@Entity  //@Entity注释指名这是一个实体Bean
@Table(name="Table_Name")//指定table的名字;
@SequenceGenerator(name="studentSEQ",sequenceName="seqName",allocationSize=1,initialValue=1)
/* studentSEQ:表示为申明的这个Sequence指定一个名称,以便使用.
seqName:表示为数据库中的Sequence指定一个名称。两个参数的名称可以一样。
 id以1递增,应该把allocationSize=1,因为JPA默认的递增大小是50。同时initialValue默认为0,一般都是设置为initialValue=1
 *
 */
public class Student {
    private int age;
    private int id;
    private String name;
    public int getAge() {
        return age;
    }
     @Id 
     @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seqName")
/* strategy:固定为GenerationType.SEQUENCE;oracle主键生成策略。
如果是mysql 的话参数为strategy=GenerationType.SEQUENCE.
 Generator:在实体类前面申明的sequnce的名称  
     */
    public int getId() {
            return id;
        }
         @Column(name="name")
/*@Column注释定义了将成员属性映射到关系表中的哪一列和该列的结构信息
name:映射的列名。如:映射tbl_user表的name列,可以在name属性的上面
或getName方法上面加入*/
    public String getName() {
        return name;
    }
public void setAge(int age) {
    this.age = age;
}
 public void setId(int id) {
    this.id = id;
}
 public void setName(String name) {
    this.name = name;
}
}

联合主键:就是将几个字段一起做为主键;(不常用)

package com.neusoft.hibernate.model;

import java.io.Serializable;

public class School implements Serializable{
    private int id;
    private String name;

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public boolean equals(Object o){
        if(o instanceof School){
            School school=(School)o;
            if(this.id==school.getId()&&this.name.equals(school.getName())){
                return true;

            }

        }

        return false;
    }
    @Override
    public int hashCode(){

        return this.name.hashCode();
    }
}
<hibernate-mapping package="com.neusoft.hibernate.model">
<class name="Teacher" table="teacher">
 <composite-id name="school" class="com.neusoft.hibernate.model.School">
 <key-property name="id"></key-property>
 <key-property name="name"></key-property>
 </composite-id>
 <property name="title" column="titleName"></property>
</class>


</hibernate-mapping>
@Test
    public void addTeacher(){
        School school=new School();
        school.setId(3);
        school.setName("联合主键");
        Teacher t=new Teacher();

        t.setSchool(school);
        t.setTitle("neusoft");

        Configuration con=new AnnotationConfiguration();
        SessionFactory factory=con.configure().buildSessionFactory();
        Session session=factory.openSession();
        session.beginTransaction();
        session.save(t);
        session.getTransaction().commit();
        session.close();
        factory.close();

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值