`
lijingzhi
  • 浏览: 43956 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

Hibernate3.2 Annotation-HelloWorld

阅读更多

Hibernate是ORM的解決方案,其底層對資料庫的操作依賴於JDBC,所以您必須先取得JDBC驅動程式,在這邊所使用的是MySQL,所以您必須至 MySQL® Connector/J 取得MySQL的JDBC驅動程式。

 

接下來至 Hibernate 官方網站 取得Hibernate 3.2、Hibernate Annotations 3.2。

 

您必須安裝JDK 5.0才可以使用Hibernate Annotations的功能。

 

解開Hibernate 3.2的zip檔案後,當中的hibernate3.jar是必要的,而在lib目錄中還包括了許多jar檔案,您可以在 Hibernate 3.0官方的參考手冊 上找到這些jar的相關說明,其中必要的是 antlr、dom4j、CGLIB、asm、Commons Collections、Commons Logging、 EHCache,Hibernate底層還需要Java Transaction API,所以您還需要jta.jar。

 

解開Hibernate Annotations 3.2的zip檔案後,您需要hibernate-annotations.jar、ejb3-persistence.jar這兩個檔案。

 

到這邊為止,總共需要以下的jar檔案:


Hibernate可以運行於單機之上,也可以運行於Web應用程式之中,如果是運行於單機,則將所有用到的jar檔案(包括JDBC驅動程式)設定至CLASSPATH中,如果是運行於Web應用程式中,則將jar檔案置放於WEB-INF/lib中。

 

如果您還需要額外的Library,再依需求加入,例如JUnit、Proxool等等,接下來可以將etc目錄下的 log4j.properties複製至Hibernate專案的Classpath下,並修改一下當中的 log4j.logger.org.hibernate為error,也就是只在在錯誤發生時顯示必要的訊息。

 

接著設置基本的Hibernate配置文件,可以使用XML或Properties檔案,這邊先使用XML,檔名預設為hibernate.cfg.xml:

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC
  "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  
<hibernate-configuration> 
    <session-factory> 
        <!-- 顯示實際操作資料庫時的SQL --> 
        <property name="show_sql">true</property> 
        <!-- SQL方言,這邊設定的是MySQL --> 
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property> 
        <!-- JDBC驅動程式 --> 
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property> 
        <!-- JDBC URL --> 
        <property name="connection.url">jdbc:mysql://localhost/demo</property> 
        <!-- 資料庫使用者 --> 
        <property name="connection.username">root</property> 
        <!-- 資料庫密碼 --> 
        <property name="connection.password">123456</property> 
 
        <!-- 以下設置物件與資料庫表格映射類別 -->
        <mapping class="onlyfun.caterpillar.User"/> 
    </session-factory> 
</hibernate-configuration>

 

這邊以一個簡單的單機程式來示範Hibernate的配置與功能,首先作資料庫的準備工作,在MySQL中新增一個demo資料庫,並建立user表格:

 

CREATE TABLE user (
    id INT(11) NOT NULL auto_increment PRIMARY KEY,
    name VARCHAR(100) NOT NULL default '',
    age INT
);

 

 對於這個表格,您有一個User類別與之對應,表格中的每一個欄位將對應至User實例上的Field成員。

 

package onlyfun.caterpillar;
 
import javax.persistence.*;
 
@Entity
@Table(name="user") // 非必要,在表格名稱與類別名稱不同時使用
public class User {
  @Id
  @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer id;
  
  @Column(name="name") // 非必要,在欄位名稱與屬性名稱不同時使用
    private String name;
  
  @Column(name="age") 
    private Integer age; // 非必要,在欄位名稱與屬性名稱不同時使用
    
    // 必須要有一個預設的建構方法
    // 以使得Hibernate可以使用Constructor.newInstance()建立物件
    public User() {
    }
 
    public Integer getId() {
        return id;
    }
 
    public void setId(Integer id) {
        this.id = id;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
    
    public Integer getAge() {
        return age;
    }
 
    public void setAge(Integer age) {
        this.age = age;
    }
}

 

其中id是個特殊的屬性,Hibernate會使用它來作為主鍵識別,您可以定義主鍵產生的方式,這邊設定為自動產生主鍵,可以看到,實體標識,主鍵生成,以及相關映射,都可以使用Annotation來完成。

 

接下來撰寫一個測試的程式,這個程式直接以Java程式設計人員熟悉的語法方式來操作物件,而實際上也直接完成對資料庫的操作,程式將會將一筆資料存入表格之中:

 

package onlyfun.caterpillar;
 
import org.hibernate.SessionFactory;
import org.hibernate.Session;
import org.hibernate.Transaction; 
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration; 
 
public class HibernateAnnotationDemo {
 
    public static void main(String[] args) {
        // 需要AnnotationConfiguration讀取Annotation訊息
        Configuration config = new AnnotationConfiguration().configure();
        // 根據 config 建立 SessionFactory
        // SessionFactory 將用於建立 Session
        SessionFactory sessionFactory = config.buildSessionFactory(); 
 
        // 將持久化的物件
        User user = new User(); 
        user.setName("caterpillar"); 
        user.setAge(new Integer(30));     
 
        // 開啟Session,相當於開啟JDBC的Connection
        Session session = sessionFactory.openSession(); 
        // Transaction表示一組會話操作
        Transaction tx= session.beginTransaction(); 
        // 將物件映射至資料庫表格中儲存
        session.save(user); 
        tx.commit(); 
        session.close(); 
        sessionFactory.close(); 
       
        System.out.println("新增資料OK!請先用MySQL觀看結果!"); 
    }
}

 

注意,使用Annotation時,需要的是AnnotationConfiguration類別。

 

如您所看到的,程式中只需要直接操作User物件,並進行Session與Transaction的相關操作,Hibernate就會自動完成對資料庫的操作,您看不到任何一行JDBC或SQL的陳述,撰寫好以上的各個檔案之後,各檔案的放置位置如下:



 

接著可以開始運行程式,結果如下:

 

Hibernate: insert into user (name, age) values (?, ?)
新增資料OK!請先用MySQL觀看結果!

 

執行結果中顯示了Hibernate所實際使用的SQL,由於這個程式還沒有查詢功能,所以要進入MySQL中看看新增的資料,如下:

 

mysql> select * from user;
+----+-------------+------+
| id | name        | age  |
+----+-------------+------+
|  1 | caterpillar | 30   |
+----+-------------+------+
1 row in set (0.03 sec)

 

  • 大小: 38.8 KB
  • 大小: 57.1 KB
分享到:
评论

相关推荐

    hibernate-annotation-helloword

    **hibernate-annotation-helloworld** 是一个基于Hibernate框架,使用注解方式实现的Hello World示例项目。在Java世界中,Hibernate是一个流行的持久层框架,它极大地简化了数据库操作,尤其是在对象关系映射(ORM)...

    jakarta.annotation-api-1.3.5-API文档-中文版.zip

    赠送jar包:jakarta.annotation-api-1.3.5.jar; 赠送原API文档:jakarta.annotation-api-1.3.5-javadoc.jar; 赠送源代码:jakarta.annotation-api-1.3.5-sources.jar; 赠送Maven依赖信息文件:jakarta.annotation...

    javax.annotation-api-1.2-API文档-中文版.zip

    赠送jar包:javax.annotation-api-1.2.jar; 赠送原API文档:javax.annotation-api-1.2-javadoc.jar; 赠送源代码:javax.annotation-api-1.2-sources.jar; 赠送Maven依赖信息文件:javax.annotation-api-1.2.pom;...

    hibernate-validator-annotation-processor-5.1.0.CR1.zip

    【标题】"Hibernate Validator Annotation Processor 5.1.0.CR1" Hibernate Validator 是一个流行的开源验证框架,它基于JSR 303/JSR 349(Bean Validation)标准,为Java应用程序提供了强大的数据验证功能。...

    hibernate-validator-5.0.0.CR2-dist.zip

    使用hibernate-validator 进行校验的jar包,里面包括了基础hibernate-validator-5.0.0.CR2.jar hibernate-validator-annotation-processor-5.0.0.CR2.jar 之外,还包括了el-api-2.2.jar javax.el-2.2.4等项目必不可...

    jakarta.annotation-api-1.3.5-API文档-中英对照版.zip

    赠送jar包:jakarta.annotation-api-1.3.5.jar; 赠送原API文档:jakarta.annotation-api-1.3.5-javadoc.jar; 赠送源代码:jakarta.annotation-api-1.3.5-sources.jar; 赠送Maven依赖信息文件:jakarta.annotation...

    javax.annotation-api-1.3.2-API文档-中文版.zip

    赠送jar包:javax.annotation-api-1.3.2.jar; 赠送原API文档:javax.annotation-api-1.3.2-javadoc.jar; 赠送源代码:javax.annotation-api-1.3.2-sources.jar; 赠送Maven依赖信息文件:javax.annotation-api-...

    Hibernate-Annotation-3.4.0帮助文档

    《Hibernate-Annotation-3.4.0帮助文档》是一份详尽的指南,旨在帮助开发者理解和使用Hibernate ORM框架中的注解功能。Hibernate是Java领域中广泛使用的对象关系映射(ORM)工具,它极大地简化了数据库操作。在3.4.0...

    hibernate annotations3.4.0 GA.rar

    现在已经不用*.hbm.xml这种映射文件了,都是用Annotation(注解)方式来完成实体与表之间的映射关系,这样看起来比用xml文件来映射更具有可读性,自我感觉以后Hibernate Annotation的映射方式将代替hibernate 的*....

    mybatis-plus-annotation-3.5.3.2.jar

    mybatis-plus-annotation.jar MP 注解 jar 包 mybatis-plus 的注解 jar 包,包含了 mybatis-plus 注解功能 各个版本

    spring-security-helloworld-annotation

    本文将深入探讨一个名为"spring-security-helloworld-annotation"的示例,该示例展示了如何使用注解来配置Spring Security。我们将从基本概念、核心组件到实际应用,全面解析Spring Security的注解使用。 1. **注解...

    hibernate-validator-annotation-processor-4.3.1.final-sources.jar.zip

    这个压缩包“hibernate-validator-annotation-processor-4.3.1.final-sources.jar.zip”包含了Hibernate Validator注解处理器的源代码,版本号为4.3.1.Final,是理解其内部工作原理和自定义验证规则的重要资源。...

    hibernate-annotation

    《深入理解Hibernate注解》 Hibernate作为Java领域中的一款强大持久化框架,极大地简化了数据库操作。而Hibernate注解则是其在ORM(对象关系映射)领域的进一步进化,它允许开发者将元数据直接嵌入到Java类和属性的...

    javax.annotation-api-1.3.2 jar包.rar

    `javax.annotation-api-1.3.2.jar` 包是Java标准版(Java SE)中的一个关键组件,它包含了用于开发和实现注解的API。这个API主要用于提供一些预定义的注解,这些注解可以增强代码的功能性和可维护性,同时减少对传统...

    hibernate-annotation-3.4.0.GA

    《深入理解Hibernate注解3.4.0.GA》 Hibernate作为Java领域中广泛使用的对象关系映射(ORM)框架,极大地简化了数据库操作。在3.4.0.GA版本中,Hibernate引入了注解支持,使得开发人员能够更方便地在类和属性上直接...

    point-cloud-annotation-tool

    github链接链接:https://github.com/springzfx/point-cloud-annotation-tool 在windows平台编译完成后的exe和dll文件,可以直接打开使用,并对原项目进行了优化,增加了列表和标注文件的显示功能,标注起来更快,...

    javax.annotation-api-1.3.2

    JDK9及以上版本没有javax.annotation-api-***.jar包 ,无法使用注解:@Resource JDK新特性,高版本JDK没有自带的javax(java扩展包)了。或者是使用的JDK不完整。 下载javax.annotation.jar包,导入到lib文件夹下,...

    拦截器与冲突解决

    然而,在使用`&lt;mvc:annotation-driven /&gt;`元素时,有时会出现与自定义拦截器的冲突问题。这个问题通常出现在当我们试图同时配置基于注解的控制器处理和自定义拦截器时,Spring可能无法正确地处理这些组件的执行顺序...

    javax.annotation-api-1.3.2-API文档-中英对照版.zip

    赠送jar包:javax.annotation-api-1.3.2.jar; 赠送原API文档:javax.annotation-api-1.3.2-javadoc.jar; 赠送源代码:javax.annotation-api-1.3.2-sources.jar; 包含翻译后的API文档:javax.annotation-api-...

    javax.annotation-api-1.2-API文档-中英对照版.zip

    赠送jar包:javax.annotation-api-1.2.jar; 赠送原API文档:javax.annotation-api-1.2-javadoc.jar; 赠送源代码:javax.annotation-api-1.2-sources.jar; 赠送Maven依赖信息文件:javax.annotation-api-1.2.pom;...

Global site tag (gtag.js) - Google Analytics