原始森林中的一个狼窝

常用链接

统计

积分与排名

我的好友

最新评论

Hibernate Day_1

Hibernate 英文的直意是冬眠的意思。

Hibernate 是一个面向 Java 环境的对象 / 关系数据映射工具,注意,这是一种技术工具。

ORM object relational mapping 这个术语表示一种技术,用来把对象模型表示的对象映射到基于 SQL 的关系模型数据结构中去。

以上的这些概念性的东西,然我感觉和 .NET Framework 2.0 中的强类型数据集的作用差不多,但听研究过的人说,要比 Microsoft 的那个好得多, Microsoft 的强类型数据集我用过,感觉爽,既然有说 Hibernate 更好,那已经更是过瘾,我心里痒痒的呀。继续。。。

书中有这样一句“对于以数据为中心的程序来说,他们往往只在数据库中使用存储过程来实现商业逻辑, Hibernate 可能不是最好的解决方案。”这个是一定啦, Hibernate 是桥梁,又不是万金油,当然是在数据库中直接用存储过程处理商业逻辑是最好的啦。我做过,直接在存储过程中搞定一切东西,传一个参数过去,然后所有的运算都在 SQL Server 2000 的存储过程中完成,那叫一个爽,比把数据读到程序里,然后用 Java 处理,再把数据传回去要快得多,但是在 SQL Server 2000 里直接用存储过程来完成这样的工作,难度还是不小的,调试就是最大的难点,反正我是没整明白有啥办法可以调试的,我就用最原始、最保靠,据说是也是有效的调试方法 print 来完成。哈哈。够晕的吧!继续看。。。

现在看到了一个“持久化实体类”这个类是符合 JavaBean 的编写要求。并且要给它一个唯一的标识符,这是为了我们使用 Hibernate 提供的所有特性。大多数程序,特别是 web 程序,都需要通过标识符来区分对象。但,通常我们不会直接操作对象的标识符,所以他的 setter 方法的访问级别是 private

Hibernate 需要知道怎样去加载( load )和存储( store )持久化类的对象,映射文件,它就是告诉 Hibernate ,应该访问数据库里面的哪个表,已经应该使用表里面哪些字段。

Hibernate 不会从 web 加载 DTD 文件,但它会首先在应用程序的 classpath 中查找。 DTD 文件包含在 hibernate3.jar 里,同时在 Hibernate 发布包的 src/ 目录下。

映射文件的长相: Event.hbm.xml

<hibernate-mapping>

     <classname="events.Event" table="Events">

            <idname="id" column="eventID">

                   <generatorclass="native"/>

            </id>

            <propertyname="date" type="timestamp" column="eventDate"/>

            <propertyname="title" column="eventTitle"/>

     </class>

</hibernate-mapping>

 

说明:

class 表示持久化类;

id 表示唯一标识;

property 表示类的属性字段;

name 是持久化类名;

table 是数据表名;

column 是数据字段名;

generator 是唯一标识的生成方式;

type 是映射的数据类型。

 

Hibernate 配置文件的长相: hibernate.cfg.xml

<!-- by MyEclipse Hibernate tool integration. -->

<hibernate-configuration>

    <session-factory>

        <!-- properties -->

        <propertyname="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>

        <propertyname="connection.url">jdbc:oracle:thin:@localhost:1521:test</property>

        <propertyname="connection.username">system</property>

             <propertyname="connection.password">manager</property>

                                                                    

        <propertyname="dialect">net.sf.hibernate.dialect.OracleDialect</property>

                                                                      

        <!-- mapping files -->

        <mappingresource="events/Event.hbm.xml"/>

    </session-factory>

</hibernate-configuration>

 

说明:

Session-factory :特定数据库全局工厂

connection.driver_class :驱动类

connection.url :连接路径

connection.username :用户名

connection.password :用户密码

mapping resource :持久化类加入映射文件

 

ant 创建 build.xml

我理解他就是管理文件位置的,就是拷贝,为编译运行做准备。

 

SessionFactory 是一个线程安全的全局对象,只需要被实例化一次,一个 Session 代表一个单线程的单元操作。

 

这时又来了一个辅助类 HibernateUtil ,负责启动 Hibernate 和更好的操作 SessionFactory

最后配置一个日志系统, Log4j JDK 1.4 都可以选择。

 

看到了一种编程模型:线程绑定( thread-bound

Session 在第一次被使用,或第一次调用 getCurrentSession() 的时候,其生命周期就开始了,然后它被 Hibernate 绑定到当前线程。当事务运行结束的时候,不管是提交、回滚, Hibernate 都会把 Session 从当前线程剥离,并且关闭它。

posted on 2006-10-19 18:28 白洋 阅读(1670) 评论(1)  编辑  收藏 所属分类: Hibernate 知识点滴

评论

# re: Hibernate Day_1 2006-10-20 17:54 坏男孩

去我blog看看  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: