1.hibernate入门

来源:互联网 发布:少女前线数据配置错误 编辑:程序博客网 时间:2024/05/11 12:59

*   hibernate冬眠的意思,持久化技术  持久化到硬盘中  内存持久化到硬盘

*   mysql数据库 主键自增长  主键不用管  也可以手动插入 null 或者赋予其他值 只要数据库不存在这个值

*   传统jdbc 改动太大 代码繁琐  javabean属性发生变化 sql语句都要改

*   Sql语句动态生成  保存时生成sql语句

*   中间文件关联javabean 和 表

*    Hibernate 这条记录的唯一标识 javabean 表 唯一标识

*    Jdbc 根据配置文件获取dbpc或者c3p0连接池

*    jpa  java持久化规范

*    Sql 结构化查询语言  hql hibernate的查询语言

*    Jta jdbc的事务处理局限性 只对一个数据库有效 工商银行 建设银行跨数据库事务处理 jta

*    规范 dtd文件在hibernate的核心架包下

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

*    hibernate 解析xml文件 用 dom4j 解析

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

 <property name="name" type="string">          <!--column定义表中的列 sql-type表示表中列的类型  -->          <column name="name" sql-type="varchar(255)"/> </property>
*    type="string":string表示的是hibernate的类型,该类型是java类型和sql类型之间的桥梁

     java中的类型:String name;  sql中的类型:varchar(255):

     type="string":  string(唯一)对应的是hibernate中的一个类org.hibernate.type.StringType
                                映射一个sql的varchar类型到java的String类型

*   myelipse 关联源码 External File  文件  External Folder 文件夹

*   sql-type  列中的类型  没写默认 varchar(255)

 <!-- 用id来映射表中的主键 -->      <id name="id" type="integer">        <column name="id"/>        <!-- 配置主键的生成策略-->        <generator class="increment"/>      </id>
*   必须要卸载property上面

*   <generator class="increment"/>  主键生成策略   主键自增

*   id  该对象的唯一标识

 <!-- 配置数据库的方言,让hibernate知道连接的是哪个数据库-->      <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
*  hibernate配置方言  hibernate自动生成sql语句  type为string mysql就是varchar  oracle就是varchar2
<pre name="code" class="java"> //默认加载类路径下的/hibernate.cfg.xml文件       config.configure();

public Configuration configure() throws HibernateException {configure( "/hibernate.cfg.xml" );return this;}
*   默认加载类路径下的hibernate.cfg.xml文件
        //加载映射文件//方法一//config.addResource("cn/itcast/primer/Customer.hbm.xml");          //方法二(使用该方法加载映射文件,要求1:映射文件和Customer.java文件必须在同一个目录下                                     //2  映射文件和Customer.java文件文件的名称相同)config.addClass(Customer.class);
*   hibernate配置了主键自增长  数据库可以不用配自增长

*   insert into customer (name, age, des, id) values (?, ?, ?, ?)   id放后面  修改的时候好修改  养成习惯

private static  SessionFactory sf=null;static{       Configuration config=new Configuration();       config.configure();       config.addClass(Customer.class);       sf=config.buildSessionFactory();}
*   Configuration 类负责管理 Hibernate 的配置信息

*   Hibernate运行的底层信息    持久化类与数据表的映射关系

*   SessionFactory 对象中保存了当前的数据库配置信息和所有映射关系以及预定义的SQL语句。同时,SessionFactory还负责维护Hibernate的二级缓存

*   是线程安全的

*   构造 SessionFactory 很消耗资源,一般情况下一个应用中只初始化一个 SessionFactory 对象    用静态代码块构造

*   Session 是应用程序与数据库之间交互操作的一个单线程对象,是 Hibernate 运作的中心,所有持久化对象必须在 session 的管理下才可以进行持久化操作

*   此对象的生命周期很短。Session 对象有一个一级缓存,显式执行 flush 之前,所有的持久层操作的数据都缓存在 session 对象处。相当于 JDBC 中的 Connection

*    Session是线程不安全的
*    Transaction代表一次原子操作,它具有数据库事务的概念。所有持久层都应该在事务管理下进行,即使是只读操作。   涉及到持久化对象状态的改变

 <mapping resource="cn/itcast/primer/Customer.hbm.xml"/>
*   指定程序需要关联的映射文件




0 0
原创粉丝点击