`
collegeyuan
  • 浏览: 31601 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Hibernate注解开发步骤

 
阅读更多

在编写Hibernate的时候,需要将实体类映射到数据库中的表。通常需要一个配置文件(hibernate.cfg.xml),一个实体类(XX.java),还有一个映射文件(XX.hbm.xml)。从JAVA5.0之后,可以利用注解来简化配置。简单来说就是不再需要映射文件了,hibernate需要的元数据(metadata)通过注解实体类就行了。

 

下面是一个简单的基于注解映射的Hibernate Hello World项目:

 

用到的工具和技术:1.Eclipse4.2.2

     hibernate-annotations.jar 

           hibernate-commons-annotations.jar (Hibernate中支持注解开发的jar包) 

            ejb3-persistence.jar(API规范的jar包) 

             slf4j/slf4j-api-1.5.0.jar 
             slf4j-log4j12-1.5.0.jar 
             log4j-1.2.15.jar  (支持日志输出的jar包,注意版本的匹配) 

 

首先是项目的整体架构:

 

项目的依赖(pom.xml):

 

[html] view plaincopy
 
  1. <dependencies>  
  2.   <dependency>  
  3.     <groupId>junit</groupId>  
  4.     <artifactId>junit</artifactId>  
  5.     <version>3.8.1</version>  
  6.     <scope>test</scope>  
  7.   </dependency>  
  8.   <dependency>  
  9.     <groupId>org.hibernate</groupId>  
  10.     <artifactId>hibernate-core</artifactId>  
  11.     <version>4.2.2.Final</version>  
  12.   </dependency>  
  13. </dependencies>  


JPA jar包在hibernate3.6之后被放入hibernate-core包中。

 

 

Hibernate的配置文件(hibernate.cfg.xml):

 

[html] view plaincopy
 
  1. <?xml version='1.0' encoding='utf-8'?>  
  2. <!DOCTYPE hibernate-configuration PUBLIC  
  3.         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
  4.         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">  
  5.   
  6. <hibernate-configuration>  
  7.   
  8.     <session-factory>  
  9.   
  10.         <!-- Database connection settings -->  
  11.         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>  
  12.         <property name="connection.url">jdbc:mysql://localhost:3306/test</property>  
  13.         <property name="connection.username">username</property>  
  14.         <property name="connection.password">password</property>  
  15.   
  16.   
  17.         <!-- SQL dialect -->  
  18.         <property name="dialect">org.hibernate.dialect.MySQLDialect</property>  
  19.   
  20.   
  21.         <!-- Echo all executed SQL to stdout -->  
  22.         <property name="show_sql">true</property>  
  23.         <property name="format_sql">true</property>  
  24.         <!-- Drop and re-create the database schema on startup -->  
  25.         <property name="hbm2ddl.auto">update</property>  
  26.   
  27.         <mapping class="org.hibernate.test.tutorial.Person" />  
  28.     </session-factory>  
  29.   
  30. </hibernate-configuration>  


注意:需要在Mysql数据库中创建一个test数据库 CREATE DATABASE test

 

 

一个简单的实体类:

 

[java] view plaincopy
 
  1. package org.hibernate.test.tutorial;  
  2.   
  3. import java.io.Serializable;  
  4. import java.util.Date;  
  5.   
  6. import javax.persistence.Column;  
  7. import javax.persistence.Entity;  
  8. import javax.persistence.GeneratedValue;  
  9. import javax.persistence.GenerationType;  
  10. import javax.persistence.Id;  
  11. import javax.persistence.Table;  
  12. import javax.persistence.Temporal;  
  13. import javax.persistence.TemporalType;  
  14.   
  15. @Entity  
  16. @Table(name="T_PERSONS")  
  17. public class Person implements Serializable {  
  18.   
  19.     private static final long serialVersionUID = 1L;  
  20.       
  21.     private Long id;  
  22.     private String name;  
  23.     private double age;  
  24.     private Date birth;  
  25.       
  26.     @Id  
  27.     @GeneratedValue(strategy=GenerationType.AUTO)  
  28.     @Column(name="ID",unique=true)  
  29.     public Long getId() {  
  30.         return id;  
  31.     }  
  32.       
  33.     @SuppressWarnings("unused")  
  34.     private void setId(Long id) {  
  35.         this.id = id;  
  36.     }  
  37.       
  38.     @Column(name="NAME",length=20)  
  39.     public String getName() {  
  40.         return name;  
  41.     }  
  42.       
  43.     public void setName(String name) {  
  44.         this.name = name;  
  45.     }  
  46.       
  47.     @Column(name="AGE")  
  48.     public double getAge() {  
  49.         return age;  
  50.     }  
  51.       
  52.     public void setAge(double age) {  
  53.         this.age = age;  
  54.     }  
  55.       
  56.     @Temporal(TemporalType.DATE)  
  57.     @Column(name="BIRTH_DATE")  
  58.     public Date getBirth() {  
  59.         return birth;  
  60.     }  
  61.     public void setBirth(Date birth) {  
  62.         this.birth = birth;  
  63.     }  
  64.   
  65. }  


注意需要在Hibernate配置文件中注册该实体类: <mapping class="org.hibernate.test.tutorial.Person" />

 

 

最后编写一个运行程序:

 

[java] view plaincopy
 
  1. public static void main( String[] args )  
  2. {  
  3.     SessionFactory factory = new AnnotationConfiguration().configure().buildSessionFactory();  
  4.     Session session = factory.openSession();  
  5.       
  6.     session.beginTransaction(); // 开启事务  
  7.       
  8.     try{  
  9.     Person p = new Person();  
  10.     p.setName("Benson");  
  11.     p.setAge(22);  
  12.     p.setBirth(new Date());  
  13.       
  14.     session.save(p);  
  15.     } catch(Exception e) {  
  16.         e.printStackTrace();  
  17.         session.getTransaction().rollback();    // 回滚事务  
  18.     }  
  19.       
  20.     session.getTransaction().commit();  // 提交事务  
  21. }  


运行之后,可以在Ecilpse控制台观察到Hibernate为我们自动生成的格式化后的SQL:

 

 

[plain] view plaincopy
 
  1. Hibernate:   
  2.     insert   
  3.     into  
  4.         T_PERSONS  
  5.         (AGE, BIRTH_DATE, NAME)   
  6.     values  
  7.         (?, ?, ?)  


进入Mysql控制台,可以查看到自动生成(hibernate.hbm2dll.auto)的表和插入的记录。

分享到:
评论

相关推荐

    springmvc+hibernate注解框架整合 demo

    这个"springmvc+hibernate注解框架整合 demo"是一个示例项目,展示了如何通过注解方式将这两个框架无缝集成。 **Spring MVC 框架** Spring MVC 是 Spring 框架的一部分,它提供了处理HTTP请求、转发响应以及管理...

    hibernate注解详解说明

    Hibernate 是一个流行的对象关系映射(ORM)框架,它允许开发者使用 Java 对象来操作数据库。在 Hibernate 中,注解是一种简洁且强大的工具,用于替代传统...理解并灵活运用这些注解是成为 Hibernate 专家的关键步骤。

    struts2+spring+hibernate s2sh半注解结合方式框架搭建开发

    - 设计模型:创建实体类,并使用Hibernate注解定义其与数据库的映射关系。 - 编写服务:创建Service层,利用Spring的注解注入DAO,实现业务逻辑。 - 控制器:创建Struts2的Action类,使用注解定义Action方法和返回...

    hibernate注解功能模拟

    【hibernate注解功能模拟】这一主题主要涵盖了三个核心概念:Hibernate、Annotation(注解)和Reflection(反射)。在Java编程中,这三个概念对于理解对象关系映射(ORM)框架,尤其是Hibernate的工作机制至关重要。...

    Hibernate注解.docx

    首先,Hibernate注解分为两类:类级注解和属性级注解。类级注解用于描述整个实体类与数据库表的关系,而属性级注解则关注于类的各个属性如何映射到表的字段。 1. 类级注解: - `@Entity`:标记在POJO类上,表明该...

    hibernate入门实例操作步骤

    假设我们有一个`User`实体类,包含`id`、`name`和`email`属性,我们需要为每个属性添加注解,如`@Id`、`@GeneratedValue`、`@Column`等,以便Hibernate知道如何与数据库表对应。 3. **配置Hibernate** 创建一个`...

    hibernate注解

    ### Hibernate注解详解 #### 一、概述 Hibernate 注解是一种使用 Java 注解来定义对象关系映射(ORM)配置的方式。这种方式简化了 Hibernate 的配置过程,并且避免了大量的 XML 配置文件。本文将深入探讨如何使用 ...

    Hibernate操作数据库的步骤

    Hibernate是一款强大的Java持久化框架,它简化了与关系型数据库如SQL Server的交互。通过将对象映射到数据库表,...总之,熟练掌握Hibernate的操作步骤和特性,对于提高Java开发中的数据库操作效率有着重要作用。

    MyEclipse中生成hibernate反向工程步骤

    在MyEclipse中进行Hibernate反向工程的步骤主要涉及创建数据库连接、添加Hibernate支持、替换JAR包、打开数据库连接以及选择表进行反向工程。...理解并熟练掌握这些步骤对于进行基于Hibernate的Java Web开发至关重要。

    Spring+Hibernate+Strust 整合开发步骤

    以下是对Spring、Hibernate、Struts整合开发步骤的详细解释: 1. **创建J2EE Web工程** 在MyEclipse 5.0 GA环境下,首先我们需要创建一个新的J2EE Web工程,这是所有后续操作的基础。 2. **配置数据源** 数据源...

    hibernate数据库相关操作步骤

    通过使用Hibernate,开发人员可以避免直接编写SQL语句,而是通过面向对象的方式来管理和操作数据。本文将详细介绍使用Hibernate进行数据库操作的步骤。 1. **配置Hibernate** - 创建`hibernate.cfg.xml`配置文件:...

    SpringMVC、spring、hibernate简单整合实例(注解开发,附开发流程)

    这个“SpringMVC、spring、hibernate简单整合实例”通过注解开发的方式,旨在帮助初学者理解这三个框架如何协同工作。 SpringMVC是Spring框架的一个模块,主要负责Web应用的Model-View-Controller(MVC)架构。它的...

    myeclipse中hibernate反转详细步骤

    在MyEclipse中进行Hibernate反转工程是开发Java Web应用程序时常用的一种快速生成实体类和映射文件的方法。这个过程能够帮助开发者节省手动编写这些文件的时间,使得开发更加高效。以下是一个详细的步骤指南: 1. *...

    hibernate应用开发完全手册(源码)

    在学习Hibernate的过程中,源码分析是提高技术水平的关键步骤。通过阅读源码,我们可以了解到Hibernate如何将Java对象与数据库表进行映射,如何执行SQL语句,以及事务管理、缓存机制、查询优化等核心功能的实现原理...

    基于注解的关联关系Hibernate

    通过阅读博客文章,你可以看到具体示例和详细的配置步骤,这将有助于加深对Hibernate注解关联的理解。同时,实践操作可以帮助巩固理论知识,确保你能灵活地应用于实际项目中。 总之,掌握Hibernate的注解关联配置是...

    Hibernate中注解的使用

    首先,我们来看一下Hibernate注解的基本概念。自从JDK 1.5引入注解机制后,Hibernate也开始支持使用注解来替代传统的XML配置文件。通过在实体类上添加特定的注解,我们可以告诉Hibernate如何将Java对象映射到数据库...

    最新Struts2.1+Spring2.5+Hibernate3.3整合开发

    Struts2.1、Spring2.5和Hibernate3.3是Java Web开发中经典的三大框架,它们的整合应用是企业级应用开发中的常见实践。这三个框架的集成为开发者提供了强大的功能,包括模型-视图-控制器(MVC)架构、依赖注入(DI)...

    5 hibernate开发步骤及案例代码.rar_J2EE_into2me

    【标题】"5 Hibernate 开发步骤及案例代码" 提供了一个关于使用Hibernate进行J2EE开发的实践教程,特别适合初学者。Hibernate是Java平台上一个流行的开源对象关系映射(ORM)框架,它极大地简化了数据库操作,使得...

    黑马程序员_hibernate框架开发2016版讲义和笔记资料_day02

    3. 实体类与表映射:理解Hibernate的注解或XML方式来定义对象与数据库表之间的映射关系,例如@Entity、@Table、@Column等注解的使用。 4. SessionFactory与Session:掌握SessionFactory的创建,它是整个应用程序的...

    hibernate3.5.6开发包

    初始化Hibernate会话工厂(SessionFactory)是应用程序启动时的关键步骤。 4. **实体类与映射文件**:实体类代表数据库中的表,通过注解或XML映射文件与数据库表建立关联。例如,@Entity注解标识一个Java类为实体,...

Global site tag (gtag.js) - Google Analytics