Hibernate学习笔记(1)之主键映射配置

这篇博客介绍了Hibernate的学习笔记,重点关注主键映射配置。文章详细讲解了Configuration类的使用,包括添加映射资源的方法。同时,文章还讨论了Hibernate主配置文件的设置,特别是数据库信息、导入映射文件和其他配置选项。对于主键配置,文章阐述了Id元素和不同的主键生成策略,如identity、sequence、hilo、native和uuid。
摘要由CSDN通过智能技术生成

 

API简介

Configuration   配置:配置文件对象

         通过配置文件方式获取:

1)        configure()       

2)        configure(String resource):获取指定位置的配置文件(一般不用)

硬编码方式添加映射资源:(两种方式)

1)        addResource(String resource) :导入一个指定位置的映射文件

2)        addClass(Class clazz):导入与指定类同一个包中的以类名为前缀,后缀为.hbm.xml的映射文件【最为常用】

不在主文件中配置映射文件,在java文件中加载映射文件的完整代码:

SessionFactory   sessionFactory = newConfiguration().configure().addClass(“demain.Class”). buildSessionFactory()

 

SessionFactory获取Session工厂

         openSession()

         getCurrentSession()

         close()

 

Session                        很重要的一个对象

         操作对象的方法

         save(Object)

         update(Object)

         delete(Object)

         查询的方法

         createQuery(String)         --> Query

         createCriteria(Class)

         管理事务的方法

         beginTransaction()--> Transaction

         getTransaction()   --> Transaction         获取当前Session中关联的事务对象

         其他的方法

         ...

 

Transaction                事务

         commit()

         rollback()

 

Query                          查询

         list()                    查询一个结果集合。

         uniqueResult() 查询一个唯一的结果,如果没有结果,则返回null,如果结果有多个,就抛异常。

         ...

--------------------------------

Hibernate主配置文件

1,配置的key前面的hibernate.前缀 可以有,也可以没有。如hibernate.dialect或dialect都可以。

2,按作用可分为三类:

         1,数据库信息

                   <property...>

                   方言、JdbcUrl、驱动、用户名、密码

         2,导入映射文件

                   <mapping...>

         3,其他配置

                   <property...>

                   show_sql           显示生成的SQL语句

                   format_sql                 格式化生成的SQL语句

                   hbm2ddl.auto  自动生成表结构

                   hibernate.hbm2ddl.auto

生成表结构的两种方式:

这两种方式都是通过表的配置文件来完成的。在主配置文件中都需要使用mapping映射出表的配置文件。

1,  hbm2ddl.auto

1)        在hibernate.cfg.xml中配置。

2)        格式:<property name=”hbm2ddl.auto”>update</property>

3)        Name对应的参数:

a)        Create:先删除,再创建。

b)        Update:如果不存在就创建,不一样就更新,一样就什么都不做。

c)        Crate-drop:初始化时创建,SessionFactory执行close()时删除表。

d)        Validate:验证表结构是否一致,如果不一致,就抛异常。

2,  使用SchemaExport工具类

1)        创建一个SchemaExport对象:

Configuration cfg = new Configration().configure();

SchemaExport se = new SchemaExport(cfg)

2)        调用crate(true,true)方法:

a)        第一个参数:是否打印DDL语句到控制台

b)        第二个参数:数据库是否执行.sql脚本,创建数据库等操作。

注意:只能建表,不能建库

映射配置

1.        作用:说明表与对象的映射关系。

2.        普通属性:(数据库中的基本类型,如字符串、日期、数字等)

1)        name属性:对象中的属性名,必须要有。

2)        type属性:类型,如果不写,Hibernate会自动检测。

a)        可以写Java中类的全名。

b)        是写hibernate类型。

3)        column属性:对应表中的列名,如果没有,默认为属性名。

4)        length属性:长度,不是所有的类型都有长度属性,比如varchar有,但int没有,如果不写默认为255。

5)        not-null属性:非空约束,默认为false

3.        Property标签:其中只有name不可以省略。 

4.        当列表与关键字冲突时,可以通过column属性指定一个其他的列名。或是使用反引号包围起来。(不建议使用反引号)

5.        大数据时使用text:指定使用text类型时,最好再指定length,以确定生成的SQL类型是能够存放指定数量的字符的。

6.        大数据二进制文件时:使用二进制类型,同时最好指定长度

==============

主键:

         如果是数字,建议使用包装类型。

1.        指定主键:id

Id元素用于映射主键,其中子标签generator用于指定主键生成策略。

2.        主键生成策略:

1)        identity:使用数据库的自动增长策略,不是所有的数据库都支持。Oracle不支持。<generator class="identity"/>

2)        sequence:在 DB2,PostgreSQL,Oracle,SAP DB,McKoi 中使用序列(sequence)在使用Oracle数据库时可以使用这一个

<generator class="sequence"/>

3)        hilo:使用高低位算法生成主键值。添加了一张额外的表,所有数据都支持。<generator class="hilo">

<param name="table">hi_value</param>

<param name="column">next_value</param>

 <paramname="max_lo">100</param>

</generator>

a)        hi_value:添加表的名称。

b)        next_value:添加表中列的名字。

c)        max_lo:每次自动添加序号之间的间隔。

4)        native:根据底层数据库能力选择identity、sequence或者hilo中的一个。

<generatorclass="native"></generator>

【这个最为常用】

5)        uuid:由Hibernate自动生成UUID并指定为主键值。

<generator class="uuid"></generator>

【这个也最为常用】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值