欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Hibernate基础配置

程序员文章站 2024-01-24 22:29:22
...

三、Hibernate基础配置 1、如果在Annotation中,类名与真是的数据库中的表名不同,可以使用增加@Table(name=数据库中的表名)的方式使其对应。此时,如果数据库中有这个表名则会对应上,如果没有这个表,则会生成这个表。同样的,在XXX.hbm.xml中,也可以配置

三、Hibernate基础配置
1、如果在Annotation中,类名与真是的数据库中的表名不同,可以使用增加@Table(name="数据库中的表名")的方式使其对应。此时,如果数据库中有这个表名则会对应上,如果没有这个表,则会生成这个表。同样的,在XXX.hbm.xml中,也可以配置增加响应的Tabel=tableName的配置。
2、所有没有定义注解的属性等价于在其上面添加了@Basic注解。
3、属性名与字段名不对应的情况,使用@Column(name="数据表的字段名")的方式使其相对应。
4、不需要persistence的字段可以使用@Transient的方式进行注解。这样该字段就不会写入数据表中。在xml中,不进行配置就可以了。
5、属性是时间格式的情况下,默认会将年月日时分秒全部存入。可以使用@Temporal(TemporalType.DATE)的形式使其只存入日期,当然,还可以使其存入其他的日期格式。
6、Hibernate映射的类型。Hibernate会自动将jav【本文来自鸿网互联 (http://www.68idc.cn)】a类型的数据转换为对应的sql类型


7、枚举类型的映射。如果指定的字段名含有枚举类型,则在数据表中也可以实现相应的存储。@Enumerated(EnumType.ORDINAL)的方式使得存入的枚举类型为int类型,@Enumerated(EnumType.STRING)的方式使得存入的值为varchar类型。
8、Annotation建议写在get()方法上,而不是写在属性上。
小实验:
修改Teacher.java
package com.zgy.hibernate.model;


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="_teacher")
public class Teacher {
private int id;
private String name;
private String title;
private String address;
private String wifeName;
private Date birth;
private ZhiCheng zhiCheng;
@Id
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column(name="_name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}

public String getWifeName() {
return wifeName;
}
public void setWifeName(String wifeName) {
this.wifeName = wifeName;
}
@Temporal(TemporalType.DATE)
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
@Enumerated(EnumType.STRING)
public ZhiCheng getZhiCheng() {
return zhiCheng;
}
public void setZhiCheng(ZhiCheng zhiCheng) {
this.zhiCheng = zhiCheng;
}



}




修改test下的TeacherTesting.java
package com.zgy.hibernate.model;


import static org.junit.Assert.*;


import java.util.Date;


import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;


public class TeacherTesting {
public static SessionFactory sf = null;
@BeforeClass
public static void beforeClass(){
sf = new AnnotationConfiguration().configure().buildSessionFactory();
}
@Test
public void test() {
Teacher t = new Teacher();
t.setId(5);
t.setName("t5");
t.setTitle("高级");
t.setAddress("北京");
t.setBirth(new Date());
t.setZhiCheng(ZhiCheng.A);

Session session = sf.openSession();
session.beginTransaction();
session.save(t);
session.getTransaction().commit();
session.close();

}


@AfterClass
public static void afterClass(){
sf.close();
}
}