一、叙述Hibernate应用的主要接口和类
a) Configuration类,配置对象,主要用于初始化配置的文件 调用其configure()方法,初始化参数,读取配置文件,调用其方法buildSessionFactory()并构造出SessionFactory对象
b) SessionFactory类 工厂对象,主要调用openSession()方法打开session接口
c) Session接口:主要用于对实体的增删改查等操作。也可以创建查询的对象如Query和Criteria对象
d) Query对象 面向对象的查询语言,与SQL不同,HQL中的对象名是区分大小写的(除了JAVA类和属性其他部分不区分大小写);HQL中查的是对象而不是和表,并且支持多态;
e) Criteria对象Criteria是一种比HQL更面向对象的查询方式
f) Restrictions可以调用本身的静态方法 主要作为Criteria的参数来作为查询条件并执行
二、叙述Hibernate应用的工作过程
使用hibernate完成将对象存入表中,配置对象,
Configuration cfg=new Configuration();
cfg.configure();//完成hibernate的初始化,--读取配置文件
//SessionFactory对象-----相当于JDBC的DriverManageer
SessionFactory sf=cfg.buildSessionFactory();
Session session=HibernateUtil.getSession();
//得到Session对象
//Session s=sf.openSession();
Transaction tx=session.beginTransaction();
//实例化一个实体
User user=new User();
user.setName("marico");
user.setBirthday(new Date());
//保存到数据库中
session.save(user);
tx.commit();
//关闭资源
session.close();
System.out.println(user.getId());
三、解释Hibernate全局配置文件中常用标记的使用
<!-数据库的驱动-à
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!—数据库的url地址à
<property name="hibernate.connection.url">jdbc:mysql:///demo</property>
<!—数据库连接的帐号密码-->
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<!--方言,告诉hibernate是哪一种数据库 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 根据映射文件去生成ddl语言。自动创建表格等 create 新建表格,第二次运行,删除旧表格并删除 -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!--能将hibernate生成的语句显示出来 -->
<property name="hibernate.show_sql">true</property>
<!--告诉hibernate的映射文件在那里-->
<mapping resource="com/hbsi/domain/User.hbm.xml"/>
四、解释对象关系映射文件中常用标记的使用
<!-- package表示所映射的类所在包 -->
<hibernate-mapping
package="com.hbsi.domain">
<class name="User" table="user">
<!-- unsaved-value的值来代表后面saveOrupdate方法的判断依据,如果为-1,是-1为脱管态,不是-1是瞬时态 -->
<id name="id"unsaved-value="-1">
<generator class="native"/>
</id>
<!-- 表示name 的属性 -->
<property name="name"/>
<property name="birthday"/>
</class>
</hibernate-mapping>
五、叙述Hibernate持久化生命周期及状态转换
1、 瞬时状态:数据库中没有数据与之对应,超过作用域会被JVM垃圾回收器回收,一般是new出来且与session没有关联的对象。
2、 持久状态:数据库中有数据与之对应,当前与session有关联,并且相关联的session没有关闭,事务没有提交;持久对象状态发生改变,在事务提交时会影响到数据库(hibernate能检测到)。
3、 脱管状态:数据库中有数据与之对应,但当前没有session与之关联;托管对象状态发生改变,hibernate不能检测到。
4、 UML图如下