Hibernate入门详述介绍(精)

一、叙述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图如下



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值