java吧 关注:1,309,260贴子:12,886,667
  • 12回复贴,共1

新人报告,附上自己的hibernate学习笔记

只看楼主收藏回复

1楼先给吧里所有的吧友问声好,其实这篇笔记是自己这几天正好有在复习hibernate,自己整理了一篇笔记。新人第一次写,不足之处还请各位吧友多多见谅(本篇初步定义是入门级笔记==)。


IP属地:广东1楼2013-05-14 20:29回复
    那么首先从安装开始,发现最近的hibernate jar包还是有点难找的= =(楼主是从sourceforge找的)。关于hibernate学习,楼主在这方面还是有几点建议的:
    推荐的书籍:精通hibernate(作者孙卫琴),hibernate实战(hibernate作者自己写的,中文的翻译还能凑合)
    推荐观看的项目:hibernate下的project\etc下面有很多hibernate的参考配置文件
    推荐的文档:hibernate官方文档(老实说觉得翻译的不怎样= =)


    IP属地:广东2楼2013-05-14 20:33
    收起回复
      2026-09-17 07:04:04
      广告
      不感兴趣
      开通SVIP免广告
      继续,那么我们先来搭建第一hello world的项目,首先我们要建立domain对象:
      package sy.domain;
      import java.util.Date;
      public class User {
      private int id;
      private String name;
      private Date birthday;
      //省略对应的getset方法
      }


      IP属地:广东3楼2013-05-14 20:41
      回复
        接上:
        关于如何写hibernate配置文件,我们可以查看hibernate的官方文档(在documentation\manual\zh-CN目录下,这是中文的文档)
        用非ie浏览器打开html_single\index.html(ie打开会有点问题,至少在楼主的机子上是这样子的= =)
        从1.1.4. Hibernate 配置这一节中拷贝hibernate.cfg.xml配置文件(hibernate核心配置文件,楼主对该文件做了一定修改)
        <?xml version='1.0' encoding='utf-8'?>
        <!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
        <hibernate-configuration>
        <session-factory>
        <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
        <property name="connection.username">scott</property>
        <property name="connection.password">tiger</property>
        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>
        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
        <!-- 是否启用currentsession <property
        name="current_session_context_class">thread</property> -->
        <!-- 禁用二级缓存 -->
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
        <!-- 是否显示sql -->
        <property name="show_sql">true</property>
        <!-- 是否自动生成表 -->
        <property name="hbm2ddl.auto">update</property>
        <!-- 引入实体配置文件(*.hbm.xml) -->
        </session-factory>
        </hibernate-configuration>
        关于数据库连接配置各位吧友可以参照project\etc\hibernate.properties里面的配置参数来写(本文使用的是oracle)
        接下来我们需要编写user实体的映射文件(相当于把user实体和数据库对应)
        在文档1.1.3. 映射文件中已经给了我们一个参考格式(建议先把最先的格式copy过来自己写,下面给一个示例)
        <?xml version="1.0"?>
        <!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
        <!-- 配置包名 -->
        <hibernate-mapping package="sy.domain">
        <!-- 配置实体对应的表 -->
        <class name="User" table="tuser">
        <!-- 配置实体主键 -->
        <id name="id">
        <generator class="sequence">
        <param name="sequence">user_id_sequence</param>
        </generator>
        </id>
        <!-- 其他属性统一用property配置 -->
        <property name="name"></property>
        <property name="birthday"></property>
        </class>
        </hibernate-mapping>


        IP属地:广东4楼2013-05-14 20:43
        回复
          Hibernate对Domain Object的限制(参考传智播客ppt)
          1.默认的构造方法(必须的)。
          2有无意义的标示符id(主键)(可选)
          3非final的,对懒加载有影响(可选)
          补充:关于oracle的主键自增,oracle是没有increment这种概念的,要实现类似自增的功能需要使用数据库sequence(序列)功能
          关于id配置的细节,可以有以下的简写方法
          <id name="id">
          <generator class="native">
          </generator>
          </id>
          这种写法会在建表的时候自动加上hibernate_sequence这个序列(自动生成的)
          如果按照楼主的写法,会生成user_id_sequence这种序列
          关于oracle sequence的操作
          查看sequence:SELECT * FROM user_sequences ;
          删除已有的sequence:drop SEQUENCE user_id_sequence;
          (关于oracle方面的知识,吧友们可以看一下楼主上传的mldn oracle笔记)


          IP属地:广东5楼2013-05-14 20:45
          回复
            想了一下还是借这篇帖子做一下自我介绍好了:楼主来自广州,最近在复习hibernate,在学习extjs这门技术


            IP属地:广东7楼2013-05-14 21:41
            回复
              既然学了hibernate,那一定要学ibatis,至少你要知道两者的区别。加油继续努力,ssh2都普及了,必须得会。还有会jQuery就不用学ext了,因为jQuery每个项目几乎都用到,ext很好但是不强大,相对而言


              IP属地:北京8楼2013-05-14 22:18
              回复
                顶一下啊


                IP属地:山东9楼2013-05-14 22:47
                回复