@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();
}