Hibernate annotation 学习笔记(4)

2018-11-28 15:49

Hibernate—annotation 学习笔记 第16页 共109页

二、 介绍MYSQL的图形化客户端

这样的软件网络很多,主要自己动手做 三、 Hibernate.cfg.xml:hbm2ddl.auto

在SessionFactory创建时,自动检查数据库结构,或者将数据库schema的DDL导出到数据库. 使用 create-drop时,在显式关闭SessionFactory时,将drop掉数据库schema. 取值 validate | update | create | create-drop 四、 搭建日志环境并配置显示DDL语句

我们使用slf接口,然后使用log4j的实现。 1、 首先引入log4j的jar包(log4j-1.2.14.jar),

2、 然后再引入slf4j实现LOG4J和适配器jar包(slf4j-log4j12-1.5.8.jar)

3、 最后创建log4j的配置文件(log4j.properties),并加以修改,只要保留

log4j.logger.org.hibernate.tool.hbm2ddl=debug

五、 搭建Junit环境

1、首先引入Junit 类库 jar包 (junit-4.8.1.jar)

2、在项目名上右键→new→Source Folder→输入名称→finish

3、注意,你对哪个包进行测试,你就在测试下建立和那个包相同的包 4、建立测试类,需要在测试的方法前面加入”@Test” public class TeacherTest { 六、 ehibernate.cfg.xml : show_sql

输出所有SQL语句到控制台. 有一个另外的选择是把org.hibernate.SQL这个log category设为debug。

private static SessionFactory sf = null; @BeforeClass//表示Junit此类被加载到内存中就执行这个方法 public static void beforClass(){ } @Test//表示下面的方法是测试用的。 public void testTeacherSave(){ } @AfterClass//Junit在类结果时,自动关闭 public static void afterClass(){ }} sf.close(); Teacher t = new Teacher(); t.setId(6); t.setName(\); t.setTitle(\中级\); Session session = sf.openSession(); session.beginTransaction(); session.save(t); session.getTransaction().commit(); session.close(); sf = new AnnotationConfiguration().configure().buildSessionFactory(); Hibernate—annotation 学习笔记 第17页 共109页

取值: true | false 七、 hibernate.cfg.xml :format_sql

在log和console中打印出更漂亮的SQL。 取值: true | false True样式: 16:32:39,750 DEBUG SchemaExport:377 - create table Teacher ( id integer not null, name varchar(255), title varchar(255), primary key (id) ) False样式: 16:33:40,484 DEBUG SchemaExport:377 - create table Teacher (id integer not null, name varchar(255), title varchar(255), primary key (id)) 八、 表名和类名不同,对表名进行配置

Annotation:使用 @Table(name=”tableName”) 进行注解 例如: /** * @Entity 表示下面的这个Teacher是一个实体类 * @Table 表示映射到数据表中的表名,其中的name参数表示\表名称\ * @Id 表示主键Id,一般放在getXXX前面 */ @Entity @Table(name=\) public class Teacher { [??] } Xml: 九、 字段名和属性相同

Annotation:默认为@Basic

注意:如果在成员属性没有加入任何注解,则默认在前面加入了@Basic

Xml中不用写column

十、 字段名和属性名不同

Annotation:使用@Column(name=”columnName”)进行注解

例如: /** * @Entity 表示下面的这个Teacher是一个实体类 * @Table 表示映射到数据表中的表名,其中的name参数表示\表名称\ * @Column 表示实体类成员属性映射数据表中的字段名,其中name参数指定一个新的字段名 * @Id 表示主键Id Hibernate—annotation 学习笔记 第18页 共109页

*/ @Entity @Table(name=\) public class Teacher { ?? Xml:

十一、

不需要(持久化)psersistence的字段

@Column(name=\)//字段名与属性不同时 public String getName() { } return name; //设置主键使用@Id @Id public int getId() { } return id; private int id; private String name; private String title; 就是不实体类的某个成员属性不需要存入数据库中 Annotation:使用@Transient 进行注解就可以了。 例如:

@Transient public String getTitle() { } Xml:不写(就是不需要对这个成员属性进行映射) 十二、

映射日期与时间类型,指定时间精度

return title; Annotation:使用@Temporal(value=TemporalType)来注解表示日期和时间的注解

其中TemporalType有三个值:TemporalType.TIMESTAMP 表示yyyy-MM-dd HH:mm:ss

TemporalType.DATE TemporalType.TIME

表示yyyy-MM-dd 表示HH:mm:ss

@Temporal(value=TemporalType.DATE) public Date getBirthDate() { } return birthDate; 注意:当使用注解时,属性为value时,则这个属性名可以省略,例如:@Temporal(TemporalType) Xml:使用type属性指定hibernate类型

注意:hibernate日期时间类型有:date, time, timestamp,当然您也可以使用Java包装类

Hibernate—annotation 学习笔记 第19页 共109页

十三、

Annotation:使用@Enumerated(value=EnumType)来注解表示此成员属性为枚举映射到数据库

其中EnumType有二个值:①EnumType.STRING 表示直接将枚举名称存入数据库

②EnumType.ORDINAL 表示将枚举所对应的数值存入数据库

映射枚举类型

Xml:映射非常的麻烦,先要定义自定义类型,然后再使用这个定义的类型??

第12课 使用hibernate工具类将对象模型生成关系模型

(也就是实体类生成数据库中的表),完整代码如下: package com.wjt276.hibernate; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport; /** * Hibernate工具
* 将对象模型生成关系模型(将对象生成数据库中的表) * 把hbm映射文件(或Annotation注解)转换成DDL * 生成数据表之前要求已经存在数据库 * 注:这个工具类建立好后,以后就不用建立了。以后直接Copy来用。 * @author wjt276 * @version 1.0 2009/10/16 */ public class ExportDB { public static void main(String[] args){ }} /* org.hibernate.cfg.Configuration类的作用: * 读取hibernate配置文件(hibernate.cfg.xml或hiberante.properties)的. * new Configuration()默认是读取hibernate.properties * 所以使用new Configuration().configure();来读取hibernate.cfg.xml配置文件 */ Configuration cfg = new AnnotationConfiguration().configure(); /* org.hibernate.tool.hbm2ddl.SchemaExport工具类: * 需要传入Configuration参数 * 此工具类可以将类导出生成数据库表 */ SchemaExport export = new SchemaExport(cfg); /** 开始导出 * 第一个参数:script 是否打印DDL信息 * 第二个参数:export 是否导出到数据库中生成表 */ export.create(true, true); 运行刚刚建立的ExportDB类中的main()方法,进行实际的导出类。

Hibernate—annotation 学习笔记 第20页 共109页

第13课 ID主键生成策略

一、 Xml方式

标签必须配置在标签内第一个位置。由一个字段构成主键,如果是复杂主键标签 被映射的类必须定义对应数据库表主键字段。大多数类有一个JavaBeans风格的属性, 为每一个实例包含唯一的标识。 元素定义了该属性到数据库表主键字段的映射。

(1) name (可选): 标识属性的名字(实体类的属性)。

(2) type (可选): 标识Hibernate类型的名字(省略则使用hibernate默认类型),也可以自己配置其它hbernate类型(integer, long, short, float, double, character, byte, boolean, yes_no, true_false)

(2) length(可选):当type为varchar时,设置字段长度

(3) column (可选 - 默认为属性名): 主键字段的名字(省略则取name为字段名)。

(4) unsaved-value (可选 - 默认为一个切合实际(sensible)的值): 一个特定的标识属性值,用来标志该实例是刚刚创建的,尚未保存。 这可以把这种实例和从以前的session中装载过(可能又做过修改--译者注) 但未再次持久化的实例区分开来。

(5) access (可选 - 默认为property): Hibernate用来访问属性值的策略。 如果 name属性不存在,会认为这个类没有标识属性。 unsaved-value 属性在Hibernate3中几乎不再需要。

还有一个另外的定义可以访问旧式的多主键数据。 我们强烈不建议使用这种方式。

元素(主键生成策略)

主键生成策略是必须配置

用来为该持久化类的实例生成唯一的标识。如果这个生成器实例需要某些配置值或者初始化参数, 用元素来传递。 所有的生成器都实现org.hibernate.id.IdentifierGenerator接口。 这是一个非常简单的接口;某些应用程序可以选择提供他们自己特定的实现。当然, Hibernate提供了很多内置的实现。下面是一些内置生成器的快捷名字:

increment

用于为long, short或者int类型生成 唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用。 在集群下不要使用。

identity

对DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL的内置标识字段提供支持。 返回的标识符是long, short 或者int类型的。 (数据库自增)


Hibernate annotation 学习笔记(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:儿童文明礼仪小故事(共4篇)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: