持久化类映射文件在hibernate.cfg.xml中的配置
hibernate的配置文件hibernate.cfg.xml用于配置数据库的连接的信息,以及需要持久化的对象的xml映射文件的位置
在hibernate.cfg.xml中使用<mapping resource="xml/Student.hbm.xml">这种方式来指名要持久化对象的映射文件。
SessionFactory是和一个数据库一一对应的,他只能对应一个hibernate.cfg.xml文件,一个hibernate.cfg.xml中只能配置一个数据库的连接信息。
POJO(普通的java类)
持久化对象和临时对象,持久化对象,即对象的信息在数据库中存在,在内存中也有。临时对象也就是新对象,没有同步到数据库。
Session,持久化管理器。
Hibernate的核心接口
Configuration,用于解析hibernate.cfg.xml文件和XXXXX.hbm.xml文件,并创建SessionFactory对象。
SessionFactory,用于创建Session对象。SessionFactory类的对象是线程安全。
Session,持久化管理器,对象级数据库操作,Session实现类的对象是线程步安全的。
Session的常用方法
save(Object o),将参数表中对象的信息保存到数据库中相应的表中。
update(Object o),将修改了的参数表中对象的数据库中保存的对应信息。
createOuery(String hql),用于查询的方法并返回一个Query对象。可以通过该对象获得查询的结果。这个方法的参数,是种特定的语句,也就是Hibernate的查询语言,它是基于了和对象的,在以后的课程中会讲到。
delete(Object o),删除参数表中对象的数据库中保存的对应信息。
Query,对对象作持久化操作或查询操作。
Query的常用方法
List list(),将所查询出的结果封装成结合返回。
setXxxx(Xxxx x),用于设置在Hql语句中设置的参数。
Object uniqueResult(),当确保查询的结果只有一格的时候用这方法获得查询的结果
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中其他类型可以自动识别只有java.sql.Data类型必须指名-->
</class>
</hibernate-mapping>
id生成方式(主键生成策略)
1, 序列sequence 只适用于Oracle
<id name="id" column="id">
<generator class="sequence">
<!--通过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>