06hibernate hibernate的annotation

1.表名和类名不同,对表名进行配置
a.annotation方法:@Table(name="tableName")
b.xml:<class name="Student" table="tableName"></class>

2.字段名和属性相同
a.没有注解的默认为@Basic
b.xml中不用写column

3.字段名和属性不同
a.annotation:@Column(name="columnName")
b.xml:<property column="columnName"></property>

4.不需要persistence的字段(在数据库中不存储)
a.annotation:@Transient
b.xml:不写

5.映射日期与时间类型,指定时间精度
a.annotation:@Temporal(TemporalType.DATE)
b.xml:指定type <property name="name" type="date|time"></property>

6.映射枚举类型
a.annotation:@Enumerated(EnumType.STRING|EnumType.ORDINAL)//EnumType.ORDINAL存储的是int类型
b.xml:较麻烦

7.字段映射的位置
如果注解放在字段上,实际已经破坏了java的面向对象的封装性,原因在于:
field是private的,放上注解之后hibernate可以直接访问私有成员变量(反射)
所以建议:放在get方法上
a.best practice:保持field和get set方法的一致

8.@Lob
@Lob 注解属性将被持久化为 Blob 或 Clob 类型。
具体的java.sql.Clob, Character[], char[] 和 java.lang.String 将被持久化为 Clob 类型. 
java.sql.Blob, Byte[], byte[] 和 serializable type 将被持久化为 Blob 类型。


Junit4的bug
如:hibernate.cfg.xml类名配置有误
Junit显示的是sessionFactory.close()报空指针异常
解决办法:
a.在beforeClass中生成sessionFactory的时候使用try catch,此时抛出异常
b.在main方法中调用beforeClass方法




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值