您的位置:首页 > 其它

Hibernate基础之四:基础配置@Table@Column@Temporal@Transient@Enumerated

2012-11-04 16:10 232 查看

一.基础配置

hibernate.cfg.xml中:

1.hbm2ddl.auto:create:没有就新建、update:可增加字段

2.show_sql:打印sql语句出来

3.format_sql:打印时分行显示,看着清晰点

二.@Table、 @Column、 @Temporal、 @Transient、 @Enumerated

这几个Annotation要写在相应的get方法上(写在属性头上实测不灵),其中:

@Table(name="t_Teacher")//解决类名和表名不对应

@Column(name="id")//解决属性名和字段名不对应

@Column(length=50)//限制字符串长度

@Temporal(TemporalType.DATE)//限制时间格式:只记录日期不记录时间。默认是时间日期都记录

@Transient//隐藏属性,不会被映射到表中

@Enumerated(EnumType.STRING)//把枚举里的sring存储进去

@Enumerated(EnumType.ORDINAL)//把存在的顺序编号int存储进去

import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

@Entity
@Table(name="t_Teacher")//解决类名和表名不对应
public class Teacher {

private int teacherid;
private String name;
private int age;
private Date birthday;
private String secret;
private Grade grade;

//setter&getter
@Id
@Column(name="id")//解决属性名和字段名不对应
public int getTeacherid() {
return teacherid;
}
@Column(length=50)//限制字符串长度
public String getName() {
return name;
}
@Temporal(TemporalType.DATE)//限制时间格式:只记录日期不记录时间。默认是时间日期都记录
public Date getBirthday() {
return birthday;
}
@Transient//隐藏属性,不会被映射到表中
public String getSecret() {
return secret;
}
@Enumerated(EnumType.STRING)//把枚举里的sring存储进去
//@Enumerated(EnumType.ORDINAL),把存在的顺序编号int存储进去
public Grade getGrade() {
return grade;
}


三.JUnit测试:

插入

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();

Teacher t = new Teacher();
t.setTeacherid(203);
t.setName("李四");
t.setAge(0);
t.setBirthday(new Date());
t.setGrade(Grade.A);

session.save(t);

session.getTransaction().commit();
HibernateUtil.getSessionFactory().close();


查询:

Session session2 = HibernateUtil.getSessionFactory().getCurrentSession();
session2.beginTransaction();

List<Teacher> result = session2.createQuery("from Teacher").list();//此行的Event指的是对应的类名,而不是数据表的名字。
Iterator it = result.iterator();
Teacher value = null;
while (it.hasNext())
{
value = (Teacher)it.next();
System.out.println(value.getTeacherid());
System.out.println(value.getName());
System.out.println(value.getAge());
System.out.println(value.getBirthday());
System.out.println(value.getGrade());
}

session2.getTransaction().commit();
HibernateUtil.getSessionFactory().close();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: