今天所学习的知识点总结:
什么是JPA:JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
什么是POJO:POJO(Plain Old Java Objects)简单的Java对象,类似普通JavaBeans,是为了避免和EJB混淆所创造的简称。它是MartinFowler等发明的一个术语,用来表示普通的Java对象,不是JavaBean, EntityBean 或者 SessionBean。POJO不担当任何特殊的角色,也不实现任何特殊的Java框架的接口如,EJB,JDBC等等。
搭建日志环境并配置显示DDL语句
a) slf4j与log4j的关系:slf4j像是一个大管家,可以管理许多的日志框架,log4j是其中之一(类似JDBC)
b) 加入slf4j-log4j.jar,加入 log4j 的 jar 包,去掉 slf4-nop.jar
c) 从hibernate/project/etc 目录 copy log4j.properties
d) 査询hibernate文裆,日志部分,调整日志的输出策略
hibernate.cfg.xml: hbni2ddl.auto:create、update。至于先建表还是先建实体类的问题,当然是先建表,这样方便修改。PS:annotation一定要写在get方法上面,为什么不写成员变量上面,因为这样会破坏java的封装性,private不再私有。
表名和类名不同,对表名进行配置
a) Annotation: @Table
b) xml:<class name="className" table="TABLE">
不需要psersistence的字段(不用列)
a) Annotation:@Transient定义不写入数据库,属性透明
b) xml不写
字段名和属性名不同
a) Annotation: @Column
b) xml:<property name="attributeName" column="fiedName"/>
映射日期与时间类型,指定时间精度
a) Annotation:@Temporal(参数) 参数有3种 只显示时间,只显示日期,时间日期都显示
//@Temporal(TemporalType.DATE) 只显示日期
//@Temporal(TemporalType.TIME) 只显示时间
//@Temporal(TemporalType.TIMESTAMP) 显示日期与时间
b) xml:指定 type
<class name="Teacher" table="Teacher" >
<id name="id" column="id"></id>
<property name="name" type="time" />
</class>
字段映射的位置(field或者get方法):best practice:保持 field(变量定义) 和 get set 方法的一致