Hibernate基础配置
来源:程序员人生 发布时间:2015-01-15 08:41:21 阅读次数:3543次
3、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会自动将java类型的数据转换为对应的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();
}
}
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠