Hibernate(一)

1.       hibernate简介

Hibernate是一种功能强大,执行性高的面向对象的持久化技术。Hibernate可以使你很容易的以面向对象的方式来开发持久化类,包括联合,继承,多态,组合和集合。Hibernate允许你像使用本地SQL语句或面向对象的标准和示例API一样轻松的使用其自带的SQL表达式(HSQL.

并不像许多其他持久化解决方案一样,Hibernate 并不屏弃你已拥有的SQL的威力,并保证你投入的关系型技术和知识依然可用。

2.Hibernatehello world

首先,我们来创建一个简单基于控制台的Hibernate 应用程序。我们将使用一个java databaseHSQL DB),因此不需要安装任何数据库服务器。

    假设我们需要一个小型的数据库来存储我们将要参加的活动,和这些活动的举办者的 一些信息。

首先,建立一个工作目录,并将需要用到的java类库放进工作目录中。下载Hibernate,并从其lib目录中将需要的jar文件解压到我们刚建的工作目录中的lib文件夹下。应该包含下面的一些jar文件:

.
+lib
  antlr.jar
  cglib.jar
  asm.jar
  asm-attrs.jars
  commons-collections.jar
  commons-logging.jar
  hibernate3.jar
  jta.jar
  dom4j.jar
  log4j.jar 

    这是当前的hibernate需要的最小的类库集合。在hibernatelib文件夹中的readme.txt文件中有对各个jar文件的说明,下面将该文件列出,以方便查看:

ehcache-1.1.jar (1.1)

- EHCache cache

- runtime, optional (required if no other cache provider is set)

versioncheck.jar (1.0)

- version checker

- buildtime

 

swarmcache-1.0rc2.jar (1.0rc2)

- runtime, optional

- runtime, optional

jboss-cache.jar ( 1.2.2 a lpha)

- TreeCache clustered cache

- runtime, optional

jgroups- 2.2.8 .jar (2.2.8)

- JGroups multicast library

- runtime, optional (required by replicated caches)

jta.jar (unknown)

- Standard JTA API

- runtime, required for standalone operation (outside application server)

xml-apis.jar (unknown)

- Standard JAXP API

- runtime, some SAX parser is required

commons-logging- 1.0.4 .jar (1.0.4)

- Commons Logging

- runtime, required

c3p0- 0.9.0 .jar (0.9.0)

- C3P0 JDBC connection pool

- runtime, optional

connector.jar (unknown)

- Standard JCA API

- runtime, optional

jboss-system.jar (unknown)

- unknown name

- runtime, optional (required by TreeCache)

asm-attrs.jar (unknown)

- ASM bytecode library

- runtime, required

jacc-1_0-fr.jar (1.0-fr)

- JACC Library

- runtime, optional

checkstyle-all.jar (unknown)

- Checkstyle

- buildtime

log4j- 1.2.11 .jar (1.2.11)

- Log4j Library

- runtime, optional

junit- 3.8.1 .jar (3.8.1)

- JUnit test framework

- buildtime

dom4j- 1.6.1 .jar (1.6.1)

- XML configuration & mapping parser

- runtime, required

antlr- 2.7.6 rc1.jar (2.7.6rc1)

- ANother Tool for Language Recognition

- runtime, required

cglib- 2.1.3 .jar (2.1.3)

- CGLIB bytecode generator

- runtime, required

jboss-common.jar (unknown)

- unknown name

- runtime, optional (required by TreeCache)

oscache-2.1.jar (2.1)

- OpenSymphony OSCache

- runtime, optional

asm.jar (unknown)

- ASM bytecode library

- runtime, required

ant-launcher- 1.6.5 .jar (1.6.5)

- Ant launcher

- buildtime

jaas.jar (unknown)

- Standard JAAS API

- runtime, optional (required by JCA)

jdbc2_0-stdext.jar (2.0)

- Standard Extension JDBC APIs

- runtime, required for standalone operation (outside application server)

ant-antlr- 1.6.5 .jar (1.6.5)

- Ant antlr support

- buildtime

jboss-jmx.jar (unknown)

- unknown name

- runtime, optional (required by TreeCache)

cleanimports.jar (unknown)

- cleanimports

- buildtim

xerces- 2.6.2 .jar (2.6.2)

- SAX parser

- runtime, required for JDK < 1.4

jaxen-1.1-beta-7.jar (1.1-beta-7)

- Jaxen - universal java xpath engine

- runtime, required if you want to deserialize a Configuration to improve startup performance

ant-junit- 1.6.5 .jar (1.6.5)

- Ant junit support

- buildtime

 

ant-swing- 1.6.5 .jar (1.6.5)

- Ant swing support

- buildtime

commons-collections- 2.1.1 .jar (2.1.1)

- Commons Collections

- runtime, required

ant- 1.6.5 .jar (1.6.5)

- Ant core

- buildtime

proxool- 0.8.3 .jar (0.8.3)

- Proxool JDBC connection pool

- runtime, optional

concurrent- 1.3.2 .jar (1.3.2)

- unknown name

- runtime, optional (required by TreeCache)

syndiag2.jar (2.0)

- antlr to bnf image generator

- buildtime

Next we create a class that represents the event we want to store in database.

    接下来,我们创建一个类来表示我们将要存储在数据库中的活动。

1.2.1 . The first class

一个简单的javabean

package events;
  
  
import java.util.Date;
  
  
public class Event 
  
  
{
  
  
    private Long id;
  
  
    private String title;
  
  
    private Date date;
  
  
    public Event() {}
  
  
public Long getId() 
  
  
{
  
  
        return id;
  
  
    }
  
  
private void setId(Long id) 
  
  
{
  
  
        this.id = id;
  
  
    }
  
  
public Date getDate() 
  
  
{
  
  
        return date;
  
  
    }
  
  
public void setDate(Date date) 
  
  
{
  
  
        this.date = date;
  
  
    }
  
  
public String getTitle() 
  
  
{
  
  
        return title;
  
  
    }
  
  
   
    
  
  
public void setTitle(String title)
  
  
{
  
  
        this.title = title;
  
  
    }
  
  
}
  
  

    这是一个标准的javabean的命名方式,属性都带有gettersetter方法,以及对属性字段的private的访问修饰。这是一种值得推荐的方式。Hibernate可以直接访问属性,访问函数的好处是在重构时能够使程序很健壮。

Id是一项活动的唯一的标识符。如果想要完全发挥Hibernate的作用,则需要使每一个持久性实体类都具备一个唯一的标识字段。当我们不应该设置一个属性的值时,应该将其setter方法设为private。此时,Hibernate在一个对象存储时才会为该字段设值。Hibernate不仅可以访问privatepublicprotenct的方法,同样也可以直接访问(publicprivateprotenct)变量。

    每个持久化类必须提供一个无参的构造函数。此构造函数可以声明为private,但是当运行代理产生器和有效的数据恢复时必须提供包可见性的构造函数。

    将此文件放置在工作目录的src目录下:

.
  
  
+lib
  
  
  <Hibernate and third-party libraries>
  
  
+src
  
  
  +events
  
  
    Event.java
  
  
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值