Hibernate基本配置

Hibernate基础配置:

1.hbm2dll.auto:取值 validate|update|create|create-drop.   

update 更新。使用create-drop时,在显示关闭sessionFactory时,将drop掉数据库schema.

Validate,当你创建好表了,往里插数据,在操作任何数据之前,都会帮你检查数据库里的表是不是能和hbm文件和配置能对应上。

实现自动建表。要不Annotation要不.hbm.xml

 

2. 先建表还是实体类。纯理论:先写类,根据Annotation建好表。

   实际,先表后类。对数据库优化有好处。

3. 搭建日志环境显示DDL语句。

   Slf4j可以认为是一个日志的框架,可以用各种各样的具体实现。可以用slf自己的实现,log4j,jdk logging api,apache commons-logging.Hibernate3.3.2用的是slfSlf就是个接口。

我们要把slf的接口转换成log4j的接口,包 用了adapter的设计模式。


Junit:调试出来没有错误,但是程序就是有问题有两种解决办法。

Junit中:

public static void main(){

beforeClass();

}

try {

sf=new org.hibernate.cfg.Configuration().configure().buildSessionFactory();

} catch (HibernateException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

<!-- 显示SQL-->

<property name="hibernate.show_sql">true</property>

<!-- 格式化SQL-->

<property name="hibernate.format_sql">true</property>

Show_sql是true的话,打印sql语句。

Formate_sql按sql语句的格式打印。

 

如果表名和类名不一致怎么办?

Annotation:在表名上加@Table(_Teacher)   javax.persistence

Xml:在class标签中加table=”_Teacher”

 

字段名和属性名相同,Annotation:只写一个Id就好了。如果没有加@Id,就相当于加了@Basic,这个注解加不加是没有关系的。字段名和属性名不同,Annotation:在属性上写@Column(name=”_name”).xml中:在property标签中加column=” ”.

 

如果不想让属性持久化,Annotation:就在getXXX()上加@Transient.透明的,存储的时候透明人。数据库中的表就没有这个属性。xml:中不用property标签就行了。

 

映射日期和时间的类型:Date是包括日期和时间的。

@Temporal(TemporalType.DATE)

public Date getDate() {

return date;

}

public void setDate(Date date) {

this.date = date;

}

 

TemporalType里有三个常量:DATE只记日期  TIME  TIMESTANP(默认)时间和日期都记下来。

大多数情况时间和日期都记下来。

Xml:

 

 

映射枚举类型:用xml配置会非常麻烦,


EnumType.STRING的话按字符串把职称的名字写进去,如果是EnumType.ORDINAL会按int类型也就是按数组的下标值、



Annotation字段映射位置:

@Id可以放在field下也可以放在get/set方法下。有很多人放在field上,这样看起来更清晰,但是如果这样放就破坏了java 的封装性,原因是我们的字段都是private的,如果你在private上写私有的话,那么就意味着hibernate 就可以访问你私有的成员变量。Java的反射机制就可以做到这一点。从设计的角度不推荐这样。因为我们设置为私有的就是不希望别人来拿我们私有的东西。建议写在get方法上。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值