hibernate开发步骤

*2 hibernate快速入门

  1)开发步骤:

>>导入hibernate相关的10jar包,如果后面,要用到其它功能,可以添加新jar (包括了MySQL的驱动包)

>>创建表:customers.sql

    >>创建实体:Customer.java

>>创建Customer.hbm.xml映射文件,目的是通知hibernate框架,如何将实体和表关联起来

    >>创建hibernate.cfg.xml配置文件,目的是通知hibernate框架,如何连接不同的数据库和产生不同数据库的SQL命令

    >>测试类:CURD操作(CustomerService 

 

   2具体步骤详解

         >>jar :

antlr-2.7.6.jar  一个语言转换工具,Hibernate利用它实现 HQL SQL 的转换

commons-collections-3.1.jar  collections Apache 的工具集,用来增强Java对集合的处理能力

dom4j-1.6.1.jar  dom4j XML 解析器

hibernate3.jar    核心包

javassist-3.9.0.GA.jar  代码生成工具, Hibernate用它在运行时扩展 Java

jta-1.1.jar  标准的 JAVA 事务处理接口

log4j.jar  日志包

mysql-connector-java-5.1.7-bin.jar  mysql驱动包

slf4j-api-1.5.8.jar  slf4j-log4j12.jar  hibernate使用的一个日志系统

>>创建sql

: dropdatabaseifexists hibernate;

createdatabaseifnotexists hibernate;

use hibernate;

droptableifexists customer;

createtableifnotexists customer(

    id intprimarykey auto_increment,

    namevarchar(20) default "小小",

    ageintdefault 21,

    des varchar(100) default "文雅"

);

select * from customer;

 

 

     >>Customer.hbm.xml文件

         1.Hibernate 采用 XML 格式的文件来指定对象和关系数据之间的映射. 在运行时 Hibernate 将根据这个映射文件来生成各种 SQL 语句, 映射文件的扩展名为 .hbm.xml ;Customer.hbm.xml文件. : 以上Customer.hbm.xml文件是Customer类和customers表的对应关系。该文件前缀必须和类名一致,后缀必须是.hbm.xml。文件位置任意

         2.  property元素:设定持久化类的属性和表字段映射       

name属性:指定持久化类的属性的名字

column属性:指定表中字段的名称    

type属性指定Hibernate映射类型 Hibernate映射类型是java类型与SQL类型的桥梁

.hbm.xml文件的来源:

hibernate-distribution-3.5.6-Final-dist.zip\hibernate-distribution-3.5.6-Final\project\tutorials\web\src\main\resources\org\hibernate\tutorial\domain......

:该映射文件的规范在org.hibernate. hibernate-mapping-3.0.dtd文件中

:

Customer.hbm.xml文件的属性含义:

<hibernate-mapping package="cn.itcast.web.hibernate.character0(实体对象的包名)">

    <class name="Customer(类名)" table="CUSTOMERS(表名)">

        <id name="id" column="ID" type="integer">

            <generator class="increment"/>

        </id>

        <property name="name(属性名)" column="NAME(列名)" type="string(hibernate类型)"/>

        <property name="age(属性名)" column="AGE(列名)" type="integer(hibernate类型)"/>

        <property name="des(属性名)" column="DES(列名)" type="string(hibernate类型)"/>

    </class>

</hibernate-mapping>

 

     >>hibernate.cfg.xml文件

创建 Hibernate 配置文件, Hibernate 从其配置文件中读取和数据库连接的有关信息, 这个文件应该位于应用的 classpath .

文件名必须是hibernate.cfg.xml,文件位置任意,   除了使用xml作为配置文件之除,还可以使用hibernate.properties文件(项目中不提倡)。

:该映射文件的规范在org.hibernate.hibernate-configuration-3.0.dtd文件中

文件的来源:   hibernate-distribution-3.5.6-Final-dist.zip\hibernate-distribution-3.5.6-Final\project\tutorials\web\src\main\resources

:

hibernate.cfg.xml文件的属性含义:

<hibernate-configuration>

    <session-factory>

    <!-- 配置连接数据库的相关属性 -->

        <property name="connection.driver_class">com.mysql.jdbc.Driver(驱动类名)</property>

        <property name="connection.url">jdbc:mysql://127.0.0.1:3306/hibernate(URL)</property>

        <property name="connection.username">root(访问数据库的用户名)</property>

        <property name="connection.password">root(访问数据库的密码)</property>

        <!-- 通知hibernate动态生成哪个数据库的SQL命令 -->

        <property name="dialect">org.hibernate.dialect.MySQL5Dialect(数据库的方言)</property>

        <!-- 显示hibernate动态生成的SQL命令,true表示显示 -->

        <property name="show_sql">true(需要显示sq命令)</property>

        <!-- 加载对象和关系的映射文件 -->

        <mapping resource="cn/itcast/web/hibernate/character0/Customer.hbm.xml(映射文件的类路径)"/>

    </session-factory>

</hibernate-configuration>

 

>>Configuration:

hibernate中一个用于加载hibernate.cfg.xml文件的类,config .config(xml文件的类路径”)方法能够加载指定目录下的hibernate.cfg.xml文件,config.buildSessionFactory()创建一个SessionFactory工厂。该工厂有大量空闲的session.

Configuration 类负责管理 Hibernate 的配置信息。包括如下内容:

Hibernate运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect,数据库连接池等(对应 hibernate.cfg.xml 文件)。持久化类与数据表的映射关系(*.hbm.xml 文件).

创建 Configuration 的两种方式

•      属性文件(src/hibernate.properties:

    Configuration cfg = new Configuration();

 

•      Xml文件(src/hibernate.cfg.xml)推荐

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

    Configuration cfg = new Configuration().configure(“目录”);

 

     >>SessionFactory接口

       保存了当前的数据库配置信息和所有映射关系以及预定义的SQL语句。同时,SessionFactory还负责维护Hibernate的二级缓存,有且只放置一种类型数据库的相关信息 , 重量级,即创建需要大量时间和资源,因此将创建SessionFactory的工作,放在static块中,只创建一个,便于重用 , SessionFactory是一个线程安全的,所以可以定义成实例变量,无需加synchronized    

创建方式:

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

   SessionFactory sf = cfg.buildSessionFactory();

 

    >>Session

       SessionFactory.openSession()     

       Session是由SessionFactory获取而来,它是轻量级,即创建需要少量时间和资源,每次数据库的操作(CURD)都需要一个Session的绑助,没有Session就无法与数据库表操作。

Session 是应用程序与数据库之间交互操作的一个单线程对象,是 Hibernate 运作的中心,所有持久化对象必须在 session 的管理下才可以进行持久化操作。此对象的生命周期很短。Session 对象有一个一级缓存,显式执行 flush 之前,所有的持久层操作的数据都缓存在 session 对象处。相当于 JDBC 中的 Connection

            

       Session常用的API

              session.save(对象)     //向数据库插入数据

              session.update(对象)   //更新数据

              session.delete(对象)    //删除数据

              session.get(对象的字节码class文件,序号)   //查询数据

             //查询所有数据信息

            String hibernateSQL = " from 需要查询的类的类名";   例如: 查询User类   String hibernateSQL = " from  User"; 此处的类名一个要和创建的类名保持一致.

              Query query = session.createQuery("hibenate query language语句,不是sql语句")    

          例: Query query = session.createQuery(hibernateSQL)  ;  

              List<> list = query.list()

       Session是不安全的,不要定义成实例变量,除非加synchronized

       Session定义成局部变量,即在某个方法内部,就无需加synchronized

    >>Transaction接口(事物)

       通过session.getTransaction()取得事务对象,在应用时,除查询外,其它都需要事务的支持,查询对事务的要求不限(可选),

       开始事务:t.begin()

       提交事务:t.commit()

       回滚事务:t.rollback()

       显示try..catch...finally...

:

         publicvoid saveCustomer(){

       //创建customer对象,并设置属性值

       Customer cus = new Customer();

       cus.setName("思思");

       cus.setAge(21);

       cus.setDes("文静");

       //创建confingration对象

       Configuration config = new Configuration();

       //加载配置文件,连接驱动

       config.configure("cn/web/hibernate/hibernate.cfg.xml");

       //创建sessionfactory

       SessionFactory sessionfactory = config.buildSessionFactory();

       //创建session

       Session  session = sessionfactory.openSession();

       //创建事物

       Transaction transaction= session.getTransaction();

       try {

           //事物开始

           transaction.begin();

           //保存实体域对象到表中

           session.save(cus);

       } catch (HibernateException e) {

           //错误的情况下事物恢复到原有的状态

           transaction.rollback();

       }finally{

           //事务结束

           transaction.commit();

       }

session.close();

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

starsky20

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值