day2
hibernate的配置文件hibernate.cfg.xml用于配置数据库的连接的信息,以及需要持久化的对象的xml映射文件的位置
在hibernate.cfg.xml中使用<mapping resource="xml/Student.hbm.xml">这种方式来指名要持久化对象的映射文件。
Configuration是用于解析hibernate.cfg.xml文件和XXXXX.hbm.xml文件,并产生SessionFactory对象。
SessionFactory是和一个数据库一一对应的,他只能对应一个hibernate.cfg.xml文件,一个hibernate.cfg.xml中只能配置一个数据库的连接信息。
POJO(普通的java类)
持久化对象和临时对象,持久化对象,即对象的信息在数据库中存在,在内存中也有。临时对象也就是新对象,没有同步到数据库。
Session,持久化管理器。
Hibernate的核心接口
Configuration,用于解析hibernate.cfg.xml文件和XXXXX.hbm.xml文件,并创建SessionFactory对象。
SessionFactory,用于创建Session对象。
Session,持久化管理器,对象级数据库操作
Query,对对象作持久化操作或查询操作
Transaction ,用于管理操作事务。
hibernate.cfg.xml中的标签
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="show_sql">true</property><!--显示sql语句-->
<property name="format_sql">true</property><!--使显示的sql语句格式化-->
<property name="dialect">....</property><!--使用的数据库方言信息-->
<property name="connection.driver_class">....</property>
<!--使用的数据库的驱动-->
<property name="connection.url">....</property><!--连接数据库使用的url-->
<property name="connection.username">...</property>
<!--连接数据库的用户名-->
<property name="connection.password">...</property>
<!--连接数据库的密码-->
<mapping resource="xxx/xxxx/Xxxxxx.hbm.xml"/>
<!--引入的映射对象的xml文件的全路径及文件名-->
</session-factory>
</hibernate-configuration>
对象映射文件
<hibernate-mapping package="XXX.XXX.XXX" auto-import="false"><!--映射类所在的包-->
<class name="Xxxxxx" table="Xxxxx"><!--将类和数据库的表联系起来-->
<id name="studentId" column="studentId"><!--主键生成策略-->
<generator class="assigned"/>
<!--指定主键生成策略为用户指定-->
</id>
<property name="XXX" column="XXXX" type="string"/>
<!--类中的书性和字段之间建立联系-->
<property name="homeAddress" column="homeAddress"/>
<property name="schoolAddress" column="schoolAddress"/>
<property name="brithday" column="brithday" type="data"/>
<!--在hibernate中其他类型可以自动识别只有Data类型必须指名-->
</class>
</hibernate-mapping>
id生成方式
1,序列sequence 只适用于Oracle
<id name="id" column="id">
<generator class="sequence">
<param name="sequence">person_seq</param><!--指定sequence名-->
</generator>
</id>
2,自增列,适用于SQLServer,MySql
<id name="id" column="id">
<generator class="identity"/>
</id>
3,取最大值加一
<id name="id" column="id" type="integer">
<generator class="increment"/>
</id>
4,根据底层数据库指定生成方法
<id name="id" column="id">
<generator class="native"/>
</id>
针对Oracle数据库的生成方式还是sequence,只不过需要一个特定名字的sequence,"hibernate_sequence"。
5,高低位算法
<id name="id" column="id">
<generator class="hilo">
<param name="table">high_value</param>
<!--设置高位值取值的表-->
<param name="column">next_value</param>
<!--设置高位值取值的字段-->
<param name="max_lo">50</param>
<!--指定低位最大值,当取道最大值是会再取一个高位值再运算-->
</generator>
</id>
类关联关系映射
一对一关系实现
建表策略
1,共享主键,也就是一方引用另一方的主键,作为自身的主键,也是外键。
2,外键引用,也就是一方引用另一方的主键,作为外键,并且对引用的外键加唯一约束。
一对多
建表策略,多方引用一方的主键当作外键